Metronomo, amplificatore per cuffie ed altro

Ciao a Tutti,
sono francesco di Roma. Ho acquistato da poco un kit con arduino perché ho intenzione di realizzare diversi progetti, alcuni utili, altri per puro divertimento.
Suono la batteria e quindi volevo costruire un metronomo con funzionalità avanzate (poliritmi, suddivisioni sopra metriche differenti, ecc).

Ho tante cose da chiedere e spero che questa sia la sede opportuna.
La prima concerne la precisione del dispositivo. Ovvero posso costruire un metronomo che sia sufficientemente preciso?

  1. Intendo fare cose un po' articolate ed ho paura di creare delle latenze (anche minime) che potrebbero avere un impatto sulla precisione dello strumento. Qualcuno potrebbe segnalarmi riferimenti a queste tematiche? Se il linguaggio di programmazione inserisce eccessivi overhead, come posso programmare a più basso livello?
  2. Associato a questo progetto vorrei che il metronomo produca diversi suoni da un buzzer. Questo tipo di output è utile per studiare a casa su un pad che fa poco rumore. A volte è necessario o mettersi le cuffie oppure far uscire l'audio su un impianto di amplificazione. Esistono shield che possono fare questo o me la devo costruire? Se me la devo costruire potete segnalarmi risorse?
    Mi piacerebbe che il segnale che va al buzzer sia lo stesso che va alle cuffie/auricolari oppure su un ingresso di un mixer (che immagino abbia un'impedenza diversa da un paio di cuffie o auricolari) e che l'inserimento del jack escluda il buzzer.
  3. Esistono versioni di arduino con display lcd, tastiera, buzzer e uscita audio tutto integrato? Alternativamente siete a conoscenza di progetti del genere, anche su altre piattaforme per realizzare cose come un metronomo o un particolare dispositivo customizzato? Per intenderci un telefonino, ma senza la circuiteria per fare telefonate.

Chiedo scusa per il lungo post e auguro a tutti una buona giornata.
francesco

  1. le latenze nel linguaggio dipendono da come programmi, ma in generale anche le istruzioni più lente si misurano in microsecondi.
    Per capirci: riflessi umani circa 20millisecondi (1secondo = 1000ms), le istruzoni più lente in arduino (analogRead) impiega 200 microsecondi, le istruzioni più basiche nell'ordine dei nanosecondi (un miliardesimo di secondo)..
    se anche ci fossero grandi latenze, poi puoi giocartela in modo che siano fisse, quindi introduci un ritardo, non una deformazione del tempo. Diciamo che arduino può tranquillamente sostituire il metronomo, i suoi timer interni sbagliano di qualche minuto al giorno, un errore assai insignificante per i tuoi scopi.
    Quindi la vera domanda è: tu di quanta precisione hai bisogno?

  2. la libreria TONE e un buzzer da pc sembrano fare al caso tuo.

  3. quello che vuoi fare con buzzer e libreria tone è un esempio classico che trovi in mille salse, e proprio per la sua semplicità non lo trovi "precotto". Le shield si usano quando vuoi creare un lettore MP3.. Inizia a far suonare il buzzer, poi introdurre i tuoi ritmi, ed infine bottoni e lcd.

frankielabs:
3) Esistono versioni di arduino con display lcd, tastiera, buzzer e uscita audio tutto integrato?

  1. cioè un PC ? :grin:
    Come detto da @lesto, con Arduino puoi fare la parte del buzzer, poi collegare quei componenti successivamente, ma non trovi qualcosa di già montato.
    Non è un PC o un minipc. In alternativa, secondo me, potresti informarti su Raspberry Pi.

lesto:

  1. le latenze nel linguaggio dipendono da come programmi, ma in generale anche le istruzioni più lente si misurano in microsecondi.
    Per capirci: riflessi umani circa 20millisecondi (1secondo = 1000ms), le istruzoni più lente in arduino (analogRead) impiega 200 microsecondi, le istruzioni più basiche nell'ordine dei nanosecondi (un miliardesimo di secondo)..
    se anche ci fossero grandi latenze, poi puoi giocartela in modo che siano fisse, quindi introduci un ritardo, non una deformazione del tempo. Diciamo che arduino può tranquillamente sostituire il metronomo, i suoi timer interni sbagliano di qualche minuto al giorno, un errore assai insignificante per i tuoi scopi.
    Quindi la vera domanda è: tu di quanta precisione hai bisogno?

  2. la libreria TONE e un buzzer da pc sembrano fare al caso tuo.

  3. quello che vuoi fare con buzzer e libreria tone è un esempio classico che trovi in mille salse, e proprio per la sua semplicità non lo trovi "precotto". Le shield si usano quando vuoi creare un lettore MP3.. Inizia a far suonare il buzzer, poi introdurre i tuoi ritmi, ed infine bottoni e lcd.

Grazie mille per la tua risposta.

Rispetto alla precisione, tipicamente i metronomi variano la frequenza da 30 a 250-300 battiti per minuto.
Questa è la funzione più elementare perché scandiscono i quarti che è la principale suddivisione.
A volte si suddivide ulteriormente ciascun quarto in 2,3,4,5,6,7 (ci si può spingere anche oltre ma è molto raro).
Supponiamo di fermarci a 7 abbiamo 300*7=2100 bpm (che è una frequenza continua più che un insieme di colpi distinguibili).

Questo discorso vale quando i colpi sono regolari. Ci sono situazioni nelle quali i colpi non sono equidistanti, come ad esempio per i ritmi latini o per ritmi che uno può costruirsi autonomamente. Quindi se un ritardo è distribuito su tutti e sono equidistanti non ci dovrebbero essere problemi perché al limite si aumenta la velocità. Se viceversa ho battiti non omogenei potrei introdurre ritardi prima di un battito ma non per una pausa deformando leggermente il ritmo stesso. Da quello che mi hai fatto capire mi sembra che la cosa sia abbastanza trascurabile. Una cosa che mi viene in mente ora è riprodurre comunque delle sequenze omogenee inserendo dei suoni inudibili.

Per la 2 non credo di avere grossi problemi: già ho trovato e letto parecchie cose.
La cosa che non sono riuscito a trovare (molto probabilmente perché la cerco in modo sbagliato) è come inviare il segnale del buzzer ad un amplificatore che:

  1. sia adatto a cuffie e line out
  2. disinserisca il buzzer quando si inserisce il jack
  3. abbia un volume regolabile
  4. consumi poco (perché verosimilmente il metronomo dovrà funzionare a batterie, deve essere compatto e portatile)

Grazie infinite per i tuoi consigli e buona giornata :slight_smile:

nid69ita:

frankielabs:
3) Esistono versioni di arduino con display lcd, tastiera, buzzer e uscita audio tutto integrato?

  1. cioè un PC ? :grin:
    Come detto da @lesto, con Arduino puoi fare la parte del buzzer, poi collegare quei componenti successivamente, ma non trovi qualcosa di già montato.
    Non è un PC o un minipc. In alternativa, secondo me, potresti informarti su Raspberry Pi.

Più che un pc mi servirebbe una sorta di telefonino o smartphone ma che sia programmabile e anche già inscatolato :-). Forse un vecchio telefonino con java potrebbe fare al caso mio...
In questo modo potrei smarcarmi le questioni relative a display, cuffie ecc.
Facendo così però, toglierei tutto il gusto di mettere le mani su "frattaglie elettroniche" che comunque è una cosa che voglio fare. :slight_smile:
Sai se esistono progetti di questo tipo per arduino?

Grazie mille per la risposta.
Buona giornata, f.