Vizitator Omu_neted Postat Octombrie 6, 2009 Partajează Postat Octombrie 6, 2009 Salut,sunt un incepator,evident din moment ce postez in aceasta sectiune.Doresc sa incep un mic proiect, si anume. Vreau sa folosesc un Arduino Mega pentru a simula sunetul scos de un instrument cu clape.Arduino Mega are din specificatii 54 de I/O pin-uri digitale + 16 pin-ul analogice. Eu m-am gandit in principiu sa pun 5 octave la tastatura mea, cea ce inseamna un total de 61 de clape.PRIMA INTREBARE - este posibil sa ma folosesc mai eficient de cele 54 de pin-uri digitale pentru ca raportul clapa/pin sa fie in favoarea clapelor?In cea ce priveste partea mecanica eu mi-am imaginat-o in felul urmator, in momentul apasarii clapei aceasta inchide circuitul respectivului pin de care apartine.A DOUA INTREBARE - evident ca trebuie sa am un capat pozitiv si unul negativ pentru a face acest circuit a clapei. Cum se conecteaza acestea? Ambele la pin, sau unul la pin iar celalalt la baterie?Sunetul vreau sa il realizez printr-un modul bluetooth conectat la unul din pin-urile I/O, dar pentru acesta cred ca sunt mai multe tutoriale pe internet. Daca imi puteti sugera alte placi care ar fi mai compatibile pentru ce vreau eu sa obtin v-as fi foarte recunoscator.Va multumesc pentru ajutor,Omu Link spre comentariu
Mikrosha Postat Octombrie 6, 2009 Partajează Postat Octombrie 6, 2009 Salut, omule neted. Cred ca topicul ar fi fost mai bine plasat la sectiunea microcontrollere>Atmel. Dupa cum ti-ai dat seama, cea mai simpla metoda de legare consta in legarea unui pin comun al fiecarei clape la masa, si celalalt pin sa vina la microcontroller. Activeaza din registrii rezistentele interne de pull-up. IN cazul asta iti trebie 61 de pini de intrare, deci total ineficient. Alta metoda, ar fi pe linii si coloane. Numarul 61 este aproape de 64, iar 64=8*8. Deci folosind doar 8+8=16 linii, poti citi starea a 64 de taste cu o schema similara cu asta: Presupunem ca liniile le legi la iesiri si coloanele le legi la intrari. Pe cazul din imagine, pentru a citi starea tuturor tastelor se face pe rand. Una din iesirile corespunzatoare unei linii se face 1, si se citeste valoarea pe pinii de coloane. Astfel aflii care din tastele de pe linia respectiva este apasata. Apoi urmatoarea linie devine 1 si celelalte linii 0, se citeste din nou valoarea pe pinii de coloane, si se afla care din tastele de pe linia aceasta e apasata, si asa mai departe. O problema este daca se apasa simultan taste de pe mai multe randuri. Pentru a nu face scurtcircuit la iesire cand se intampla asta, pune in stanga, la fiecare linie, cate o dioda cu catodul indreptat spre dreapta. Deci pentru a aplica aceasta metoda ar trebui sa faci un program care permanent (eg. la declansarea unei intreruperi de catre un timer) sa citeasca coloanele, si apoi sa treaca pe randul urmator. Asta ar fi pe scurt rezolvarea, spune-mi daca n-ai inteles ceva si vrei lamuriri suplimentare. Link spre comentariu
Vizitator Omu_neted Postat Iunie 11, 2010 Partajează Postat Iunie 11, 2010 SalutMultumesc pentru raspuns o sa ma interesez de microcontroalerele Atmel. Inteleg ce vrei sa spui cu aranjarea pinurilor. Problema este urmatoarea. La majoritatea melodiilor cantate la pian/claviatura nu se canta nici vorba cu o singura clapa, ci cu seturi de clape care ideal trebuie apasate simultan. Cred ca oricat de dificila ar parea prima varianta cu 61 de clape ii cu mult mai simplu decat daca as masura sincronizarea apasarii clapelor. O idee, m-am gandit eu, ar fi sa folosesc cateva din pinurile analogice pe post de cele digitale. pur si simplu daca primesc vreun semnal =>fleosc => ruleaza sunetul.Multumesc anticipat,Omu neted Link spre comentariu
MifTy Postat Iunie 12, 2010 Partajează Postat Iunie 12, 2010 Salut Multumesc pentru raspuns o sa ma interesez de microcontroalerele Atmel. Inteleg ce vrei sa spui cu aranjarea pinurilor. Problema este urmatoarea. La majoritatea melodiilor cantate la pian/claviatura nu se canta nici vorba cu o singura clapa, ci cu seturi de clape care ideal trebuie apasate simultan. Cred ca oricat de dificila ar parea prima varianta cu 61 de clape ii cu mult mai simplu decat daca as masura sincronizarea apasarii clapelor. O idee, m-am gandit eu, ar fi sa folosesc cateva din pinurile analogice pe post de cele digitale. pur si simplu daca primesc vreun semnal =>fleosc => ruleaza sunetul. Multumesc anticipat, Omu neted greşit: muzica este o succesiune de sunete distincte, nu combinaţii ale mai multor sunete redate simultan de acelaşi instrument.cel puţin cât timp discutăm de instrumente analogice: pian, chitară, vioară, ţambal, tobă, trompetă, saxofon, etc... din momentul când intră în scenă sintetizatoarele de sunet, se schimbă calimera, dar sunetele generate nu mai intră prea mult în categoria celor cunoscute deja din analogic... dacă vrei doar să obţii un sunet pe cale electronică, asta se poate face bine-mersi şi fără arduino!!! caută date despre robert moog şi sintetizatorul lui, şi o să înţelegi care e ideea!!! Link spre comentariu
stefan_k Postat Iunie 12, 2010 Partajează Postat Iunie 12, 2010 greşit: muzica este o succesiune de sunete distincteMifTy, ma scuzi, nu sunt eu mare muzician, dar la pianu' (digital) la care am acces, cand apesi 1 clapa e un sunet, cand apesi 2-3-5 clape simultan sunt alte sunete (care nu se pot numi "succesiune de sunete distincte").La asta cred ca s-a referit Omu_neted: el are nevoie de detectarea apasarii simultane a oricaror clape, caz in care nu se mai preteaza matricea prezentata mai sus (ex: la apasarea lui SW1+SW2+SW6 nu se mai face distinctie daca e apasat sau nu SW5; asta asa ochiometric, poate gresesc). Eu sincer am dubii ca un atmega128 sau ce e in arduinoul ala se preteaza pentru asa ceva, dar s-ar putea sa ma insel. Sunt curios cu desfasurarea proiectului, poate autorul ne tine la curent.cel puţin cât timp discutăm de instrumente analogice: pian, chitară, vioară, ţambal, tobă, trompetă, saxofon, etc...Probabil vroiai sa zici ceva de genul "instrumente acusto-mecanice" sau cum s-or fi numind alea; si in cazul lor, 2-3 corzi cantate simultan vor avea cu totul alt efect decat cantate "intr-o succesiune distincta".Din cate vad, mai degraba sintetizatorul lui moog s-ar incadra in categoria "analogic". Link spre comentariu
Vizitator viorel26 Postat Iunie 12, 2010 Partajează Postat Iunie 12, 2010 Arduino Mega are 54 de porturi digitale si 16 porturi analogice (pe care le poti folosi fara nici o problema pe post de intrari digitale - am facut asta de mai multe ori), deci ai avea un total de 70 de intrari. S-ar putea sa ai suficiente, chiar si folosind Bluetooth.Da-mi un PM cu datele de contact, ne vedem la o cafea si facem cateva teste daca vrei.Viorel Link spre comentariu
Vizitator viorel26 Postat Iunie 13, 2010 Partajează Postat Iunie 13, 2010 M-am mai gandit un pic, si poti folosi un multiplexor / demultiplexor impreuna cu Arduino, asa cum este descris aici - http://www.arduino.cc/playground/Learning/4051 Link spre comentariu
MifTy Postat Iunie 13, 2010 Partajează Postat Iunie 13, 2010 greşit: muzica este o succesiune de sunete distincte MifTy, ma scuzi, nu sunt eu mare muzician, dar la pianu' (digital) la care am acces, cand apesi 1 clapa e un sunet, cand apesi 2-3-5 clape simultan sunt alte sunete (care nu se pot numi "succesiune de sunete distincte"). La asta cred ca s-a referit Omu_neted: el are nevoie de detectarea apasarii simultane a oricaror clape, caz in care nu se mai preteaza matricea prezentata mai sus (ex: la apasarea lui SW1+SW2+SW6 nu se mai face distinctie daca e apasat sau nu SW5; asta asa ochiometric, poate gresesc). Eu sincer am dubii ca un atmega128 sau ce e in arduinoul ala se preteaza pentru asa ceva, dar s-ar putea sa ma insel. Sunt curios cu desfasurarea proiectului, poate autorul ne tine la curent. cel puţin cât timp discutăm de instrumente analogice: pian, chitară, vioară, ţambal, tobă, trompetă, saxofon, etc... Probabil vroiai sa zici ceva de genul "instrumente acusto-mecanice" sau cum s-or fi numind alea; si in cazul lor, 2-3 corzi cantate simultan vor avea cu totul alt efect decat cantate "intr-o succesiune distincta". Din cate vad, mai degraba sintetizatorul lui moog s-ar incadra in categoria "analogic". bun, şi atunci de ce naiba toate partiturile indică o succesiune de note, nu 2-3-4 note cântate simultan, eh??? da, sintetizatorul lui moog este analogic... nu voiam decât să subliniez că dacă un "pian electronic" în sine îl interesează, n-are neapărat nevoie de arduino pentru asta. dar dacă vrea să se "joace" cu combinaţia pian+arduino... trăim într-o ţară presupus liberă, eh??? Link spre comentariu
stefan_k Postat Iunie 13, 2010 Partajează Postat Iunie 13, 2010 bun, şi atunci de ce naiba toate partiturile indică o succesiune de note, nu 2-3-4 note cântate simultan, eh???Te inseli. Sa luam la analizat http://en.wikipedia.org/wiki/File:Chopin_Prelude_7.png(ceva gasit la repezeala)Prima nota e Mi; urmeaza un Do#, un Re, dupa care Re+Sol+Si, combinatie care se repeta de 3 ori; daca te uiti mai departe, urmeaza multe alte combinatii de note care se canta simultan (sunt scrise una deasupra celeilalte, deci se canta in aceeasi masura). Subliniez, in aceeasi masura (in acelasi interval de timp) se canta 2-3 note sau chiar 5 note (ma refer la partitura data de exemplu).Ca sa mai complicam lucrurile, tot ce e sub "parantezele" acelea orizontale de deasupra, se canta "legat" - mai exact, nota urmatoare (sau combinatia urmatoare de note, in fine, corect zis "masura urmatoare") se canta oarecum inainte de ridicarea degetului de pe nota precedenta (exprimare oarecum aproximativa, pentru a sublinia faptul ca desi sunetele se succed, pentru fractiuni de secunda clapele sunt apasate simultan). Deci, cel putin doua situatii unde o matrice de taste nu se preteaza.Alte denumiri consacrate, ca oarecum se incurca: - pian acustic: pianul clasic, cu coarde (la fel, chitara acustica) - pian electronic: notele sunt produse de generatoare electronice clasice, "analogice", modelate sa imite pianul real, dar totusi avand trasaturi sonore proprii - pian digital: evident, intra in tehnologia digitala. in principiu sunetele sunt samplate dupa un pian "real" (fie acustic fie electronic); astfel pianul digital va canta o "inregistrare" a sunetelor unui pian deja existent (de obicei exista sample-uri dupa mai multe instrumente).later edit: in principiu produsele care intra in denumirea de "pian digital" au clapele "modelate" sa imite cat mai bine pianul clasic: greutatea clapelor, masurarea vitezei de apasare, a presiunii exercitate, etc - lucruri care cred ca sunt cam vise relativ la proiectul de fata - sintetizator (electronic, digital): deja numele zice tot, e vorba de o "sinteza" a sunetelor (mai complexa decat in cazul simplului pian electronic)Ce vrea domnul sa faca cu Arduino legat la clape nu mi-e clar, probabil un fel de sinteza digitala. Eu as sugera verificarea rezultatelor pe un numar restrans de clape (1-2 octave maxim); daca rezultatele chiar vor fi multumitoare, are sens continuarea la o scala mai mare. In felul acesta pentru inceput nu trebuie sa isi faca probleme relativ la numarul liniilor de intrare.Later edit: un parametru din foile de catalog pt pianurile digitale il reprezinta "polifonia" - adica exact capacitatea de a reda simultan un numar cat mai mare de note. Un pian digital decent (si chiar si cele care intra la categoria de "clape" fara pretentii de "pian") are o polifonie de minim 60 de note. Aici intra atat notele cantate simultan, cat si cele "in cascada" (notele se vor "pierde" pe masura ce sunt cantate note noi - evident cu pedala de sustain apasata). Link spre comentariu
stefan_k Postat Iulie 23, 2010 Partajează Postat Iulie 23, 2010 Totusi, se pare ca se pot face multe cu un Atmega. Tocmai am dat peste asa ceva: http://www.linusakesson.net/chipophone/index.php Pe mine unul m-a impresionat. Edit: a se remarca ca Atmega-ul nu e legat direct la tastatura, ci, citez: "The remaining wires were connected to a bunch of 74HC165 chips, 8-bit parallel input latches that can be daisy chained into a single serial line. Two sets of 44 keys, 13 pedals and a couple of switches made for a total of 120 input signals and a daisy chain of 15 chips. The daisy chain is controlled by an ATmega88 microcontroller, which is responsible for polling all the signals and running a debounce algorithm." Mai gasiti si alte informatii si idei interesante acolo. Link spre comentariu
one Postat Iulie 23, 2010 Partajează Postat Iulie 23, 2010 Dupa parerea mea, constructia mecanica a claviaturii va fi partea cea mai complicata, de aceea constructia unui sintetizator cu Arduino mi se pare un chin. De ce trebuie sa transmita prin Bluetooth?O alta problema pe care o vad este generarea sunetelor (frecventelor fundamentale). Pentru asta ar trebui ca fiecarei taste sa ii fie legata un generator sinusoidal. Sinteza digitala a sunetului probabil ar fi cea mai buna solutie. Oare cum vei face asta cu Arduino?Poate cel mai simplu este constructia unei interfete gen MIDI....Oricum si eu as porni tot de la o octava, caci apoi extensia pe cate taste vrei o poti face apasand o pedala de exemplu.Am vazut tastaturi cu preturi destul de accesibile (max150€), care sesizau si viteza de apasare a tastei.Mikrosha a spus ca trebuie mutat la Atmel pentru ca Arduino contine un microcontroller Atmel. Link spre comentariu
stefan_k Postat Iulie 23, 2010 Partajează Postat Iulie 23, 2010 Relativ la partea mecanica: da, e destul de greu de realizat asa ceva (sau cel putin e multa munca, dar daca e rabdare ... nu e imposibil). Omul din linkul dat de mine a refolosit o orga veche, existenta.Sinteza sunetului: e adevarat ca pianele digitale care se respecta au multe oscilatoare separate pentru a genera sunetele (pentru polifonie), de aceea am si zis eu ca am dubii ca se pot obtine rezultate bune cu un singur atmega. Totusi, omul din link a facut ceva, si nu putin. Are si film de demo. Nu e pian, e mai degraba sintetizator, dar pare destul de capabil (tinand cont de simplitatea lui).Initiatorul threadului (Omu_neted) punea problema interfatarii atmega-taste (datorita numarului mare de taste implicate, si necesitatii detectarii apasarilor simultane de taste). Cel din link a rezolvat problema in mod foarte elegant, prin convertorul paralel->serial. Sincer nu sunt sigur ca am inteles perfect cum functioneaza, dar cine e chiar interesat poate studia datasheetul lui 74165. Link spre comentariu
one Postat Iulie 27, 2010 Partajează Postat Iulie 27, 2010 Cred ca cea mai buna metoda ar fi ca si la tastatura PC-ului: generarea unui cod atunci cand tasta este apasata si a altuia cand tasta este eliberata. Astfel se pot apasa o multitudine de taste. Apoi, fiecarui cod sa ii fie asociata o functie care genereaza o secventa de valori (corespunzatoare esantionarii semnalului sinusoidal corespunzator tasei respective). Bineinteles ca ar mai trebui o functie care sa insumeze toate valorile, pentru a avea la iesire sunetul compus din frecventele fundamentale. (Asta fara sa mai vorbim de efecte gen tremolo, etc.).Nu sunt sigur ca Arduino este destul de rapid pentru generarea sunetelor, dar probabil pentru tastatura da. Oricum, in acest caz, raspunsul a fost dat: se leaga tastele in matrice. Link spre comentariu
unuldinei Postat August 22, 2014 Partajează Postat August 22, 2014 Mai , mai ... monofonie , polifonie... parearea mea ... de MIDI-ot ? Ai o claviatura de pian , armonica, clavecin... etc ? toate clapele vor fi multiplexate si vor genera mesaje MIDI ca asta e limbajul tuturor sculelor electronice din 1983 si pana acu'.....(mesaje pe serial la 31250 bauds , viteza de brontozaur dar am zis 1983 ). gen nota ON ar fi byte 1 = 0x90, byte 2 = 0x3C care inseamna nota Do octava 4 , byte 3 =0x7F sa zicem velocitate maxima dupa care eliberezi clapa , butonul si trimiti mesajul cu nota OFF 0x80... pentru inceput ... Ce avantaje ai ? pai poti "canta" cu orice modul profesional si ne... Consumati cu indarjire www.mid.org si www.ucapps.de cativa ani macar . Pentru altceva e de ajuns biblioteca <beep.h> din arduino ... https://gist.github.com/nickjamespdx/4736535 P.S. Am realizat o harpa laser cu 8 raze si un sampler cu SD Card monofonic pe un Atmega32 la 16MHz, e lent si cardul trebuie formatat special pentru asa ceva , dar pwm-ul se aude bine , are putere . Link spre comentariu
one Postat August 23, 2014 Partajează Postat August 23, 2014 Daca vrei sa construiesti tastatura mecanica, eu zic ca va fi un mare chin. Cu un singur contact nu vei avea masura vitezei de apasare deci iti va rezulta ceva asemanator cu jucariile care se vand impreuna cu cartile de povesti pentru copii. Multiplexarea contactelor este solutia, Arduino este suficient de rapid pentru asta daca il programezi in C si foarte probabil si in limbajul lui. Si poti genera MIDI pe care le poti transmite chiar prin portul USB catre computer. Insa generarea sunetului este o alta poveste. Nu vei reusi sa obtii nici macar sunetul unei jucarii de la Casio (SA-76). Cat priveste transmisia prin Bluetooth, cam trebuie sa vezi cum iti merge aceasta legatura (drivere, etc.) deoarece latenta PC-ului este un fenomen foarte neplacut. Cat despre tablete, nu mai vorbim (in special Android sunt foarte lente). Cel mai bine ar fi sa cumperi o tastatura MIDI, cum ar fi M-Audio61es sau una cu mai putine taste, un program pe computer si vei avea zeci de instrumente. Vei avea reactia la viteza de apasare si mai mult timp sa canti decat sa mesteresti la ceva care poate nici sa nu iasa. Cu putin noroc gasesti ceva bun pe la SH. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum