Calcolo per realizzare sottodivisioni ritmiche

gerrix
Ciao a tutti, questo è il mio primo post, sono un musicista, vorrei riuscire a fare un calcolo particolare per realizzare un metronomo con varie suddivisioni ritmiche e spero in un Vostro aiuto.

Il metronomo funziona per battiti al minuto, quindi se la velocità è impostata a a 90, significa che si avranno 90 battiti regolari esatti nel tempo trascorso di un minuto esatto. Ottenere questo è semplice ma la difficoltà ce l'ho nel calcolare le suddivisioni e sottodivisioni, a velocità differenti da 60 battiti x minuto
Infatti alla velocità di 60 ottengo le varie suddivisioni( 2,3,4,8,12.... fino a 96) cosi:

((esempio, suddivisione di 96 battiti regolari per ogni secondo))

1000/96 mi riporta 10,416
Quindi per realizzare 96 battiti regolari in un millisecondo, alla velocità di 60 battiti x minuto ognuno durerà 10,416 millisecondi il che significa che in un minuto verranno realizzati 5760 battiti in totale.

Problema:
Come faccio ad ottenere, per esempio, quanto durerà ogni battito delle sottodivisone di 96 alla velocità di 80?

Grazie anticipatamente, spero di essere stato chiaro.
Gerardo

Risposte
gerrix
nessuno riesce ad aiutarmi :roll:

gerrix
Ciao gygabyte017,
sei stato cosi gentile e bravissimo ad aiutarmi nel calcolo che ti vorrei chiedere se mi aiuti ad ampliare ancora più nel dettaglio la questione. Ti premetto che sto realizzando un software musicale e fondamentalmente sono un musicista e quindi scusa se ti presento la domanda come un asino :oops: in matematica.

Premessa: Che cosa indica la parola SMPTE in sintesi?
E' un orologio che è nato per sincronizzare audio e video, anche se, si puo usare anche per sincronizzare altri eventi, tipo dati midi con registratori analogici etc etc.

Come funziona
Come ho detto nella premessa è una sorta di orologio dove i millesecondi si possono dividere in frames e il punto di start lo si puo impostare a qualsiasi ora in questo formato
01:00:00:000
In sostanza se imposto l'orologio alle ore 01 precise e imposto la variabile a 25 frames al secondo, ogni secondo ci saranno 25 frames divisi nello spazio tempo di un secondo, quindi in teoria dovrei sapere con un calcolo ad ogni frames che ora sono.
Fin qui forse :oops: ci so arrivare ma la questione si fa più complessa se la devo relazionare anche alla velocità del metronomo. In sostanza la domanda è:
come faccio a sapere che ora sono ad ogni tick o sottodivisione di click quando la velocità del metronomo per esempio è regolata a 130 e il valore dell SMPTE a 25 frame al secondo? oppure quando sono al 3 movimento della misura 4 ed alla velocità di 120?
Non so se sono stato chiaro ma ti posto un piccolo spezzone video che ho creato appositamente per farti meglio capire e mostra come un programma famoso per l'editing di audio e midi ottiene i valori semplicemente modificando o la velocità del metronomo o impostando manualmente l'andamento del metronomo etc etc. Il valore SMPTE cambia ad ogni cambio di questi valori.
Grazie davvero mille per l'aiuto, ti posto il video
Gerrix
ecco il link

gerrix
:D GRAZIE!!!!!!!
ora si.... va benissimo, è proprio quello che mi serviva.

Gerardo

gygabyte017
"gerrix":
:( purtroppo ancora non riesco ad ottenere esattamente quello che vorrei, sono io, probabilmente, che non riesco a spiegarmi bene, cerco di farlo in un altro modo:

ok ora forse ho capito meglio :)

Se ad una velocità di 60bpm per eseguire 96 sottobattiti regolari in un solo battito (dei 60) ci impiego circa un secondo(999,936 millisecondi---96 battiti regolari eseguiti ogni 10,416 millisecondi)

ma stai approssimando vero? nel senso, a 60bpm ogni battito dura 1000ms, quindi se lo dividi in 96 sottobattiti regolari necessariamente ogni sottobattito avrà una durata $x$ tale che $x \cdot 96 = 1000$ da cui $x = {1000}/{96} = 10.416666666666666666666666666\ldots$ millisecondi

se devo eseguire 96 sottobattiti regolari in un solo battito di un tempo di 55bmp ci metterò più di un millisecondo perché l'andamento sarà più lento o se desidero eseguire 96 sottobattiti regolari in un solo battito di un tempo di 92Bpm ci metterò molto di meno di un millisecondo perchè l'andamento è più veloce, quindi:
come faccio a calcolare ogni quanto devo eseguire i 96 sottobattiti per essere regolari in base alla velocità Bmp?

Ok dunque, se siamo a 55bpm, ogni battito dura ${60} / {55} = 1.090909$ secondi $= 1090.909$ millisecondi.
Quindi, se lo dividi in 96 sottobattiti regolari necessariamente ogni sottobattito avrà una durata $x$ tale che $x \cdot 96 = 1090.909$ da cui $x = {1090.909}/{96} = 11.363636363636\ldots$ millisecondi.

In generale quindi, impostando il metronomo a $a$ bmp, e volendo suddividere ogni battito in $k$ sottobattiti, allora: ogni battito dura ${60} / a$secondi = ${60} / a \cdot 1000$millisecondi; sottodividendolo in $k$ sottobattiti, ogni sottobattito durerà ${{60} / a \cdot 1000} / {k}$millisecondi $={60000}/{a \cdot k}$millisecondi.

Ad esempio, impostando il metronomo a $55$ bpm e volendo suddividere in $96$ sottobattiti, abbiamo $a=55$ e $k = 96$ da cui ogni sotto battito durerà ${60000}/{55 \cdot 96} = 11.36363636\ldots$ millisecondi.

Grazie veramente molto della tua disponibilità.
Gerardo

Di nulla, spero di aver capito ora :D

gerrix
:( purtroppo ancora non riesco ad ottenere esattamente quello che vorrei, sono io, probabilmente, che non riesco a spiegarmi bene, cerco di farlo in un altro modo:

Se ad una velocità di 60bpm per eseguire 96 sottobattiti regolari in un solo battito (dei 60) ci impiego circa un secondo(999,936 millisecondi---96 battiti regolari eseguiti ogni 10,416 millisecondi) se devo eseguire 96 sottobattiti regolari in un solo battito di un tempo di 55bmp ci metterò più di un millisecondo perché l'andamento sarà più lento o se desidero eseguire 96 sottobattiti regolari in un solo battito di un tempo di 92Bpm ci metterò molto di meno di un millisecondo perchè l'andamento è più veloce, quindi:
come faccio a calcolare ogni quanto devo eseguire i 96 sottobattiti per essere regolari in base alla velocità Bmp?

Grazie veramente molto della tua disponibilità.
Gerardo

gygabyte017
Ok forse allora ci siamo capiti :) con $h$ e $k$ intendo i parametri da sostituire nella frase "setto il metronomo su $k$ battiti ogni $h$ secondi".

Decidiamo $h$ e impostiamo quindi l'unità di misura del metronomo in modo che indichi i battiti per $h$ secondi (nel caso dei metronomi comuni $h=60$, infatti il metronomo indica i battiti per $60$ secondi, ovvero i battiti per minuto, ovvero i classici bpm).

Decidiamo poi $k$ e regoliamo il metronomo in modo che faccia $k$ battiti ogni $h$ secondi.

Allora ogni battito durerà: $h/k$ secondi. Infatti basta impostare la proporzione: $k \mbox{ battiti} : h \mbox{ secondi} = 1 \mbox{ battiti} : x \mbox{ secondi}$ da cui $x = h / k \mbox{ secondi}$.

Volendolo convertire in millisecondi, basta moltiplicare per mille.

Verifichiamolo nel tuo esempio: il tuo metronomo conta i battiti per secondo, quindi qui $h=1$; e lo imposti a $k=96$; quindi ogni battito dura $x = 1/ {96} = 0.010416 \mbox{ secondi} = 10.416 \mbox{ millisecondi}$ come viene a te.

Per fare un altro esempio, supponiamo che l'unità di misura del metronomo conta i battiti per 3 secondi, quindi $h=3$; e lo imposti a $k=136$; quindi ogni battito dura $x = 3/ {136} = 0.022058 \mbox{ secondi} = 22.058 \mbox{ millisecondi}$ volendolo scrivere in millisecondi.

Spero di essermi spiegato e di aver capito cosa cercavi!

Ciao :)

gerrix
"gygabyte017":
Ciao e benvenuto,

scusami ma non sono riuscito a seguire cosa vuoi fare! Dunque il metronomo segna il tempo in battiti per minuto, quindi chiaramente se imposto $k$ bpm, ogni battito dura $60 / k$ secondi, e fin qua è ovvio.

Quello che ho capito è che tu vuoi scrivere un metronomo che abbia unità di misura diversa dai bpm (variabile)?
Quindi i parametri sarebbero due: setto il metronomo su "k battiti ogni h secondi"?
Nel tuo esempio quindi avremmo $k = 96$ e $h = 1$?
Mentre nel caso classico se imposto un tempo veloce tipo 132, avrei $k = 132$ e $h = 60$?

Dimmi se sto capendo bene o no!

Ciao

Ciao e grazie della risposta :)

Si penso che hai capito ( anche se non sono certo di aver capito io cosa vuole dire $k = 96$ e $h = 1$? ... ti prego di perdonare la mia ignoranza) sono le sottodivisioni che vorrei riuscire ad ottenere con una formula matematica. In pratica, dovrei solo sapere cosa diventa quel 10,416 ottenuto dividendo 1000 con 96 se la velocità è diversa da 60 Bpm. E' facile, per me, ottenerlo se la velocità Bmp è = a 120. quel 10,416 diventerebbe 5,208, quindi i battiti avverrebbero ogni 5,208 millisecondi. Ma se, ad esempio, la velocità è 88 oppure 136 ogni quanti millisecondi dovrà verificarsi un battito?

gygabyte017
Ciao e benvenuto,

scusami ma non sono riuscito a seguire cosa vuoi fare! Dunque il metronomo segna il tempo in battiti per minuto, quindi chiaramente se imposto $k$ bpm, ogni battito dura $60 / k$ secondi, e fin qua è ovvio.

Quello che ho capito è che tu vuoi scrivere un metronomo che abbia unità di misura diversa dai bpm (variabile)?
Quindi i parametri sarebbero due: setto il metronomo su "k battiti ogni h secondi"?
Nel tuo esempio quindi avremmo $k = 96$ e $h = 1$?
Mentre nel caso classico se imposto un tempo veloce tipo 132, avrei $k = 132$ e $h = 60$?

Dimmi se sto capendo bene o no!

Ciao

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.