Բովանդակություն:

Իրական ժամանակի աուդիո MIDI փոխարկիչ. 7 քայլ
Իրական ժամանակի աուդիո MIDI փոխարկիչ. 7 քայլ

Video: Իրական ժամանակի աուդիո MIDI փոխարկիչ. 7 քայլ

Video: Իրական ժամանակի աուդիո MIDI փոխարկիչ. 7 քայլ
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, Նոյեմբեր
Anonim
Իրական ժամանակի աուդիո MIDI փոխարկիչ
Իրական ժամանակի աուդիո MIDI փոխարկիչ

Namaste մարդիկ! Սա նախագիծ է, որի վրա ես աշխատել եմ իմ դասընթացներից մեկի համար (Իրական ժամանակի թվային ազդանշանի մշակում) բակալավրիատում: Նախագիծը նպատակ ունի ստեղծել DSP համակարգ, որը «լսում է» աուդիո տվյալները և դուրս է բերում համապատասխան գրառումների MIDI հաղորդագրություններ UART- ի միջոցով: Այդ նպատակով օգտագործվել է Arduino Nano- ն: Կարճ ասած, միկրոհսկիչը FFT է կատարում մուտքային աուդիո տվյալների վերաբերյալ և կատարում է գագաթների որոշակի վերլուծություն և ուղարկում համապատասխան MIDI հաղորդագրություն: Մի անհանգստացեք MOSFET- երը, քանի որ դրանք այլ նախագծերի համար են (որոնք հետագայում նույնպես տեղադրվելու են հրահանգների վրա) և պարտադիր չեն այս նախագծի համար: Այսպիսով, եկեք սկսենք արդեն !!

Քայլ 1: Պահանջվում են բաղադրիչներ

Պահանջվող բաղադրիչներ
Պահանջվող բաղադրիչներ

Այս նախագիծը կառուցելու համար մեզ անհրաժեշտ կլինեն հետևյալ բաղադրիչները, չնայած դրանցից շատերը ընդհանուր են և կարող են փոխարինվել դրանց համարժեքներով: Նաև ուղղեք սխեմայի դիագրամը `ավելի լավ իրականացում մշակելու և որսալու համար:

Բաղադրիչի քանակը

1. Էլեկտրետ խոսափող: 1

2. 30 կիլո Օմ դիմադրություն: 1

3. 150 Կիլո Օմ դիմադրություն: 1

4. 100 օմ դիմադրություն: 1

5. 2.2 Կիլո Օմ դիմադրիչներ: 3

6. 10 Kilo Ohm կանխադրված կաթսա: 1

7. 10 կիլո Օհմ զարդարող կաթսա: 1

8. 47 Kilo Ohm ստերեո կաթսա: 1

9. 470 Օմ ռեզիստորներ: 2

10. 0.01uF կոնդենսատորներ: 2

11. 2.2uF կոնդենսատորներ: 3

12. 47uF կոնդենսատորներ: 2

13. 1000uF կոնդենսատոր: 1

14. 470uF կոնդենսատոր: 1

15. 7805 լարման կարգավորիչ: 1

16. Իգական և արական վերնագրերի ժապավեն: 1 -ական հատ

17. Barrel Jack միակցիչ: 1

18. 12 V 1 Amp DC ադապտեր: 1

19. SPST անջատիչ: (Ըստ ցանկության) 1

20. Պերֆորդ. 1

Քայլ 2: Տեխնիկական բնութագրեր:

Տեխնիկական բնութագրեր
Տեխնիկական բնութագրեր

Նմուշառման հաճախականությունը `3840 նմուշ/վրկ

Նմուշների քանակը մեկ FFT- ի համար `256

Հաճախականության թույլատրելիություն `15 Հց

Թարմացման արագությունը `մոտ 15 Հց

Երաժշտական նոտաների ստորին և բարձր մասշտաբները ճիշտ չեն գրված: Ստորին նոտաները տառապում են ցածր հաճախականության թույլատրելիությամբ, երբ ավելի բարձր հաճախականությունները տառապում են նմուշառման ցածր տեմպերից: Արդուինոն արդեն հիշողությունից դուրս է, ուստի ավելի լավ լուծման հնարավորություն չկա: Եվ ավելի լավ լուծում կտրվի թարմացման նվազեցված գնով, այնպես որ փոխզիջումն անխուսափելի է: Հայզենբերգի անորոշության սկզբունքի լեյմանական տարբերակը:

Առաջնային դժվարությունը նոտաների միջև էքսպոնենցիալ տարածությունն է (ինչպես երևում է նկարում: Հաճախականության առանցքի յուրաքանչյուր ազդակ երաժշտական նոտա է): LFT- ի նման ալգորիթմները կարող են օգնել, բայց դա մի փոքր առաջադեմ է և մի փոքր բարդ սարքի համար, ինչպիսին է arduino Nano- ն:

Քայլ 3: Շղթայի դիագրամներ:

Շղթայի դիագրամներ
Շղթայի դիագրամներ
Շղթայի դիագրամներ
Շղթայի դիագրամներ
Շղթայի դիագրամներ
Շղթայի դիագրամներ
Շղթայի դիագրամներ
Շղթայի դիագրամներ

Նշում. Մի անհանգստացեք նկարների երեք MOSFET- երից և պտուտակավոր տերմինալներից: Նրանք չեն պահանջվում այս նախագծի համար: Ուշադրություն դարձրեք, որ խոսափողի մուտքի տախտակը շարժական է կամ ինչպես իրենք են անվանում Մոդուլային: Ստորև բերված է տարբեր բլոկների փոքր նկարագրություն:

1) Երկու 470 օհմ ռեզիստորները համատեղում են ստերեո աուդիո ազդանշանը մոնո աուդիո ազդանշանի հետ: Համոզվեք, որ ազդանշանի հիմքը անցնում է վիրտուալ գետնին (vg սխեմայի գծապատկերում) և ոչ թե սխեմայի գետնին:

2) Հաջորդ բլոկը 2-րդ կարգի սալեն-բանալին ցածր անցնող զտիչ է, որը պատասխանատու է մուտքի ազդանշանը սահմանափակելու համար ՝ այլանունությունից խուսափելու համար: Քանի որ մենք աշխատում ենք միայն +12 վ լարման հետ, մենք կողմնակալ ենք op-amp- ին ՝ RC լարման բաժանարար սարքելով: դա հիմարացնում է op -amp- ը `մտածելով, որ սնուցումը 6 0 -6 վոլտ մատակարարում է (երկակի երկաթուղի), որտեղ vg- ը op amp- ի հիմնական աղբյուրն է:

3) Այնուհետև ելքը ցածր զտված է `զտված 6 վոլտ DC օֆսեթը և զուգակցված մոտ 0.55 վոլտ DC- ի հետ, քանի որ ADC- ն կազմաձևված կլինի ներքին 1.1 v- ն որպես Vref օգտագործելու համար:

Նշում. Էլեկտրական խոսափողի համար նախնական ուժեղացուցիչը ինտերնետի լավագույն միացումը չէ: Ավելի լավ ընտրություն կլիներ միացում, որը ներառում էր op-amp- ը: Մենք ցանկանում ենք, որ հաճախականության պատասխանը լինի հնարավորինս հարթ: 47 կիլոգրամանոց ստերեո կաթսան օգտագործվում է կտրման հաճախականությունը որոշելու համար, որը սովորաբար պետք է լինի նմուշառման հաճախականության կեսը: 10 կիլոգրամանոց նախադրյալը (Սպիտակ գլխիկով փոքր կաթսան) օգտագործվում է զտիչի շահույթը և Q արժեքը կարգավորելու համար: 10 կիլոգրամանոց օմ հարմարվողական կաթսան (մեկը ՝ մետաղական թյունինգի բռնակով, որը կարծես փոքր հարթ գլխի պտուտակ ունի) օգտագործվում է լարումը մոտ Vref- ի չափ մոտ լինելու համար:

Նշում. Երբ դուք միացնում եք Nano- ն P. C. SPST անջատիչը փակ պահեք: Keepգուշացեք, որ դա չկատարելը կարող է վնասել միացում/համակարգիչ/լարման կարգավորիչին կամ վերը նշվածի ցանկացած համադրությանը:

Քայլ 4: Անհրաժեշտ դիմումներ և IDE- ներ:

Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
Անհրաժեշտ դիմումներ և IDE- ներ
  1. Arduino Nano- ի կոդավորման համար ես գնացի պարզունակ AVR ստուդիայի 5.1 հետ, որովհետև ինձ թվում է, որ դա աշխատում է: Տեղադրիչը կարող եք գտնել այստեղ:
  2. Arduino Nano- ի ծրագրավորման համար ես օգտագործել եմ Xloader- ը: Դա իրոք հեշտ է օգտագործել թեթև քաշի գործիքը: Դուք կարող եք այն ստանալ այստեղ:
  3. Փոքր բոնուսային մինի նախագծի և միացման սխեմայի համար ես օգտագործեցի մշակում: Դուք կարող եք այն ստանալ այստեղից, չնայած որ ամեն փոփոխության մեջ կան լուրջ փոփոխություններ, այնպես որ ուրվագիծը գործի գցելու համար գուցե ստիպված լինեք հնացած գործառույթներով զբաղվել:
  4. FL ստուդիա կամ MIDI մշակման այլ ծրագրակազմ: Դուք կարող եք անվճար ստանալ FL studio սահմանափակ մուտքի տարբերակ այստեղից:
  5. Loop MIDI- ն ստեղծում է վիրտուալ MIDI նավահանգիստ և հայտնաբերվում է FL ստուդիայի կողմից, կարծես դա MIDI սարք է: Ստացեք նույնի պատճենը այստեղից:
  6. Մազազուրկ MIDI- ն օգտագործվում է COM պորտից MIDI հաղորդագրություններ կարդալու և այն հանգույց MIDI նավահանգստին ուղարկելու համար: Այն նաև կարգաբերում է MIDI հաղորդագրությունները իրական ժամանակում, ինչը կարգաբերումը հարմար է դարձնում: Ձեռք բերեք անմազ MIDI այստեղից:

Քայլ 5: Համապատասխան կոդեր ամեն ինչի համար:

Ես կցանկանայի շնորհակալություն հայտնել Electronic Lifes MFG (Վեբ կայք այստեղ !!) FFT գրադարանի ֆիքսված կետի համար, որն օգտագործել եմ այս նախագծում: Գրադարանը օպտիմիզացված է մեգա AVR ընտանիքի համար: Սա հղում է դեպի գրադարանային ֆայլեր և ծածկագրեր, որոնք նա օգտագործել է: Ստորև կցում եմ իմ ծածկագիրը: Այն ներառում է նաև մշակման ուրվագիծը և AVR C ծածկագիրը: Խնդրում ենք նկատի ունենալ, որ սա այն կոնֆիգուրացիան է, որն աշխատել է ինձ համար, և ես որևէ պատասխանատվություն չեմ կրում, եթե այս կոդերի պատճառով որևէ բան վնասեք: Բացի այդ, ես շատ խնդիրներ ունեի ՝ փորձելով այնպես անել, որ ծածկագիրը գործի: Օրինակ, DDRD- ում (Տվյալների ուղղությունների գրանցամատյան) սովորական DDRDx- ի փոխարեն (x = 0-7) որպես բիտ դիմակներ կա DDDx (x = 0-7): Կազմելիս ուշադրություն դարձրեք այս սխալներին: Նաև միկրոկառավարիչի փոփոխությունը ազդում է այս սահմանումների վրա, ուստի հետևեք դրան նաև կազմման սխալների հետ աշխատելիս: Եվ եթե ձեզ հետաքրքրում է, թե ինչու է ծրագրի թղթապանակը կոչվում DDT_Arduino_328p.rar, դե եկեք ասենք, որ երեկոյան, երբ ես սկսեցի, շատ մութ էր, և ես այնքան ծույլ էի, որ լույսերը չեմ միացնում:: P

Գալով մշակման ուրվագծին ՝ ես այս ուրվագիծը գրելու համար օգտագործեցի 3.3.6 մշակումը: Էսքիզում ձեռքով պետք է սահմանեք COM պորտի համարը: Մեկնաբանությունները կարող եք ստուգել ծածկագրում:

Եթե որևէ մեկը կարող է օգնել ինձ կոդերը փոխանցել Arduino IDE և մշակման վերջին տարբերակին, ես ուրախ կլինեմ և վարկեր կտրամադրեմ նաև մշակողներին / ներդրողներին:

Քայլ 6: Կարգավորել այն:

  1. Բացեք ծածկագիրը և կազմեք ծածկագիրը #սահմանեք pcvisual uncommented- ով և #սահմանեք midi_out մեկնաբանության միջոցով:
  2. Բացեք xloader- ը և կոդով անցեք գրացուցակին, դիտեք.hex ֆայլը և այրեք այն nano- ին ՝ ընտրելով համապատասխան տախտակ և COM պորտ:
  3. Բացեք մշակման ուրվագիծը և գործարկեք այն համապատասխան COM նավահանգստի ինդեքսով: Եթե ամեն ինչ լավ է ընթանում, դուք պետք է կարողանաք տեսնել ազդանշանի սպեկտրը A0 կապում:
  4. Վերցրեք պտուտակահան և պտտեք հարմարվողական կաթսան մինչև սպեկտրը հարթ լինի (DC բաղադրիչը պետք է մոտ լինի զրոյին): Այդ դեպքում մի ազդանշան մի՛ տվեք տախտակին: (Մի ամրացրեք խոսափողի մոդուլը):
  5. Այժմ օգտագործեք այսպիսի ավլող գեներատորի ցանկացած գործիք `միկրո հեռախոսից տախտակին մուտք գործելու և սպեկտրը դիտելու համար:
  6. Եթե դուք չեք տեսնում հաճախությունների մաքրում, նվազեցրեք անջատման հաճախականությունը `փոխելով 47 կիլոգրամ դիմադրությունը: Նաև ավելացրեք շահույթը ՝ օգտագործելով 10 կիլոգրամանոց նախնական կաթսա: Փորձեք ձեռք բերել հարթ և նշանավոր մաքրման արդյունք ՝ փոխելով այս պարամետրերը: Սա զվարճալի մասն է (փոքրիկ բոնուս), նվագեք ձեր նախընտրած երգերը և վայելեք դրանց իրական ժամանակի սպեկտրը: (Դիտեք տեսանյութը)
  7. Այժմ կրկին կազմեք ներկառուցված C կոդը այս անգամ # #սահմանեք pcvisual մեկնաբանությամբ և #սահմանեք midi_out- ը `առանց մեկնաբանության:
  8. Վերբեռնեք նոր կազմված կոդը arduino Nano- ի վրա:
  9. Բացեք LoopMidi- ն և ստեղծեք նոր նավահանգիստ:
  10. Բացեք FL ստուդիան կամ MIDI ինտերֆեյսի այլ ծրագրակազմ և համոզվեք, որ հանգույցի midi նավահանգիստը տեսանելի է MIDI նավահանգստի կարգավորումներում:
  11. Բացեք մազազուրկ MIDI- ն միացված arduino- ով: Ընտրեք ելքային պորտը, որը կլինի LoopMidi նավահանգիստը: Գնացեք կարգավորումներ և Baud- ի արագությունը սահմանեք 115200: Այժմ ընտրեք Arduino Nano- ին համապատասխան COM նավահանգիստը և բացեք նավահանգիստը:
  12. Խոսափողի մոտ մի քանի «մաքուր» հնչերանգներ հնչեցրեք, և համապատասխան գրառումը պետք է լսեք նաև MIDI ծրագրաշարում: Եթե պատասխան չկա, փորձեք իջեցնել C կոդով սահմանված up_threshold- ը: Եթե նշումները սկսվում են պատահականորեն, ապա ավելացրեք վերին շեմը:
  13. Ձեռք բերեք ձեր դաշնամուրը և փորձեք, թե որքան արագ է ձեր համակարգը !! Ամենալավն այն է, որ նոտաների ոսկեգույն կողպեքի գոտում այն կարող է հարմարավետորեն հեշտությամբ հայտնաբերել մի քանի միաժամանակյա սեղմումներ:

Նշում. Երբ COM պորտին հասանելի է մի ծրագիր, այն չի կարող ընթերցվել մյուսի կողմից: Օրինակ, եթե Մազազուրկ MIDI- ն կարդա COM նավահանգիստ, Xloader- ը չի կարողանա բռնկել տախտակը:

Քայլ 7: Արդյունքներ/տեսանյութեր:

Այսքանը առայժմ տղերք: Հուսով եմ, ձեզ դուր է գալիս. Եթե ունեք որևէ առաջարկ կամ բարելավում նախագծում, տեղեկացրեք ինձ մեկնաբանությունների բաժնում: Խաղաղություն:

Խորհուրդ ենք տալիս: