Përmbajtje:

Konvertuesi audio në kohë reale në MIDI .: 7 hapa
Konvertuesi audio në kohë reale në MIDI .: 7 hapa

Video: Konvertuesi audio në kohë reale në MIDI .: 7 hapa

Video: Konvertuesi audio në kohë reale në MIDI .: 7 hapa
Video: Мухоморный 🍄Трип Фиксирую на камеру. Очутился между двух миров🌍 Реальным и Мухоморным🙏 2024, Nëntor
Anonim
Konvertues audio në kohë reale në MIDI
Konvertues audio në kohë reale në MIDI

Njerëz të Namaste! Ky është një projekt në të cilin kam punuar për një nga kurset e mia (Përpunimi i Sinjalit Dixhital në kohë reale) në programin tim bachelor. Projekti synon krijimin e një sistemi DSP që "dëgjon" të dhënat audio dhe nxjerr mesazhe MIDI të shënimeve përkatëse në UART. Për këtë qëllim u përdor Arduino Nano. Me pak fjalë mikrokontrolluesi bën një FFT në të dhënat audio në hyrje dhe bën disa analiza të majave dhe dërgon mesazhin e duhur MIDI. Mos u shqetësoni për MOSFET -et edhe pse sepse ato janë për ndonjë projekt tjetër (i cili do të vendoset më vonë gjithashtu në udhëzues) dhe nuk kërkohen për këtë projekt. Pra, le të fillojmë tashmë !!

Hapi 1: Përbërësit e kërkuar

Përbërësit e kërkuar
Përbërësit e kërkuar

Ne do të kemi nevojë për përbërësit e mëposhtëm për të ndërtuar këtë projekt edhe pse shumë prej tyre janë të përgjithshëm dhe mund të zëvendësohen me ekuivalentët e tyre. Gjithashtu referojuni diagramit të qarkut për të punuar dhe për të kërkuar zbatime më të mira.

Sasia e Komponentit

1. Mikrofon Electret. 1

2. Rezistencë 30 Kilo Ohm. 1

3. Rezistencë 150 Kilo Ohm. 1

4. Rezistencë 100 ohm. 1

5. 2.2 Rezistenca Kilo Ohm. 3

6. Tenxhere e paravendosur 10 Kilo Ohm. 1

7. Tenxhere për prerje 10 Kilo Ohm. 1

8. 47 Tenxhere stereo Kilo Ohm. 1

9. Rezistenca 470 Ohms. 2

10. Kondensatorët 0.01uF. 2

11. Kondensatorët 2.2uF. 3

12. Kondensatorët 47uF. 2

13. Kondensator 1000uF. 1

14. Kondensator 470uF. 1

15. Rregullatori i tensionit 7805. 1

16. Rrip kokësh për femra dhe meshkuj. 1 secila

17. Konektori i fuçisë. 1

18. Përshtatës DC 12 V 1 Amp. 1

19. Çelësi SPST. (Opsionale) 1

20. Pllakë perfe. 1

Hapi 2: Specifikimet Teknike

Specifikimet teknike
Specifikimet teknike

Frekuenca e marrjes së mostrave: 3840 mostra/sek

Numri i mostrave për FFT: 256

Rezolucioni i frekuencës: 15Hz

Shkalla e rifreskimit: Rreth 15 Hz

Shkallët më të ulëta dhe më të larta të notave muzikore nuk janë kapur saktë. Shënimet më të ulëta vuajnë nga rezolucioni i frekuencës së ulët ku frekuencat më të larta vuajnë nga normat e ulëta të marrjes së mostrave. Arduino është tashmë jashtë kujtesës, kështu që nuk ka asnjë mënyrë për të marrë një rezolucion më të mirë. Dhe zgjidhja më e mirë do të vijë me një kosto të reduktimit të shkallës së rifreskimit, kështu që kompromisi është i pashmangshëm. Versioni Layman i parimit të pasigurisë së Heisenberg.

Vështirësia kryesore është hapësira eksponenciale midis notave (Siç shihet në figurë. Çdo impuls në boshtin e frekuencës është një notë muzikore). Algoritmet si LFT mund të ndihmojnë, por kjo është pak e avancuar dhe pak e komplikuar për një pajisje si arduino Nano.

Hapi 3: Diagramet e Qarkut

Diagramet e qarkut
Diagramet e qarkut
Diagramet e qarkut
Diagramet e qarkut
Diagramet e qarkut
Diagramet e qarkut
Diagramet e Qarqeve
Diagramet e Qarqeve

Shënim: Mos u shqetësoni nga tre MOSFET dhe terminalet e vidhave në fotografi. Ato nuk janë të nevojshme për këtë projekt. Vini re se bordi i hyrjes së mikrofonit është i lëvizshëm ose siç e quajnë ata Modular. Një përshkrim i vogël i blloqeve të ndryshme është dhënë më poshtë.

1) Dy rezistencat 470 ohm kombinojnë sinjalin audio stereo me sinjalin mono audio. Sigurohuni që toka e sinjalit të hyjë në tokën virtuale (vg në diagramin e qarkut) dhe jo në tokën e qarkut.

2) Blloku tjetër është një filtër sallen-çelës i ulët i kalimit të dytë i cili është përgjegjës për brezin që kufizon sinjalin hyrës për të shmangur aliazimin. Meqenëse ne po punojmë me furnizim vetëm +12v ne anojmë op-amp duke bërë një ndarës të tensionit RC. që e gënjen op -amp -in duke menduar se furnizimi është 6 0 -6 volt furnizim (binar i dyfishtë) ku vg është referenca bazë për op amp.

3) Pastaj dalja filtrohet me kalim të ulët për të bllokuar kompensimin DC prej 6 volt dhe shoqërohet me DC prej rreth 0.55 volt sepse ADC do të konfigurohet të përdorë 1.1 v të brendshme si Vref.

Shënim: Para-përforcuesi për mikrofonin elektrik nuk është qarku më i mirë në internet. Një qark që përfshin op-amp do të kishte qenë një zgjedhje më e mirë. Ne dëshirojmë që përgjigja e frekuencës të jetë sa më e sheshtë. Tenxhere stereo 47 kilogramë përdoret për të përcaktuar frekuencën e ndërprerjes e cila duhet të jetë zakonisht gjysma e frekuencës së marrjes së mostrës. Paravendosja prej 10 kilogramësh (Tenxhere e vogël me kokë të bardhë) përdoret për të akorduar fitimin dhe vlerën Q të filtrit. Tenxhere për prerjen 10 kilogramë (një me një çelës akordimi metalik që duket si një vidë e vogël me kokë të sheshtë) përdoret për të vendosur tensionin të jetë aq afër sa gjysma e Vref.

Shënim: Kur jeni duke lidhur Nano me P. C. mbajeni çelësin SPST hapur të mbyllur. Kujdes i veçantë për këtë dështimi për ta bërë këtë mund të dëmtojë qarkun/kompjuterin/rregullatorin e tensionit ose ndonjë kombinim të sa më sipër

Hapi 4: Aplikimet dhe IDE -të e nevojshme

Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
Aplikimet dhe IDE -të e nevojshme
  1. Për kodimin e Arduino Nano shkova me studion primitive AVR 5.1 sepse duket se funksionon për mua. Këtu mund ta gjeni instaluesin.
  2. Për programimin e Arduino Nano kam përdorur Xloader. Reallyshtë me të vërtetë e lehtë të përdorësh mjet me peshë të lehtë për të djegur skedarë hex në Arduinos. Mund ta merrni këtu.
  3. Për pak bonus mini projekt dhe akordim të qarkut kam përdorur përpunim. Mund ta merrni nga këtu edhe pse bëni ndryshime të mëdha në çdo rishikim, kështu që mund t'ju duhet të përballeni me funksione të vjetruara për ta bërë skicën të funksionojë.
  4. FL studio ose ndonjë softuer tjetër përpunimi MIDI. Ju mund të merrni versionin FL studio me qasje të kufizuar falas nga këtu.
  5. MIDI loop krijon një port virtual MIDI dhe zbulohet nga FL studio sikur të ishte një pajisje MIDI. Merrni një kopje të së njëjtës nga këtu.
  6. MIDI pa flokë përdoret për të lexuar mesazhe MIDI nga porta COM dhe për ta dërguar atë në portin MIDI të lakut. Ai gjithashtu korrigjon mesazhet MIDI në kohë reale, gjë që e bën korrigjimin të përshtatshëm. Merrni MIDI pa flokë nga këtu.

Hapi 5: Kodet përkatëse për gjithçka

Unë do të doja të falënderoja Electronic Lifes MFG (Faqja e internetit këtu !!) për bibliotekën FFT me pika fikse që kam përdorur në këtë projekt. Biblioteka është e optimizuar për familjen mega AVR. Kjo është lidhja me skedarët dhe kodet e bibliotekës që ai përdori. Unë jam duke bashkangjitur kodin tim më poshtë. Ai përfshin skicën e përpunimit dhe kodin AVR C gjithashtu. Ju lutemi vini re se ky është konfigurimi që funksionoi për mua dhe unë nuk marr asnjë përgjegjësi çfarëdo qoftë nëse dëmtoni ndonjë gjë për shkak të këtyre kodeve. Gjithashtu, kam pasur shumë çështje duke u përpjekur për ta bërë kodin të funksionojë. Për shembull, DDRD (Regjistri i Drejtimit të të Dhënave) ka DDDx (x = 0-7) si maskë bit në vend të DDRDx konvencionale (x = 0-7). Kini kujdes për këto gabime gjatë përpilimit. Gjithashtu ndryshimi i mikrokontrolluesit ndikon në këto përkufizime, prandaj mbani një sy edhe në këtë, ndërsa merreni me gabimet e përpilimit. Dhe nëse po pyesni pse dosja e projektit quhet DDT_Arduino_328p.rar, mirë le të themi se ishte shumë errësirë në mbrëmje kur fillova dhe isha mjaft dembele për të mos ndezur dritat.: P

Duke ardhur në skicën e përpunimit, kam përdorur përpunimin 3.3.6 për të shkruar këtë skicë. Ju do të duhet të vendosni numrin e portës COM në skicë me dorë. Ju mund t'i kontrolloni komentet në kod.

Nëse dikush mund të më ndihmojë të transferoj kodet në Arduino IDE dhe versionin e fundit të përpunimit, do të isha i lumtur dhe do t'u jap kredite edhe zhvilluesve / kontribuesve.

Hapi 6: Vendosja e tij

  1. Hapni kodin dhe përpiloni kodin me #përcaktoni pcvisual pak komentuar dhe #përcaktoni mesi_i pa komentuar.
  2. Hapni xloader dhe shfletoni drejtorinë me kod, shfletoni skedarin.hex dhe digjeni atë në nano duke zgjedhur tabelën e duhur dhe portën COM.
  3. Hapni skicën e përpunimit dhe drejtojeni atë me indeksin e duhur të portit COM. Nëse gjithçka shkon mirë, duhet të jeni në gjendje të shihni një spektër të sinjalit në pin A0.
  4. Merrni një vidë dhe ktheni tenxheren e prerësit derisa spektri të jetë i sheshtë (komponenti DC duhet të jetë afër zeros). Mos futni asnjë sinjal në tabelë atëherë. (Mos e bashkoni modulin e mikrofonit).
  5. Tani përdorni çdo mjet gjenerator spastrimi si ky për të dhënë hyrje në tabelë nga mikrofoni dhe vëzhgoni spektrin.
  6. Nëse nuk shihni një spastrim të frekuencave, zvogëloni frekuencën e ndërprerjes duke ndryshuar rezistencën 47 kilogramë. Gjithashtu rrisni fitimin duke përdorur tenxhere të paravendosur 10 kilogramë. Mundohuni të merrni një dalje të sheshtë dhe të spikatur duke ndryshuar këto parametra. Kjo është pjesa argëtuese (bonusi i vogël!), Luani këngët tuaja të preferuara dhe shijoni spektrin e tyre në kohë reale. (Shikoni videon)
  7. Tani përpiloni kodin C të ngulitur përsëri këtë herë me #cakto koment pcvisual dhe #përcaktoni midi_out pakomentuar.
  8. Ringarkoje kodin e ri të përpiluar në arduino Nano.
  9. Hapni LoopMidi dhe krijoni një port të ri.
  10. Hapni FL studio ose softuer tjetër ndërfaqe MIDI dhe sigurohuni që porti midi i lakut të jetë i dukshëm në cilësimet e portës MIDI.
  11. Hap MIDI pa flokë me arduino të lidhur. Zgjidhni portën dalëse që të jetë porta LoopMidi. Shkoni te cilësimet dhe vendosni normën Baud të jetë 115200. Tani zgjidhni portën COM që korrespondon me Arduino Nano dhe hapni portën.
  12. Luani disa tone "të pastra" pranë mikrofonit dhe duhet të dëgjoni shënimin përkatës të goditur edhe në softuerin MIDI. Nëse nuk ka përgjigje, provoni të ulni pragun e përcaktuar në kodin C. Nëse shënimet nxiten rastësisht, atëherë rrisni pragun e sipërm.
  13. Merrni pianon tuaj dhe provoni sa i shpejtë është sistemi juaj !! Gjëja më e mirë është se në zonën e artë të bllokimit të shënimeve mund të zbulojë me lehtësi shtypje të shumta të njëkohshme të çelësave me lehtësi.

Shënim: Kur porti COM arrihet nga një aplikacion, ai nuk mund të lexohet nga një aplikacion tjetër. Për shembull, nëse MIDI pa flokë lexon portën COM, Xloader nuk do të jetë në gjendje të ndezë tabelën

Hapi 7: Rezultatet/Videot

Kaq është tani për tani djema! Shpresoj që ju pëlqen. Nëse keni ndonjë sugjerim ose përmirësim në projekt më tregoni në pjesën e komenteve. Paqe!

Recommended: