INHOUDSOPGAWE:
- Stap 1: Vereiste komponente
- Stap 2: Tegniese spesifikasies
- Stap 3: Kringdiagramme
- Stap 4: Nodige toepassings en IDE's
- Stap 5: Relevante kodes vir alles
- Stap 6: Stel dit op
- Stap 7: Resultate/video's
Video: Intydse klank na MIDI-omskakelaar: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Namaste mense! Dit is 'n projek waaraan ek gewerk het vir een van my kursusse (Real-Time Digital Signal Processing) in my baccalaureusprogram. Die projek is daarop gemik om 'n DSP -stelsel te maak wat klankdata 'luister' en MIDI -boodskappe van ooreenstemmende notas oor UART uitstuur. Arduino Nano is hiervoor gebruik. Kort verhaal, die mikrobeheerder doen 'n FFT oor inkomende klankdata en ontleed die pieke en stuur die gepaste MIDI-boodskap. Moenie bekommerd wees oor die MOSFET's nie, want dit is vir 'n ander projek (wat ook later op instruksies aangebring word) en word nie benodig vir hierdie projek nie. So laat ons nou al begin !!
Stap 1: Vereiste komponente
Ons benodig die volgende komponente om hierdie projek te bou, hoewel baie hiervan algemeen is en met hul ekwivalente vervang kan word. Verwys ook na die kringdiagram om uit te werk en te soek na beter implementerings.
Komponent Hoeveelheid
1. Electret -mikrofoon. 1
2. 30 Kilo Ohm weerstand. 1
3. 150 Kilo Ohm weerstand. 1
4. 100 ohm weerstand. 1
5. 2.2 Kilo Ohm weerstande. 3
6. 10 Kilo Ohm vooraf ingestelde pot. 1
7. 10 Kilo Ohm trimmerpot. 1
8. 47 Kilo Ohm stereo pot. 1
9. 470 Ohm weerstande. 2
10. 0.01uF kapasitors. 2
11. 2.2uF kapasitors. 3
12. 47uF kapasitors. 2
13. 1000uF kapasitor. 1
14. 470uF kapasitor. 1
15. 7805 spanningsreguleerder. 1
16. Vroulike en manlike kopstrook. 1 elk
17. Vat -aansluiting. 1
18. 12 V 1 Amp DC -adapter. 1
19. SPST -skakelaar. (Opsioneel) 1
20. Perfboard. 1
Stap 2: Tegniese spesifikasies
Bemonsteringsfrekwensie: 3840 monsters/sek
Aantal monsters per FFT: 256
Frekwensie -resolusie: 15Hz
Opfrissnelheid: ongeveer 15 Hz
Die onderste en hoër toonlere van die musieknote word nie korrek vasgelê nie. Laer note het 'n lae frekwensie -resolusie, terwyl hoër frekwensies onder lae bemonsteringssnelhede ly. Die arduino is reeds uit die geheue, so daar is geen manier om 'n beter resolusie te kry nie. En 'n beter resolusie kos 'n verlaagde verversingssnelheid, sodat afruil onvermydelik is. Leke weergawe van Heisenberg se onsekerheidsbeginsel.
Die primêre probleem is die eksponensiële spasiëring tussen note (Soos gesien in die figuur. Elke impuls op frekwensie -as is 'n musieknoot). Algoritmes soos LFT kan help, maar dit is 'n bietjie gevorderd en bietjie ingewikkeld vir 'n toestel soos arduino Nano.
Stap 3: Kringdiagramme
Let wel: Moenie die drie MOSFET's en die skroefaansluitings op die foto's pla nie. Hulle is nie nodig vir hierdie projek nie. Let op dat die invoerbord van die mikrofoon verwyderbaar is of soos hulle dit modulêr noem. 'N Klein beskrywing van die verskillende blokke word hieronder gegee.
1) Die twee resistors van 470 ohm kombineer die stereo -klanksein met die mono -klanksein. Maak seker dat die seingrond na virtuele grond gaan (vg in die stroombaan -diagram) en nie na die grond van die stroombaan nie.
2) Die volgende blok is 'n 2de-orde lae-pasfilter met 'n deurlopende sleutel, wat verantwoordelik is vir die bandbeperking van die insetsein om aliasing te voorkom. Aangesien ons met slegs +12V-voeding werk, span ons die op-amp in deur 'n RC-spanningsverdeler te maak. dit dwaas die op -amp om te dink dat die toevoer 6 0 -6 volt is (dubbele spoor), waar vg die grondverwysing vir die op amp is.
3) Dan word die uitset laagdoorlaat gefiltreer om 'n gelykverskyning van 6 volt te blokkeer, en tesame met 'n gelykstroom van ongeveer 0,55 volt, omdat die ADC gekonfigureer sal word om die interne 1.1 v as Vref te gebruik.
Opmerking: die voorversterker vir die elektretmikrofoon is nie die beste stroombaan op die internet nie. 'N Kring met op-amp sou 'n beter keuse gewees het. Ons wil hê dat die frekwensierespons so plat as moontlik moet wees. Die stereopot van 47 kilo ohm word gebruik om die afsnyfrekwensie te definieer, wat gewoonlik die helfte van die bemonsteringsfrekwensie moet wees. Die vooraf ingestelde 10 kilo ohm (die klein pot met wit kop) word gebruik om die versterking en die Q -waarde van die filter af te stel. Die trimmerpot van 10 kilo ohm (een met 'n metaalknop wat soos 'n klein platkopskroef lyk) word gebruik om die spanning so na as die helfte van die Vref te stel.
Nota: as u die Nano aan P. C. hou die SPST -skakelaar oop, anders gesluit. Let veral daarop dat dit nie die kring/rekenaar/spanningsreguleerder of enige kombinasie van die bogenoemde kan benadeel nie
Stap 4: Nodige toepassings en IDE's
- Vir die kodering van die Arduino Nano het ek met die primitiewe AVR studio 5.1 gegaan, want dit lyk asof dit vir my werk. U kan die installeerder hier vind.
- Vir die programmering van die Arduino Nano het ek Xloader gebruik. Dit is baie maklik om 'n ligte instrument te gebruik om.hex -lêers na Arduinos te verbrand. U kan dit hier kry.
- Vir 'n klein bonus, 'n mini -projek en die afstelling van die stroombaan wat ek gebruik het. U kan dit hiervandaan kry, alhoewel daar groot veranderinge in elke hersiening is, sodat u miskien moet funksioneer met afgedankte funksies om die skets te laat werk.
- FL studio of enige ander MIDI -verwerkingsagteware. U kan die weergawe van FL studio met beperkte toegang gratis hier kry.
- Loop MIDI skep 'n virtuele MIDI -poort en word deur FL studio opgespoor asof dit 'n MIDI -toestel is. Kry hier 'n afskrif daarvan.
- Haarlose MIDI word gebruik om MIDI -boodskappe vanaf die COM -poort te lees en dit na die MIDI -poort te stuur. Dit ontfout ook MIDI-boodskappe intyds, wat ontfouting gemaklik maak. Kry Hairless MIDI hiervandaan.
Stap 5: Relevante kodes vir alles
Ek bedank Electronic Lifes MFG (webwerf hier !!) vir die vaste punt FFT -biblioteek wat ek in hierdie projek gebruik het. Die biblioteek is geoptimaliseer vir 'n mega -AVR -gesin. Dit is die skakel na biblioteeklêers en kodes wat hy gebruik het. Ek heg my kode hier onder aan. Dit bevat ook die verwerkingsskets en die AVR C -kode. Let asseblief daarop dat dit die konfigurasie is wat vir my gewerk het, en ek neem geen enkele verantwoordelikheid as u iets as gevolg van hierdie kodes beskadig nie. Ek het ook baie probleme ondervind om die kode te laat werk. Byvoorbeeld, DDRD (Data Direction Register) het DDDx (x = 0-7) as bitmaskers in plaas van die konvensionele DDRDx (x = 0-7). Let op hierdie foute tydens die opstel. Die verandering van die mikrobeheerder beïnvloed hierdie definisies, dus hou dit ook dop terwyl u kompilasiefoute hanteer. En as u wonder hoekom die projekmap DDT_Arduino_328p.rar heet, laat ons maar sê dat dit baie donker was in die aand toe ek begin en ek was lui genoeg om nie die ligte aan te skakel nie.: P
By die verwerkingskets het ek die verwerking 3.3.6 gebruik om hierdie skets te skryf. U moet die COM -poortnommer handmatig in die skets stel. U kan die opmerkings in die kode nagaan.
As iemand my kan help om die kodes na Arduino IDE en die nuutste verwerkingsweergawe oor te dra, sal ek bly wees en ek sal ook krediete gee aan die ontwikkelaars / bydraers.
Stap 6: Stel dit op
- Maak die kode oop en stel die kode saam met #define pcvisual ongekommenteer en #define midi_out kommentaar gelewer.
- Maak xloader oop en blaai na die gids met kode, blaai na die.hex -lêer en brand dit na nano deur die toepaslike bord en COM -poort te kies.
- Maak die verwerkingskets oop en voer dit uit met die toepaslike COM -poortindeks. As alles goed verloop, moet u 'n spektrum van die sein op pen A0 sien.
- Kry 'n skroewedraaier en draai die trimmerpot totdat die spektrum plat is (DC -komponent moet naby nul wees). Moet dan geen sein op die bord invoer nie. (Moenie die mikrofoonmodule aanheg nie).
- Gebruik nou 'n sweepgenerator-instrument soos hierdie om insette op die bord van die mikrofoon te lewer en die spektrum waar te neem.
- As u nie 'n sweep van frekwensies sien nie, verminder die afsnyfrekwensie deur die weerstand van 47 kilo ohm te verander. Verhoog ook die wins met die vooraf ingestelde pot van 10 kilo ohm. Probeer 'n plat en prominente sweepuitset verkry deur hierdie parameters te verander. Dit is die prettige deel (die klein bonus!), Speel u gunsteling liedjies en geniet hul intydse spektrum. (Kyk die video)
- Stel nou hierdie keer die ingebedde C -kode saam met #define pcvisual commented en #define midi_out uncommented.
- Laai die nuwe saamgestelde kode op arduino Nano.
- Maak LoopMidi oop en skep 'n nuwe poort.
- Maak FL studio of ander MIDI -koppelvlakprogrammatuur oop en maak seker dat die midi -poort van die lus sigbaar is in die MIDI -poortinstellings.
- Oop haarlose MIDI met arduino verbind. Kies die uitvoerpoort om die LoopMidi -poort te wees. Gaan na instellings en stel die Baud -koers op 115200. Kies nou die COM -poort wat ooreenstem met Arduino Nano en maak die poort oop.
- Speel 'n paar "suiwer" klanke naby die mikrofoon, en u moet ook die ooreenstemmende noot in die MIDI -sagteware hoor. As daar geen reaksie is nie, probeer om die op_drempel wat in die C -kode gedefinieer word, te verlaag. As die notas lukraak geaktiveer word, verhoog die up_threshold.
- Kry jou klavier en toets hoe vinnig jou stelsel is !! Die beste ding is dat dit in die goue slot-sone van note maklik verskeie gelyktydige druk op die toets maklik kan opspoor.
Opmerking: as een toepassing toegang tot die COM -poort het, kan dit nie deur 'n ander gelees word nie. As Hairless MIDI byvoorbeeld die COM -poort lees, kan Xloader nie die bord flits nie
Stap 7: Resultate/video's
Dis nou eers ouens! Hoop jy hou daarvan. As u voorstelle of verbeterings in die projek het, laat weet my in die kommentaarafdeling. Vrede!
Aanbeveel:
N Intydse watervlakmeter: 6 stappe (met foto's)
N Waterwatermeter in reële tyd: hierdie instruksies beskryf hoe u 'n goedkoop watertemperatuurmeter in real-time kan bou vir gebruik in gegrawe putte. Die watervlakmeter is ontwerp om in 'n gegrawe put te hang, een keer per dag die watervlak te meet en die data via WiFi of mobiele verbinding te stuur
N Intydse watertemperatuur, geleidings- en watervlakmeter: 6 stappe (met foto's)
N Real-time putwatertemperatuur, geleidings- en watervlakmeter: Hierdie instruksies beskryf hoe u 'n goedkoop watermeter in real-time kan bou vir die monitering van temperatuur, elektriese geleidingsvermoë (EC) en watervlakke in gegrawe putte. Die meter is ontwerp om in 'n gegrawe put te hang, die watertemperatuur te meet, EC en
Live Covid19 Tracker met ESP8266 en OLED - Intydse Covid19 -dashboard: 4 stappe
Live Covid19 Tracker met ESP8266 en OLED | Intydse Covid19 -dashboard: Besoek Techtronic Harsh -webwerf: http: //techtronicharsh.com Oral is daar 'n groot uitbraak van die nuwe Corona -virus (COVID19). Dit het nodig geword om die huidige scenario van COVID-19 in die wêreld dop te hou, en dit was dus die tuiste
Switch-it, outomatiese uitlaat met intydse stroommeting: 6 stappe
Skakel, outomatiese uitlaat met intydse meting: ek hou baie van outomatisering, die vermoë om te beheer wanneer iets moet gebeur. Dit is wat my laat dink het aan hierdie idee: 'n selfgemaakte outomatiese uitlaat. Dit kan gebruik word om te beplan wanneer ligte aangeskakel moet word, wanneer telefone opgelaai moet word of
SCARA -robot: leer oor Foward en omgekeerde kinematika !!! (Plot Twist Leer hoe om 'n intydse koppelvlak in ARDUINO te maak met behulp van verwerking !!!!): 5 stappe (met foto's)
SCARA -robot: leer oor Foward en omgekeerde kinematika !!! (Plot Twist Leer hoe om 'n intydse koppelvlak in ARDUINO te maak met behulp van verwerking !!!!): 'n SCARA -robot is 'n baie gewilde masjien in die nywerheidswêreld. Die naam staan vir beide Selective Compliant Assembly Robot Arm of Selective Compliant Articulated Robot Arm. Dit is basies 'n robot van drie grade, wat die eerste twee