Autore Topic: Calcolo BPM di un file audio  (Letto 5625 volte)

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Calcolo BPM di un file audio
« il: 30 Gennaio 2011, 17:04:16 »
ciao a tutti. Secondo voi è possibile fare un programma che sia in grado di leggere un file mp3 oppure wav e ne calcoli il numero di BPM(battiti per minuto). Tecnicamente il calcolo avviene calcolando la distanza in tempo dal picco del battito e cioè dal valore più alto in decibel al valore più alto successivo e poi facendo una media delle varie distanze.
Matteo DoubleMM Mion

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Calcolo BPM di un file audio
« Risposta #1 il: 30 Gennaio 2011, 17:40:44 »
ciao a tutti. Secondo voi è possibile fare un programma che sia in grado di leggere un file mp3 oppure wav e ne calcoli il numero di BPM(battiti per minuto). Tecnicamente il calcolo avviene calcolando la distanza in tempo dal picco del battito e cioè dal valore più alto in decibel al valore più alto successivo e poi facendo una media delle varie distanze.

non so se con Gambas nativamente tu possa riuscire nell'impresa....forse dovrai ricorrere ad alcune librerie per il C ed importarle...

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #2 il: 30 Gennaio 2011, 18:05:34 »
sai dove posso trovare qualche informazione sull'importazione di librerie c in gambas?
Matteo DoubleMM Mion

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Calcolo BPM di un file audio
« Risposta #3 il: 30 Gennaio 2011, 18:11:30 »
sai dove posso trovare qualche informazione sull'importazione di librerie c in gambas?

http://www.gambas-it.org/wp/?p=193

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #4 il: 30 Novembre 2011, 17:03:44 »
La cosa più semplice, secondo me, sarebbe quella di creare un semplice programmino provvisto di un apposito tasto, sul quale l'utente - mentre ascolta il brano musicale - debba cliccare per un numero adeguato di volte (per esempio 24 volte). Il programmino, alla fine, farebbe il calcolo proporzionale del tempo metronomico posseduto dal brano in base al numero di clic effettuati in un certo tempo. Il rapporto dovrebbe essere: (numero_di_clic / sec) * 60 = bpm

 ...volendo invece lavorare sui dati della ''forma dell'onda'' per ricavare il tempo, probabilmente bisognerebbe richiamare le funzioni dei qualche libreria esterna capace di gestire i dati audio.
« Ultima modifica: 18 Febbraio 2014, 13:52:16 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #5 il: 30 Novembre 2011, 18:09:35 »
la seconda sarebbe la strada che vorrei percorrere ma non ho idea di come fare
Matteo DoubleMM Mion

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #6 il: 30 Novembre 2011, 22:50:38 »
la seconda sarebbe la strada che vorrei percorrere ma non ho idea di come fare
Io vedo un problema legato all'individuazione della suddivisione della misura, dalla quale ottenere poi il calcolo delle pulsazioni al minuto (i famosi bpm): quale strategia applicheresti per far riconoscere al programma di quanti "movimenti" è formata una misura (cioè come far riconoscere la suddivisione della misura) ? Si potrebbe indicarla "manualmente", magari... ma allora le capacità e funzionalità del programma si ridurrebbero, poiché in tal caso dovrebbe intervenire l'utente !  :-\ Se invece si volesse, in modo più complesso, far fare tale riconoscimento al programma, su quale base ? Sui picchi d'onda ? ...e se i picchi d'onda dei tempi forti del brano non sono poi così evidenti ? E se il brano addirittura enfatizza i tempi in levare ? Il programma come si comporterà ? E di più: ma non è che la definizione della suddivisione dei tempi è un fatto "interpretativo" molto umano, e quindi difficilmente individuabile con un algoritmo ?
A questo problema si connette anche un secondo: se il brano musicale comincia con una misura cosiddetta misura incompleta, come farla riconoscere ?
....insomma, la questione non la vedo semplice. Probabilmente non è impossibile, ma è complessa. Suppongo che la prima cosa è imparare la codifica di un file audio per capire come si possa ricavare da semplici byte un'onda sonora.  :rolleyes:
« Ultima modifica: 18 Febbraio 2014, 13:50:35 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #7 il: 30 Novembre 2011, 23:47:50 »
naturalmente ottenere i bpm esatti di un brano sarebbe difficile però per l'utilizzo che ci dovrei fare anche un risultato approsimativo bassterebbe. Ci sono molti programmi (audio editor) che già lo integrano, ma non trovo un programmino che semplicemente analizza un file mp3 o wav e ristituisce i bpm. Mi trovo spesso a mixare dei brani (non in real time ma per la creazione di un cd mixato) di musica dance, house ecc, quindi stiamo parlando di musica con la cassa ben distinta, sarebbe sufficiente leggere i picchi di cassa (a livello grafico i picchi più alti) e calcolare la distanza in tempo da picco a picco. Una volta trovati i bpm li aggiungerei alnome del file per catalogare i brani suddivisi per tempo ed avere già una prima idea dei brani simili per bpm da poter mixare assieme.
Matteo DoubleMM Mion

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #8 il: 30 Novembre 2011, 23:54:31 »
quindi stiamo parlando di musica con la cassa ben distinta, sarebbe sufficiente leggere i picchi di cassa (a livello grafico i picchi più alti) e calcolare la distanza in tempo da picco a picco. Una volta trovati i bpm li aggiungerei alnome del file per catalogare i brani suddivisi per tempo ed avere già una prima idea dei brani simili per bpm da poter mixare assieme.

...be'... guarda.... ci si può provare. Però è chiaro che bisogna scoprire come questi programmi (probabilmente scritti in C ) disegnano l'onda sonora da un mare di byte; e quindi capire come si fa... a capire quando c'è un picco.
Sei pronto (nell'animo) per uno studio del protocollo audio, per esempio dei file wav e poi degli algoritmi all'uopo creati presenti nei sorgenti di quei programmi ?  ;D
« Ultima modifica: 01 Dicembre 2011, 10:28:44 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #9 il: 01 Dicembre 2011, 18:07:34 »
per il momento il progetto è in standby perchè manca il tempo e quel poco che ho lo sto usando per studiare il c++ che cmq tornerà utile. Se ho un po di tempo che avanza darò un occhiata al protocollo wav per cercare di capire come viene memorizzata la forma d'onda
Matteo DoubleMM Mion

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #10 il: 01 Dicembre 2011, 18:54:28 »
Comunque, doublemm, io continuo a credere che lo sforzo che dovrai compiere sia eccessivamente superiore ai risultati pratici che intendi ottenere.
Infatti con un editor audio, capace di caricare più file audio e di farne vedere la forma d'onda in parallelo, potresti confrontare visivamente la corrispondenza metrica dei picchi tra i due brani. Oppure potresti usare, come ho già detto nel mio primo messaggio, un semplice programmino con il quale calcolare velocemente i bmp, simile a quello che mi permetto qui di segnalare:

http://www.gambas-it.org/smf/index.php?topic=1991.0
« Ultima modifica: 08 Dicembre 2012, 16:18:04 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #11 il: 01 Dicembre 2011, 21:14:50 »
si di questi programmi ne trovi a iosa. Per ora cmq il metoo migliore è quello di caricare tutti i brani su un programma di mixing e in automatico accanto al nome del file (nella libreria del prog) compare il numero di bpm. solo che i prog che conosco io girano sotto win. Ps: un altro metodo per calcolare i bpm da un audio editor  é quello di ricavare i millisecondi da picco a picco e dividere i ms di un minuto per il risultato misurato.
Matteo DoubleMM Mion

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #12 il: 01 Dicembre 2011, 23:43:51 »
Ad ogni modo non mi sento di scoraggiare la tua iniziativa.
Inoltre, lo studio approfondito di un argomento non può che far aumentare le conoscenze e le possibilità di chi le detiene, e - mi si consenta di avere uno sguardo, diciamo, comunitario e più ampio - dare più forza alla nostra Comunità di Gambas-it.  :)

Tienici informati. Sarebbe auspicabile se successivamente tu potessi scrivere qualcosa nella Wiki.
 :ciao:
« Ultima modifica: 08 Dicembre 2012, 16:21:07 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #13 il: 01 Dicembre 2011, 23:56:40 »
se riuscirò a trovare tempo per appronfodire il tema non mancherò di fare vostre tutto le informazioni che acquisirò le quali potranno  essere utili alla comunità
Matteo DoubleMM Mion

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Calcolo BPM di un file audio
« Risposta #14 il: 18 Gennaio 2015, 19:24:47 »
E' possibile anche utilizzare le risorse della libreria esterna "Libaubio".

Ne ho fatto un breve riassunto nella nostra WIKI:

http://www.gambas-it.org/wiki/index.php?title=Calcolare_i_beat_per_minuto_%28BpM%29_di_un_file_audio_con_le_funzioni_esterne_del_API_di_Libaubio
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »