Mundarija:

MIDI konvertoriga real vaqtda audio: 7 qadam
MIDI konvertoriga real vaqtda audio: 7 qadam

Video: MIDI konvertoriga real vaqtda audio: 7 qadam

Video: MIDI konvertoriga real vaqtda audio: 7 qadam
Video: "Audio to MIDI" - конвертер - MIDI и виртуальные инструменты 2024, Noyabr
Anonim
MIDI konvertoriga real vaqtda audio
MIDI konvertoriga real vaqtda audio

Nozik odamlar! Bu men bakalavr dasturida o'z kurslarimdan birida (Real vaqtda raqamli signallarni qayta ishlash) ishlagan loyiha. Loyiha UART orqali audio ma'lumotlarni "tinglaydigan" va tegishli yozuvlarning MIDI xabarlarini chiqaradigan DSP tizimini yaratishga qaratilgan. Buning uchun Arduino Nano ishlatilgan. Qisqacha aytganda, mikro-kontroller kiruvchi audio ma'lumotlarga FFT qiladi va cho'qqilarni tahlil qiladi va tegishli MIDI xabarini yuboradi. MOSFET -lar haqida xavotir olmang, chunki ular boshqa loyihalar uchun (keyinchalik ko'rsatmali materiallarga ham qo'yiladi) va bu loyiha uchun talab qilinmaydi. Shunday qilib, biz allaqachon boshlaylik !!

1 -qadam: zarur komponentlar

Majburiy komponentlar
Majburiy komponentlar

Ushbu loyihani yaratish uchun bizga quyidagi komponentlar kerak bo'ladi, lekin ularning ko'pchiligi umumiydir va ularni ekvivalentlari bilan almashtirish mumkin. Bundan tashqari, yaxshiroq sxemalarni ishlab chiqish va ov qilish uchun sxemaga murojaat qiling.

Komponentlar miqdori

1. Elektret mikrofon. 1

2. 30 Kilo Ohmli qarshilik. 1

3. 150 Kilo Ohmli qarshilik. 1

4. 100 ohmli qarshilik. 1

5. 2.2 Kilo Ohmli rezistorlar. 3

6. 10 Kilo Ohm oldindan o'rnatilgan idish. 1

7. 10 Kilo Ohm trimmerli qozon. 1

8. 47 Kilo Ohm stereo qozon. 1

9. 470 Ohmli rezistorlar. 2018-05-01 xoxlasa buladi 121 2

10. 0,01uF kondansatörler. 2018-05-01 xoxlasa buladi 121 2

11. 2.2uF kondansatörler. 3

12. 47uF kondansatörler. 2018-05-01 xoxlasa buladi 121 2

13. 1000uF kondansatör. 1

14. 470uF kondansatör. 1

15. 7805 kuchlanish regulyatori. 1

16. Ayol va erkak sarlavhasi. Har biri 1

17. Barrel Jek ulagichi. 1

18. 12 V 1 Amperli shahar adapteri. 1

19. SPST kaliti. (Ixtiyoriy) 1

20. Perfboard. 1

2 -qadam: Texnik xususiyatlari

Texnik xususiyatlari
Texnik xususiyatlari

Namuna olish chastotasi: 3840 ta namuna/sek

Bir FFT uchun namunalar soni: 256

Chastotani o'lchamlari: 15Hz

Yangilanish tezligi: 15 Gts atrofida

Musiqiy notalarning pastki va yuqori o'lchovlari to'g'ri yozilmagan. Pastki notalar past chastotali piksellar sonidan, chunki yuqori chastotalar past namuna olish tezligidan aziyat chekadi. Arduino allaqachon xotirasida yo'q, shuning uchun yaxshiroq piksellar sonini topishning iloji yo'q. Yaxshiroq aniqlik yangilanish tezligining pasayishi evaziga bo'ladi, shuning uchun almashish muqarrar. Geyzenbergning noaniqlik tamoyilining Layman versiyasi.

Asosiy qiyinchilik - notalar orasidagi eksponensial interval (Rasmda ko'rinib turganidek. Chastotalar o'qidagi har bir impuls - musiqiy nota). LFT kabi algoritmlar yordam berishi mumkin, lekin bu arduino Nano kabi qurilma uchun biroz rivojlangan va biroz murakkabroq.

3 -qadam: O'chirish diagrammasi

O'chirish sxemalari
O'chirish sxemalari
O'chirish sxemalari
O'chirish sxemalari
O'chirish sxemalari
O'chirish sxemalari
O'chirish sxemalari
O'chirish sxemalari

Eslatma: Rasmlardagi uchta MOSFET va vintli terminallar sizni bezovta qilmasin. Ushbu loyiha uchun ular talab qilinmaydi. E'tibor bering, mikrofon kirish kartasi olinadigan yoki uni Modul deb atashadi. Turli bloklarning kichik tavsifi quyida keltirilgan.

1) ikkita 470 ohmli rezistorlar stereo audio signalni mono ovozli signalga birlashtiradi. Signalning asosi kontaktlarning zanglashiga emas, balki virtual erga (elektron diagrammada vg) o'tishiga ishonch hosil qiling.

2) Keyingi blok-bu 2-darajali sallen-key past o'tish filtri. Biz faqat +12v quvvat manbai bilan ishlayotganimiz uchun, biz RC kuchlanish bo'luvchi qilib, op-amperni noaniq qilamiz. bu op -amperni 6 0 -6 voltli quvvat manbai (ikki tomonlama temir yo'l) deb o'ylashga majbur qiladi, bu erda vg -op -amp uchun asos.

3) Keyin chiqish past voltli 6 voltli ofsetni blokirovka qilish uchun filtrlanadi va taxminan 0,55 voltsli shahar bilan bog'lanadi, chunki ADC Vref sifatida 1,1 ichki voltdan foydalanishga sozlangan bo'ladi.

Eslatma: Elektret mikrofon uchun oldindan kuchaytirgich Internetdagi eng yaxshi elektron emas. Op-ampni o'z ichiga olgan sxema yaxshiroq tanlov bo'lar edi. Biz chastotali javobni iloji boricha tekis bo'lishini xohlaymiz. 47 kilo ohmli stereo qozon kesish chastotasini aniqlash uchun ishlatiladi, bu odatda namuna olish chastotasining yarmiga teng bo'lishi kerak. Filtrning daromadini va Q qiymatini sozlash uchun 10 kilo ohmli oldindan o'rnatilgan (oq boshli kichik idish) ishlatiladi. 10 kilo ohmli trimmerli qozon (metall yassi tugmachasi kichik tekis boshli vintga o'xshaydi), kuchlanishni Vrefning yarmigacha yaqinlashtirish uchun ishlatiladi.

Eslatma: Nanoni kompyuterga ulashda SPST tugmachasini boshqa ochiq holda saqlang. Ehtiyot bo'ling, aks holda, bu kontaktlarning zanglashiga olib kelishi mumkin

4 -qadam: Kerakli ilovalar va ID

Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
Kerakli ilovalar va IDElar
  1. Arduino Nano -ni kodlash uchun men AVR 5.1 studiyasi bilan bordim, chunki bu men uchun ishlaydi. O'rnatuvchini bu erda topishingiz mumkin.
  2. Arduino Nano dasturlash uchun men Xloader -dan foydalanardim.. Hex fayllarini Arduinos -ga yozish uchun engil asbobdan foydalanish juda oson. Siz bu yerdan olishingiz mumkin.
  3. Kichik bonusli kichik loyiha va sxemani sozlash uchun men ishlov berishni ishlatardim. Siz uni bu erdan olishingiz mumkin, lekin har bir tahrirda katta o'zgarishlar bo'ladi, shuning uchun eskizni ishlash uchun eskirgan funktsiyalar bilan skripka qilishingiz kerak bo'ladi.
  4. FL studio yoki boshqa MIDI ishlov berish dasturi. Siz FL studio cheklangan versiyasini bu erdan bepul olishingiz mumkin.
  5. Loop MIDI virtual MIDI portini yaratadi va FL studiyasi uni xuddi MIDI qurilmasidek aniqlaydi. Xuddi shu nusxani bu erdan oling.
  6. Sochsiz MIDI COM portidan MIDI xabarlarini o'qish va uni MIDI portiga yuborish uchun ishlatiladi. Shuningdek, u MIDI xabarlarini real vaqt rejimida tuzatadi, bu disk raskadrovka qilishni qulay qiladi. Sochsiz MIDI -ni bu erdan oling.

5 -qadam: Hamma uchun tegishli kodlar

Men ushbu loyihada ishlatgan FFT kutubxonasi uchun Electronic Lifes MFG (Website Here !!) ga minnatdorchilik bildirmoqchiman. Kutubxona mega AVR oilasi uchun optimallashtirilgan. Bu u ishlatgan kutubxona fayllari va kodlariga havola. Men o'z kodimni quyida biriktiraman. U ishlov berish eskizini va AVR C kodini ham o'z ichiga oladi. E'tibor bering, bu konfiguratsiya men uchun ishlagan va agar siz ushbu kodlar tufayli biror narsaga zarar etkazsangiz, men hech qanday javobgarlikni o'z zimmamga olmayman. Bundan tashqari, men kodni ishlashga harakat qiladigan juda ko'p muammolarga duch keldim. Masalan, DDRD (Ma'lumotlar Yo'nalishi Reyestri) an'anaviy DDRDx (x = 0-7) o'rniga bit maskalari sifatida DDDx (x = 0-7) ga ega. Kompilyatsiya paytida bu xatolarga e'tibor bering. Mikro-nazoratchining o'zgarishi ham ushbu ta'riflarga ta'sir qiladi, shuning uchun kompilyatsiya xatolar bilan shug'ullanayotganda buni ham kuzatib boring. Va agar siz nima uchun loyiha papkasi DDT_Arduino_328p.rar deb nomlanganini bilmoqchi bo'lsangiz, aytaylik, men boshlaganimda kechqurun juda qorong'i edi va men chiroqni yoqmasligim uchun dangasa edim.: P.

Qayta ishlash eskiziga kelsak, men bu eskizni yozish uchun 3.3.6 ishlov berishdan foydalandim. Eskizda COM port raqamini qo'lda o'rnatishingiz kerak bo'ladi. Siz koddagi sharhlarni tekshirishingiz mumkin.

Agar kimdir menga kodlarni Arduino IDE va oxirgi ishlov berish versiyasiga o'tkazishda yordam bersa, men xursand bo'laman va ishlab chiquvchilarga ham o'z hissasini qo'shaman.

6 -qadam: sozlash

  1. Kodni oching va #define pcvisual izohlanmagan va #define midi_out sharhlari bilan kodni tuzing.
  2. Xloader -ni oching va kodli katalogga o'ting,.hex faylini ko'rib chiqing va tegishli platani va COM portini tanlab nano -ga yoqing.
  3. Qayta ishlash eskizini oching va uni tegishli COM port indeksi bilan ishga tushiring. Agar hamma narsa yaxshi bo'lsa, siz A0 pinidagi signal spektrini ko'rishingiz kerak.
  4. Tornavida oling va trimmer qozonini spektr tekis bo'lguncha aylantiring (shahar komponenti nolga yaqin bo'lishi kerak). Shunday qilib, taxtaga hech qanday signal kiritmang. (Mikrofon modulini ulamang).
  5. Endi mikrofondan taxtaga ma'lumot kiritish va spektrni kuzatish uchun shunga o'xshash tozalash generatoridan foydalaning.
  6. Agar siz chastotalarning siljishini ko'rmasangiz, 47 kilo ohmli qarshilikni o'zgartirib, kesish chastotasini kamaytiring. 10 kilo ohmli oldindan o'rnatilgan qozon yordamida daromadni oshiring. Ushbu parametrlarni o'zgartirib, tekis va taniqli tozalash natijasini olishga harakat qiling. Bu qiziqarli qism (kichik bonus!), Sevimli qo'shiqlarni ijro eting va ularning real vaqtda spektridan bahramand bo'ling. (Videoni tomosha qiling)
  7. Endi bu safar #define pcvisual sharhlangan va #define midi_out izohlanmagan holda o'rnatilgan C kodini yana kompilyatsiya qiling.
  8. Yangi tuzilgan kodni arduino Nano -ga qayta yuklang.
  9. LoopMidi -ni oching va yangi port yarating.
  10. FL studio yoki boshqa MIDI interfeysi dasturini oching va MIDI port sozlamalarida pastadir midi porti ko'rinib turishiga ishonch hosil qiling.
  11. Arduino ulangan tuksiz MIDI. LoopMidi porti bo'lish uchun chiqish portini tanlang. Sozlamalarga o'ting va Baud tezligini 115200 ga o'rnating. Endi Arduino Nano -ga mos keladigan COM portini tanlang va portni oching.
  12. Mikrofon yonida bir nechta "toza" ohanglarni ijro eting, shunda siz MIDI dasturida tegishli yozuvni eshitasiz. Agar javob bo'lmasa, C kodida belgilangan up_thresholdni kamaytirishga harakat qiling. Agar eslatmalar tasodifiy ishga tushsa, up_thresholdni oshiring.
  13. Pianino oling va tizimingiz qanchalik tezligini tekshiring !! Eng yaxshi tomoni shundaki, zargarlik buyumlari zargarlik zonasida u bir vaqtning o'zida bir nechta tugmachalarni bosishni osonlikcha aniqlay oladi.

Eslatma: COM portiga bitta dastur kirsa, uni boshqasi o'qiy olmaydi. Misol uchun, agar sochsiz MIDI COM portini o'qisa, Xloader taxtani o'chira olmaydi

7 -qadam: natijalar/videolar

Hozircha, bolalar! Umid qilamanki, sizga yoqadi. Agar sizda loyihada biron bir taklif yoki yaxshilanish bo'lsa, izohlar bo'limida menga xabar bering. Tinchlik!

Tavsiya: