Satura rādītājs:

Reāllaika audio uz MIDI pārveidotājs: 7 soļi
Reāllaika audio uz MIDI pārveidotājs: 7 soļi

Video: Reāllaika audio uz MIDI pārveidotājs: 7 soļi

Video: Reāllaika audio uz MIDI pārveidotājs: 7 soļi
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Novembris
Anonim
Reāllaika audio pārveidotājs uz MIDI
Reāllaika audio pārveidotājs uz MIDI

Namaste cilvēki! Šis ir projekts, pie kura es strādāju vienā no saviem bakalaura programmas kursiem (reālā laika digitālā signāla apstrāde). Projekta mērķis ir izveidot DSP sistēmu, kas "klausās" audio datus un izvada atbilstošo piezīmju MIDI ziņojumus, izmantojot UART. Šim nolūkam tika izmantots Arduino Nano. Īsi sakot, mikrokontrolleris veic FFT ienākošajiem audio datiem un veic pīķu analīzi un nosūta atbilstošu MIDI ziņojumu. Tomēr neuztraucieties par MOSFET, jo tie ir paredzēti kādam citam projektam (kas vēlāk tiks uzlikts arī par pamācībām) un nav nepieciešami šim projektam. Tāpēc sāksim jau !!

1. darbība. Nepieciešamās sastāvdaļas

Nepieciešamas sastāvdaļas
Nepieciešamas sastāvdaļas

Lai izveidotu šo projektu, mums būs nepieciešami šādi komponenti, lai gan daudzi no tiem ir vispārīgi un tos var aizstāt ar to ekvivalentiem. Skatiet arī shēmas shēmu, lai izstrādātu un meklētu labākas ieviešanas iespējas.

Sastāvdaļas daudzums

1. Elektreta mikrofons. 1

2. 30 Kilo Ohm rezistors. 1

3. 150 Kilo omu rezistors. 1

4. 100 omu rezistors. 1

5. 2.2 Kilo Ohm rezistori. 3

6. 10 Kilo Ohm iepriekš iestatīts katls. 1

7. 10 Kilo Ohm trimmeris. 1

8. 47 Kilo Ohm stereo pods. 1

9. 470 omi rezistori. 2

10. 0.01uF kondensatori. 2

11. 2.2uF kondensatori. 3

12. 47uF kondensatori. 2

13. 1000uF kondensators. 1

14. 470uF kondensators. 1

15. 7805 sprieguma regulators. 1

16. Sieviešu un vīriešu galvenes sloksne. 1 pa vienam

17. Barrel Jack savienotājs. 1

18. 12 V 1 A līdzstrāvas adapteris. 1

19. SPST slēdzis. (Pēc izvēles) 1

20. Perfboard. 1

2. darbība. Tehniskās specifikācijas

Tehniskās specifikācijas
Tehniskās specifikācijas

Paraugu ņemšanas biežums: 3840 paraugi/sek

Paraugu skaits vienā FFT: 256

Frekvences izšķirtspēja: 15 Hz

Atsvaidzes intensitāte: aptuveni 15 Hz

Mūzikas notu zemākā un augstākā skala nav uztverta pareizi. Zemākās notis cieš no zemas frekvences izšķirtspējas, bet augstākas frekvences cieš no zemiem izlases ātrumiem. Arduino atmiņa jau ir beigusies, tāpēc nav iespējas iegūt labāku izšķirtspēju. Un labāka izšķirtspēja maksās par samazinātu atsvaidzes intensitāti, tāpēc kompromiss ir neizbēgams. Laizena versija Heizenberga nenoteiktības principam.

Galvenās grūtības ir eksponenciālais attālums starp notīm (Kā redzams attēlā. Katrs impulss uz frekvences asi ir mūzikas nots). Varētu palīdzēt tādi algoritmi kā LFT, taču tādai ierīcei kā arduino Nano tas ir nedaudz uzlabots un nedaudz sarežģīts.

3. darbība: shēmas shēmas

Ķēdes diagrammas
Ķēdes diagrammas
Ķēdes diagrammas
Ķēdes diagrammas
Ķēdes diagrammas
Ķēdes diagrammas
Ķēdes diagrammas
Ķēdes diagrammas

Piezīme: neuztraucieties par attēlos redzamajiem trim MOSFET un skrūvju spailēm. Šim projektam tie nav nepieciešami. Ņemiet vērā, ka mikrofona ievades panelis ir noņemams vai tiek saukts par modulāru. Tālāk ir sniegts neliels dažādu bloku apraksts.

1) Abi 470 omu rezistori apvieno stereo audio signālu ar mono audio signālu. Pārliecinieties, ka signāla zemējums nonāk virtuālajā zemē (shēmas shēmā vg), nevis ķēdes zemē.

2) Nākamais bloks ir otrās kārtas sallen-key zemfrekvences filtrs, kas ir atbildīgs par joslas ierobežošanu ieejas signālā, lai izvairītos no pseidonīma. Tā kā mēs strādājam ar tikai +12V barošanu, mēs nospriegojam op-amp, izveidojot RC sprieguma dalītāju. kas mulsina op -amp, domājot, ka barošana ir 6 0–6 voltu barošana (dubultā sliede), kur vg ir operatora pastiprinātāja atsauce.

3) Pēc tam izeja tiek filtrēta zemā caurlaidībā, lai bloķētu 6 voltu līdzstrāvas nobīdi, un kopā ar aptuveni 0,55 voltu līdzstrāvu, jo ADC tiks konfigurēts izmantot iekšējo 1,1 v kā Vref.

Piezīme. Elektreta mikrofona priekšpastiprinātājs nav labākā shēma internetā. Ķēde, kurā iesaistīts op-amp, būtu bijusi labāka izvēle. Mēs vēlamies, lai frekvences reakcija būtu pēc iespējas vienmērīgāka. 47 kilogramu omu stereo katlu izmanto, lai definētu izslēgšanas frekvenci, kurai parasti vajadzētu būt pusei no paraugu ņemšanas frekvences. 10 kilogramu omu sākotnējais iestatījums (mazais katls ar baltu galvu) tiek izmantots, lai noregulētu filtra pastiprinājumu un Q vērtību. 10 kg omu trimmera katls (viens ar metāla regulēšanas pogu, kas izskatās kā maza plakana galvas skrūve) tiek izmantots, lai iestatītu spriegumu līdz pusei no Vref.

Piezīme: savienojot Nano ar PC turiet SPST slēdzi atvērtu, citādi aizvērtu. Esiet īpaši piesardzīgs, jo pretējā gadījumā tas var kaitēt ķēdei/datoram/sprieguma regulatoram vai jebkurai iepriekš minēto kombinācijai

4. darbība. Nepieciešamās lietojumprogrammas un IDE

Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
Nepieciešamās lietojumprogrammas un IDE
  1. Lai kodētu Arduino Nano, es devos ar primitīvo AVR studiju 5.1, jo šķiet, ka tas man der. Instalētāju varat atrast šeit.
  2. Arduino Nano programmēšanai es izmantoju Xloader. Tas ir patiešām viegli lietojams viegls rīks.hex failu ierakstīšanai Arduinos. Jūs to varat iegūt šeit.
  3. Nelielam bonusa mini projektam un ķēdes regulēšanai es izmantoju apstrādi. Jūs to varat iegūt no šejienes, lai gan katrā pārskatīšanā tiek veiktas būtiskas izmaiņas, tāpēc, lai skice darbotos, jums, iespējams, nāksies izklaidēties ar novecojušām funkcijām.
  4. FL studija vai jebkura cita MIDI apstrādes programmatūra. Šeit varat bez maksas iegūt FL studijas ierobežotas piekļuves versiju.
  5. Cilpa MIDI izveido virtuālu MIDI portu, un FL studio to atklāj tā, it kā tā būtu MIDI ierīce. Iegūstiet tā kopiju no šejienes.
  6. Matu bez matiem izmanto, lai lasītu MIDI ziņojumus no COM porta un nosūtītu tos uz cilpas MIDI portu. Tas arī atkļūdo MIDI ziņojumus reāllaikā, kas padara atkļūdošanu ērtu. Iegūstiet MIDI bez matiem no šejienes.

5. darbība. Atbilstošie kodi visam

Es vēlos pateikties Electronic Lifes MFG (vietne šeit !!) par fiksētā punkta FFT bibliotēku, kuru izmantoju šajā projektā. Bibliotēka ir optimizēta mega AVR ģimenei. Šī ir saite uz bibliotēkas failiem un kodiem, kurus viņš izmantoja. Es pievienoju savu kodu zemāk. Tas ietver arī apstrādes skici un AVR C kodu. Lūdzu, ņemiet vērā, ka šī konfigurācija man noderēja, un es neuzņemos nekādu atbildību, ja šo kodu dēļ jūs kaut ko sabojājat. Turklāt man bija daudz problēmu, mēģinot panākt, lai kods darbotos. Piemēram, DDRD (datu virzienu reģistrā) ir DDDx (x = 0-7) kā bitu maskas, nevis parastās DDRDx (x = 0-7). Sastādot, pievērsiet uzmanību šīm kļūdām. Arī mikrokontrollera maiņa ietekmē šīs definīcijas, tāpēc uzmanieties arī tam, vienlaikus risinot apkopošanas kļūdas. Un, ja jums rodas jautājums, kāpēc projekta mapi sauc par DDT_Arduino_328p.rar, tad pieņemsim, ka vakarā, kad es sāku, bija ļoti tumšs un es biju pietiekami slinks, lai neieslēgtu gaismas.: P

Nonākot pie apstrādes skices, šīs skices rakstīšanai izmantoju apstrādi 3.3.6. Skicē COM porta numurs jāiestata manuāli. Jūs varat pārbaudīt komentārus kodā.

Ja kāds var man palīdzēt pārnest kodus uz Arduino IDE un jaunāko apstrādes versiju, es priecātos un sniegšu kredītus arī izstrādātājiem un līdzautoriem.

6. darbība: iestatīšana

  1. Atveriet kodu un apkopojiet kodu ar #define pcvisual nekomentētu un #define midi_out komentāru.
  2. Atveriet xloader un pārlūkojiet direktoriju ar kodu, pārlūkojiet.hex failu un ierakstiet to nano, izvēloties atbilstošo plati un COM portu.
  3. Atveriet apstrādes skici un palaidiet to ar atbilstošu COM porta indeksu. Ja viss notiek labi, jums vajadzētu redzēt signāla spektru uz tapas A0.
  4. Iegūstiet skrūvgriezi un pagrieziet trimmera podu, līdz spektrs ir līdzens (līdzstrāvas komponentam jābūt tuvu nullei). Neievadiet nekādu signālu pie tāfeles. (Nepievienojiet mikrofona moduli).
  5. Tagad izmantojiet jebkuru slaucīšanas ģeneratora rīku, piemēram, šo, lai ievadītu plāksni no mikrotelefona un novērotu spektru.
  6. Ja neredzat frekvenču svārstības, samaziniet izslēgšanas frekvenci, mainot 47 kilo omu pretestību. Palieliniet arī ieguvumu, izmantojot iepriekš iestatīto 10 kg omu katlu. Mēģiniet iegūt vienmērīgu un pamanāmu slaucīšanas rezultātu, mainot šos parametrus. Šī ir jautrā daļa (neliels bonuss!), Atskaņojiet savas iecienītākās dziesmas un izbaudiet to reāllaika spektru. (Skatīties video)
  7. Tagad šoreiz atkal apkopojiet iegulto C kodu, komentējot #define pcvisual un nekomentējot #define midi_out.
  8. Pārlādējiet jauno apkopoto kodu arduino Nano.
  9. Atveriet LoopMidi un izveidojiet jaunu portu.
  10. Atveriet FL studio vai citu MIDI saskarnes programmatūru un pārliecinieties, vai cilpas midi ports ir redzams MIDI porta iestatījumos.
  11. Atvērts MIDI bez matiem ar pievienotu arduino. Izvēlieties izejas portu kā LoopMidi portu. Dodieties uz iestatījumiem un iestatiet Baud ātrumu 115200. Tagad atlasiet COM portu, kas atbilst Arduino Nano, un atveriet portu.
  12. Atskaņojiet dažus "tīrus" toņus pie mikrofona, un jums vajadzētu dzirdēt atbilstošo noti arī MIDI programmatūrā. Ja atbildes nav, mēģiniet pazemināt C kodā noteikto augšējo slieksni. Ja piezīmes tiek aktivizētas nejauši, palieliniet slieksni augšup.
  13. Iegūstiet savas klavieres un pārbaudiet, cik ātra ir jūsu sistēma !! Labākais ir tas, ka piezīmju zeltainās bloķēšanas zonā tas var ērti noteikt vairākus vienlaicīgus taustiņu nospiešanas gadījumus.

Piezīme. Ja COM portam piekļūst viena lietojumprogramma, to nevar nolasīt cita. Piemēram, ja bez matiem MIDI lasa COM portu, Xloader nevarētu mirgot tāfelē

7. darbība: rezultāti/videoklipi

Tas pagaidām ir puiši! Ceru, ka jums patīk. Ja jums ir kādi ieteikumi vai uzlabojumi projektā, informējiet mani komentāru sadaļā. Miers!

Ieteicams: