Sostieni il forum con una donazione! Il tuo contributo ci aiuterà a rimanere online!
Immagine

progetto accordatore con pic

Tutto ciò che riguarda l'elettronica digitale, dalla porta not al protocollo midi... e oltre!
robizz
Diyer Eroe
Diyer Eroe
Messaggi: 582
Iscritto il: 24/03/2008, 10:41
Contatta:

progetto accordatore con pic

Messaggio da robizz » 15/04/2010, 20:08

vi lascio questa chicca che ho trovato su diystompboxes.com in caso a qualcuno interessi  :salu:
http://www.diystompboxes.com/smfforum/i ... ic=80673.0
enjoy!
[align=center][url=http://garageeffects.altervista.org][img]http://garageeffects.altervista.org/_altervista_ht/pics/banner.png[/img][/url][/align]

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:progetto accordatore con pic

Messaggio da davidefender » 16/04/2010, 8:33

hai fatto una segnalazione interessantissima!  :yrock:
da tempo volevo, finiti i miei 15 progetti aperti, concentrarmi su un accordatore, grande!  :face_green:
(peccato che non vi sia il sorgente... però da una delle fonti che cita ci sono informazioni interessanti http://www.myplace.nu/avr/gtuner/index.htm )
La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)

robizz
Diyer Eroe
Diyer Eroe
Messaggi: 582
Iscritto il: 24/03/2008, 10:41
Contatta:

Re:progetto accordatore con pic

Messaggio da robizz » 16/04/2010, 23:04

guarda qui  :face_green:

http://schickt.de/comments.php?y=08&m=0 ... 610-101437

EDIT: accidenti vero, c'è l'HEX ma non il sorgente.....

ma magari si può decompilare quanto meno in assembler? 
Ultima modifica di robizz il 16/04/2010, 23:07, modificato 1 volta in totale.
[align=center][url=http://garageeffects.altervista.org][img]http://garageeffects.altervista.org/_altervista_ht/pics/banner.png[/img][/url][/align]

Avatar utente
luix
Amministratore
Amministratore
Messaggi: 3422
Iscritto il: 06/05/2006, 14:26

Re:progetto accordatore con pic

Messaggio da luix » 17/04/2010, 15:10

Bellissimo!!!

vedo che il programma in C è semplice ma comunque non capisco bene, qualcuno può commentarlo in modo più approfondito?  :Gra_1:

(davide domani vado in fiera, se l'arduino ce l'hanno li bene, altrimenti lunedi lo prendo online :-) )
MEMENTO trimmer Humdinger :lol1:

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:progetto accordatore con pic

Messaggio da davidefender » 17/04/2010, 16:46

salve!

allora, per la decompilazione secondo me non conviene neppure!  :surpr: sarebbe molto meglio/interessante riproggettarlo, tanto il senso si capisce molto bene.

si possono distinguere due problemi:
- Uno di tipo hardware, ovvero determinare la frequenza della nota suonata
- Uno di tipo software, una volta che so la frequenza come faccio a riconoscere la nota?

Primo problema:
Si risolve molto elegantemente, un'ipotesi che già immaginavo fin dai primi momenti che pensai di fare un accordatore, ma che nel progetto postato da robizz prende forma in tutto il suo splendore  :face_green: Il circuito prima si occupa di "ripulire" un pò il segnale grazie al TL072 (e su questi primi stadi, Luix ne saprebbe dire mooolto più di me  :face_green:) l'ultimo è un LM393 che è un "comparatore" (non un opamp) con configurazione che se non sbaglio mi sembra ad isteresi. Questo squadra perfettamente il segnale. Risultato? un'onda quadra alla frequenza che state suonando entra in un PIN del uC al quale è connesso un interrupt; questo scatta sulla transizione da alto-basso (o viceversa, è uguale) ed ogni volta si segna l'ora di sistema. Dopo aver preso abbastanza campioni restituisce una media del tempo intercorso fra ogni interrupt... cos'é? è l'inverso della frequenza!  :duec: è il periodo dell'onda quadra, a questo punto troviamo

f = 1/p

Secondo problema:
sappiamo la frequenza del nostro segnale.. e questo è già davvero moltissimo, ma cosa ci facciamo? guardate qui:
http://ulisse.sissa.it/chiediAUlisse/do ... 40418d001/
con questa formula possiamo, scelto un punti di riferimento ad esempio LA3 a 440 trovare i semitoni di distanza, e dunque quale nota con estrema precisione stiamo suonando, basta invertire la formula:

2^(n/12) * frif = f

invertiamola e diventa

n= log2(f/frif) * 12

quindi trovata la f del segnale, fissata una frif sappiamo i semitoni che intercorrono fra la nota suonata e il LA 440.. insomma, non rimane che spiattellare questi risultati su un LCD!  :dance_1:

#Luix: ehehe ti sto portando nell'oscuro mondo di noi Arduinisti!  :ok_1: vedrai che una volta acquistato non ti saprai spiegare perchè non ci avessi cominciato a giocare prima! ....inutile dire che anche l'accordatore è un progetto tranquillamente alla portata dell'Arduino!
:fonz:
La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)

Avatar utente
botti1988
Diyer
Diyer
Messaggi: 129
Iscritto il: 05/10/2006, 16:21
Località: Petritoli (FM) - Bologna
Contatta:

Re:progetto accordatore con pic

Messaggio da botti1988 » 17/04/2010, 18:14

davidefender ha scritto: ! ....inutile dire che anche l'accordatore è un progetto tranquillamente alla portata dell'Arduino!
:fonz:
anche io sto pensando di fare un accordatore, visto che ho a casa inutilizzaato uno schermino lcd 128x32 volevo farci qualcosa di carino.

davide una domanda, ma che differenza c'è tra l'usare arduino oppure usare un atmel atmega8 ad esempio con i relativi componenti per assemblare un circuito? :beer:

Avatar utente
luix
Amministratore
Amministratore
Messaggi: 3422
Iscritto il: 06/05/2006, 14:26

Re:progetto accordatore con pic

Messaggio da luix » 17/04/2010, 21:27

Ma con i controllori si è in grado di calcolare un logaritmo?? spettacolo!

Comunque io mi riferivo a questo codice http://www.myplace.nu/avr/gtuner/gtuner.c non ho ben capito a cosa servono certi procedimenti (quello che fanno le istruzioni si)... se magari qualcuno mi da una spiegazione più approfondita....

Grazie!

Ah come display cosa conviene prendere? un seriale o un parallelo?
MEMENTO trimmer Humdinger :lol1:

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:progetto accordatore con pic

Messaggio da davidefender » 17/04/2010, 23:35

@botti1988: allora, c''è da dire che ovviamente il chip è lo stesso, dunque le "potenzialità" sono le stesse. Se fosse una vita che programmi Atmel, allora probabilmente non saresti interessato ad Arduino. Per fartela davvero davvero breve (per maggiori info vai su www.arduino.cc) Arduino è una board pe lo sviluppo con tre vantaggi:

- Si programma tramite USB: questo è possibile grazie ad un piccolo bootloader preinstallato nel uC (il cuore di Arduino) che permette di scrivere i programmi passati dal cavo USB

- Dispone di librerie di base avanzate: non ci saranno mai istruzion a bassissimo livello incomprensibile, ti sembrerà sempre di programmare su un PC piuttosto che su un uC, le funzionalità offerte sono tantissime tutte pronte e documentate alla perfezione

- C'è una grande comunità: moltissime persone utilizzano Arduino, e grazie a loro oggi ci sono librerie oramai stabili per controllare qualsiasi cosa si possa attaccare all'Arduino (per farti capire.. sai come scrivi ciao 'mondo' su un LCD? lcd.print("Ciao Mondo!"))

La cosa ovviamente migliore è che è tutto in PIU', cioè anche se compri Arduino nessuno ti vieta di programmare direttamente in assembler, c o c++ (io ad esempio il programma per il MIDI switcher l'ho sviluppato in c++ con le librerie di base di Arduino!) di eliminare o ripristinare il bootloader.
Ma controlla il sito per informazioni più dettagliate!

@Luix: eccome! potenze,esponenziali, logaritmi.. giusto il caffé ancora non lo sà fare!  :face_green:
cmq, ho dato un'occhiata al codice, cerco di spiegare a grandi linee l'intento del codice (nei particolari non scendo), forse sono cose che avrai già notato.. cmq:

Prima cosa, c'è un timer interno che ogni volta che scade aumenta di 1 il contatore "count_hi" a cosa serve? da quanto si evince dal codice se il timer scatta per 80 volte vuol dire che non c'è stato input per 80 cicli = si considera che non c'è segnale in ingresso (così spegne i led quando non si suona una nota). La prima for accumula (nel caso non scada il timer come detto) 32 campioni dell'input nella variabile count.
Nel caso di una serie valida questo valore viene diviso per 32 mediante lo shift di 5 (praticamente se ne fa la media) e poi si comincia a a fare dei controlli per verificare in che fascia si ricade (Transition_Count) così si identifica dove è la nota suonata (fra E e B? fra B e G? e così via...).
In ultimo si verifica se fosse mai la nota è intonata, e quindi se coincide più o meno con un valore "centered" (dico più o meno perchè si prende un piccolo margine per evitare che l'accordatore sia troppo sensibile e non ti dia mai la nota intonata, si crea difatti un comparatore ad isteresi proprio come è documentato sul codice)

.... praticamente fine dei giochi!  :face_green:
ora.. in effetti è un pò cervellotico, ma sopratutto perchè probabilmente con quel PIC non si possono definire interrupt esterni (per l'onda quadra, infatti se la legge con una sequenza di polling.. questo incasina parecchio l'idea). Credo che un'implementazione migliore, sfruttando a meglio le Potenzialità dell'Arduino vorrebbe almeno due oggetti software, uno che AUTONOMAMENTE (grazie ad interrupt trasparenti al ciclo di main) calcolasse CONTINUAMENTE la nota suonata (eventualmente con un valore speciale tipo "NO_NOTE" per dire che non c'è segnale in ingresso) e che un altro oggetto, diciamo il ciclo main ogni tot gli chiedesse "che nota suona?" con un metodo dedicato.. molto più pulito e ordinato e sopratutto.. comprensibile!  :arf2:

Edit: scusa mi ero dimenticato dell'LCD, io direi un parallelo.. costa meno!  :face_green: considera che è vero che ti prende 6 PIN, ma quello seriale poi ti impedisce di usare la trasmissione seriale perchè ci devi attaccare l'LCD e non ci puoi mettere altro!
Ultima modifica di davidefender il 17/04/2010, 23:37, modificato 1 volta in totale.
La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)

robizz
Diyer Eroe
Diyer Eroe
Messaggi: 582
Iscritto il: 24/03/2008, 10:41
Contatta:

Re:progetto accordatore con pic

Messaggio da robizz » 18/04/2010, 10:58

ma una cosa più "minimal" con un display 7 segmenti per questo accordatore non era meglio?  :face_green:

di solito a me non interessa molto sapere di quanto e calante la nota, magari se qualcuno si prende la briga di sistemare il codice potrebbe prendere in considerazione la cosa....

l'accordatore diventerebbe grosso come un mignolo  :face_green:
[align=center][url=http://garageeffects.altervista.org][img]http://garageeffects.altervista.org/_altervista_ht/pics/banner.png[/img][/url][/align]

Avatar utente
luix
Amministratore
Amministratore
Messaggi: 3422
Iscritto il: 06/05/2006, 14:26

Re:progetto accordatore con pic

Messaggio da luix » 18/04/2010, 21:56

OK per l'LCD va bene il parallelo  :arf2:

Per il codice ci ho capito poco.... studierò!

Per il circuito di ingresso dell'accordatore, è un passa basso "multiple feedback" limita il segnale della chitarra probabilmente al mi alto (non serve andare oltre)... poi c'è il comparatore che squadra l'onda!
MEMENTO trimmer Humdinger :lol1:

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:progetto accordatore con pic

Messaggio da davidefender » 19/04/2010, 0:37

luix ha scritto: Per il circuito di ingresso dell'accordatore, è un passa basso "multiple feedback" limita il segnale della chitarra probabilmente al mi alto (non serve andare oltre)...
lo sapevo che ne sapevi più di me! :D
in effetti anche io avevo pensato che si dovessero togliere tutte le armoniche in maniera da rendere il segnale "quasi" sinusoidale.. ma non converrebbe che si arrivasse almeno al Mi del 12 tasto? in questo modo si potrebbero controllare anche le armoniche della chitarra  :face_green:
In effetti toccherebbe provarlo...
:ciao:
La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)

Avatar utente
luix
Amministratore
Amministratore
Messaggi: 3422
Iscritto il: 06/05/2006, 14:26

Re:progetto accordatore con pic

Messaggio da luix » 19/04/2010, 21:38

Ad esempio questa "funzione" con la parentesi quadra che cosa è?

unsigned int Center_Count[] =
{
BASE_FREQUENCY/EH_STRING, // High E
BASE_FREQUENCY/B_STRING, // B
BASE_FREQUENCY/G_STRING, // G
BASE_FREQUENCY/D_STRING, // D
BASE_FREQUENCY/A_STRING, // A
BASE_FREQUENCY/E_STRING, // Low E
};

un array?

Dividendo la frequenza base del la 440 con la frequenza della corda cosa si ottiene?

PS non ti conviene accordare con gli armonici, potresti scoprire che la tua chitarra non è cosi precisa  :yes:
MEMENTO trimmer Humdinger :lol1:

Avatar utente
davidefender
Garzone di Roger Mayer
Garzone di Roger Mayer
Messaggi: 1437
Iscritto il: 11/02/2008, 23:51
Località: Roma
Contatta:

Re:progetto accordatore con pic

Messaggio da davidefender » 20/04/2010, 0:30

quello, come hai detto correttamente, è un array. Quei valori, secondo qualche formula matematica che però non so (on so su che "base teorica" si è fondato), sono i valori esatti che deve avere il valore letto per dire: "è un MI!" o "è un LA!"

Sono semplicemente i valori per confronto...
luix ha scritto: PS non ti conviene accordare con gli armonici, potresti scoprire che la tua chitarra non è cosi precisa  :yes:
si è vero.. ma potresti usare l'accordatore per aggiustare le sellette per l'8ttava!  :face_green:
La teoria è quando si sa tutto ma non funziona niente. La pratica è quando funziona tutto ma non si sa il perché. In ogni caso si finisce sempre con il coniugare la teoria con la pratica: non funziona niente e non si sa il perché.
(Albert Einstein)

Avatar utente
luix
Amministratore
Amministratore
Messaggi: 3422
Iscritto il: 06/05/2006, 14:26

Re:progetto accordatore con pic

Messaggio da luix » 20/04/2010, 10:02

Ah ecco! quindi dividendo la frequenza effettiva per il LA 440 dovresti ottenere il numero di conteggi che il pic deve rilevare per dire la nota!
MEMENTO trimmer Humdinger :lol1:

robizz
Diyer Eroe
Diyer Eroe
Messaggi: 582
Iscritto il: 24/03/2008, 10:41
Contatta:

Re:progetto accordatore con pic

Messaggio da robizz » 20/04/2010, 10:29

butto lì un input nel caso a qualcuno interessi:

a costo zero si rimediano i display dei nokia tipo 3310 e fratelli che sono ottimi per questo tipo di applicazione, googlando trovate un infinità di tutorial e codice per gestirlo!

ovviamente va risistemato il software!

un'altra cosa, potete postare il link diretto al sorgente che io non l'ho trovato?

thanks!  :salu:
[align=center][url=http://garageeffects.altervista.org][img]http://garageeffects.altervista.org/_altervista_ht/pics/banner.png[/img][/url][/align]

Rispondi