Мазмұны:
- 1 -қадам: Қажетті компоненттер
- 2 -қадам: Техникалық сипаттамалар
- 3 -қадам: схемалар
- 4 -қадам: Қажетті қосымшалар мен IDE
- 5 -қадам: Барлығына қатысты кодтар
- 6 -қадам: оны орнату
- 7 -қадам: Нәтижелер/бейнелер
Бейне: MIDI түрлендіргіштен нақты уақыттағы аудио: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Керемет адамдар! Бұл менің бакалавриат бағдарламасында курстарымның бірінде (нақты уақыттағы цифрлық сигналды өңдеу) жұмыс істеген жоба. Жоба UART арқылы аудио деректерді «тыңдайтын» және тиісті жазбалардың MIDI хабарламаларын шығаратын DSP жүйесін құруға бағытталған. Ол үшін Arduino Nano қолданылды. Ұзын сөздің қысқасы, микроконтроллер кіріс аудио деректерге FFT жасайды және шыңдарға талдау жасайды және сәйкес MIDI хабарламасын жібереді. MOSFET туралы алаңдамаңыз, өйткені олар басқа жобаға арналған (олар кейінірек нұсқаулықтарда да қойылады) және бұл жоба үшін қажет емес. Ендеше қазірден бастайық !!
1 -қадам: Қажетті компоненттер
Бұл жобаны құру үшін бізге келесі компоненттер қажет болады, бірақ олардың көпшілігі жалпыға ортақ және оларды баламаларымен алмастыруға болады. Жақсы іске асыру үшін схеманы өңдеңіз және іздеңіз.
Компоненттер саны
1. Электрлі микрофон. 1
2. 30 кило Ом резисторы. 1
3. 150 кило Ом резисторы. 1
4. 100 Ом резисторы. 1
5. 2.2 кило Ом резисторлары. 3
6. 10 кило Ом алдын ала орнатылған кастрюль. 1
7. 10 кило Ом қайшылы ыдыс. 1
8. 47 Kilo Ohm стерео ыдысы. 1
9. 470 Ом резисторы. 2018-05-07 121 2
10. 0,01uF конденсаторлар. 2018-05-07 121 2
11. 2.2uF конденсаторлар. 3
12. 47uF конденсаторлар. 2018-05-07 121 2
13. 1000uF конденсатор. 1
14. 470uF конденсатор. 1
15. 7805 кернеу реттегіші. 1
16. Әйелдер мен ерлердің тақырыптық жолағы. Әрқайсысы 1
17. Бөшке ұясының қосқышы. 1
18. 12 В 1 Ампер тұрақты ток адаптері. 1
19. SPST қосқышы. (Қосымша) 1
20. Үздік тақта. 1
2 -қадам: Техникалық сипаттамалар
Іріктеу жиілігі: 3840 сынама/сек
FFT бойынша сынамалар саны: 256
Жиілік ажыратымдылығы: 15 Гц
Жаңарту жиілігі: шамамен 15 Гц
Музыкалық ноталардың төменгі және жоғарғы таразылары дұрыс түсірілмеген. Төменгі ноталар төмен жиілікті ажыратудан зардап шегеді, ал жоғары жиіліктер іріктеудің төмен жылдамдығынан зардап шегеді. Ардуино жадында жоқ, сондықтан жақсы ажыратымдылыққа қол жеткізу мүмкін емес. Жақсы ажыратымдылық жаңарту жылдамдығының төмендеуіне байланысты болады, сондықтан айырбастау мүмкін емес. Гейзенбергтің белгісіздік принципінің Лейман нұсқасы.
Негізгі қиындық - ноталар арасындағы экспоненциалды интервал (суретте көрсетілгендей. Жиілік осіндегі әрбір импульс - музыкалық нота). LFT сияқты алгоритмдер көмектесе алады, бірақ бұл arduino Nano сияқты құрылғы үшін біршама жетілдірілген және күрделі емес.
3 -қадам: схемалар
Ескертпе: суреттердегі үш MOSFET пен бұрандалы терминалдар сізді мазаламаңыз. Бұл жоба үшін олар қажет емес. Микрофонның кіріс тақтасы алынбалы немесе оны модульдік деп атайтынына назар аударыңыз. Әр түрлі блоктардың шағын сипаттамасы төменде берілген.
1) Екі 470 Ом резисторы стерео дыбыстық сигналды моно дыбыстық сигналға біріктіреді. Сигналдың жерге тұйықталуы жерге тұйықталуға емес, виртуалды жерге түсетініне көз жеткізіңіз.
2) Келесі блок-лақап атауды болдырмау үшін кіріс сигналын шектеу үшін жауап беретін 2-ші дәрежелі төмен кілт сүзгісі. Біз тек +12 вольтпен жұмыс істейтіндіктен, кернеуді бөлу кернеуін бөлу арқылы оп-амперді бұрмалаймыз. бұл оп -амперді жеткізу 6 0 -6 вольтты қоректену (қос рельс) деп ойлайды, мұнда vg оп -күшейткіш үшін негізгі сілтеме болып табылады.
3) Содан кейін шығыс 6 вольтты тұрақты токтың ығысуын блоктау үшін сүзгіден өтеді және шамамен 0,55 вольтты тұрақты токпен қосылады, себебі ADC ішкі 1.1 врені Vref ретінде пайдалануға конфигурацияланады.
Ескерту: Электрлік микрофон үшін алдын ала күшейткіш интернеттегі ең жақсы схема емес. Оп-ампері бар схема жақсы таңдау болар еді. Біз жиілік реакциясы мүмкіндігінше тегіс болғанын қалаймыз. 47 килограммдық стерео кастрюль іріктеу жиілігінің жартысына тең болуы керек шектеу жиілігін анықтау үшін қолданылады. 10 кило Ом алдын ала орнатылған (ақ басы бар шағын кастрюль) фильтрдің пайдасы мен Q мәнін реттеу үшін қолданылады. Кернеуді Врефтің жартысына жақын етіп орнату үшін 10 келілік қайшыны кесетін ыдыс (металдың реттегіш тұтқасы бар, ол жалпақ басы бар бұрандаға ұқсайды) қолданылады.
Ескерту: Наноны ПК -ге қосқанда SPST қосқышын ашық күйде ұстаңыз, әйтпесе жабық. Бұлай жасамасаңыз, электр тізбегіне/компьютерге/кернеу реттегішіне немесе жоғарыда айтылғандардың кез келген комбинациясына зиян келтіруі мүмкін
4 -қадам: Қажетті қосымшалар мен IDE
- Arduino Nano кодтау үшін мен AVR 5.1 қарапайым студиясымен жүрдім, себебі бұл мен үшін жұмыс істейтін сияқты. Сіз орнатушыны осы жерден таба аласыз.
- Arduino Nano бағдарламалау үшін мен Xloader қолдандым.. Hex файлдарын Arduinos -қа жазу үшін жеңіл салмақты құралды қолдану өте оңай. Сіз оны осы жерден ала аласыз.
- Кішкентай бонустық шағын жоба мен схеманы реттеу үшін мен өңдеуді қолдандым. Сіз оны осы жерден ала аласыз, бірақ әр нұсқада үлкен өзгерістер бар, сондықтан эскизді жұмыс істеу үшін ескірген функциялармен айналысуға тура келуі мүмкін.
- FL studio немесе кез келген басқа MIDI өңдеуге арналған бағдарлама. Сіз FL studio шектеулі нұсқасын осы жерден тегін ала аласыз.
- Loop MIDI виртуалды MIDI портын жасайды және оны FL студиясы MIDI құрылғысы сияқты анықтайды. Дәл осының көшірмесін осы жерден алыңыз.
- Шашсыз MIDI COM портындағы MIDI хабарламаларын оқу және оны MIDI портына жіберу үшін қолданылады. Ол сонымен қатар MIDI хабарламаларын нақты уақытта жөндейді, бұл жөндеуді ыңғайлы етеді. Осы жерден Шашсыз MIDI алыңыз.
5 -қадам: Барлығына қатысты кодтар
Мен осы жобада қолданған FFT кітапханасы үшін MFG Electronic Lifes MFG -ге (мұнда веб -сайт !!) алғыс айтқым келеді. Кітапхана mega AVR отбасы үшін оңтайландырылған. Бұл кітапхана файлдары мен ол қолданған кодтардың сілтемесі. Мен төмендегі кодты тіркеймін. Оған өңдеу нобайы мен AVR C коды кіреді. Назар аударыңыз, бұл мен үшін жұмыс істейтін конфигурация, және егер сіз осы кодтардың арқасында бірдеңеге зақым келтірсеңіз, мен жауапкершілікті өз мойныма алмаймын. Сонымен қатар, кодты жұмыс істеуге тырысатын көптеген мәселелер болды. Мысалы, DDRD (Data Direction Register) кәдімгі DDRDx (x = 0-7) орнына бит маскасы ретінде DDDx (x = 0-7) болады. Құрастыру кезінде осы қателіктерге назар аударыңыз. Микроконтроллердің өзгеруі де осы анықтамаларға әсер етеді, сондықтан компиляция қателерімен айналысқанда осыған назар аударыңыз. Егер сіз жоба қалтасының неге DDT_Arduino_328p.rar деп аталатынын білгіңіз келсе, айтайық, мен бастаған кезде кеште қараңғы болды, мен шамдарды қоспай жалқау болдым.: P
Өңдеу эскизіне келетін болсақ, мен бұл эскизді жазу үшін 3.3.6 өңдеуді қолдандым. COM порт нөмірін эскизде қолмен орнату қажет. Сіз кодтағы түсініктемелерді тексере аласыз.
Егер маған кодтарды Arduino IDE -ге және өңдеудің соңғы нұсқасына жіберуге көмектесе алатын болса, мен қуанамын және әзірлеушілерге / салымшыларға несие беремін.
6 -қадам: оны орнату
- Кодты ашыңыз және #define pcvisual түсіндірілмеген және #define midi_out түсініктемесі бар кодты құрастырыңыз.
- Xloader бағдарламасын ашыңыз және каталогы бар каталогқа өтіңіз,.hex файлына өтіңіз және сәйкес тақта мен COM портын таңдау арқылы нано күйдіріңіз.
- Өңдеу эскизін ашып, сәйкес COM порт индексімен іске қосыңыз. Егер бәрі жақсы болса, сіз A0 түйреуішіндегі сигналдың спектрін көре аласыз.
- Бұрағышты алыңыз және триммер кастрюлін спектр тегіс болғанша бұраңыз (тұрақты ток компоненті нөлге жақын болуы керек). Содан кейін тақтаға ешқандай сигнал бермеңіз. (Микрофон модулін қоспаңыз).
- Енді микрофоннан тақтаға кіріс беру үшін спектрді бақылау үшін кез келген генераторды қолданыңыз.
- Егер сіз жиіліктердің таралуын көрмесеңіз, 47 кило Ом кедергісін өзгерту арқылы шектеу жиілігін азайтыңыз. Алдын ала орнатылған 10 килограмдық кастрюльді пайдалану арқылы кірісті көбейтіңіз. Осы параметрлерді өзгерту арқылы тегіс және көрнекті шолу нәтижесін алуға тырысыңыз. Бұл көңілді бөлік (кішкентай бонус!), Сүйікті әндеріңізді ойнаңыз және олардың нақты уақыт спектрінен ләззат алыңыз. (Видеоны қарау)
- Енді ендірілген С кодын бұл жолы #define pcvisual түсініктемесімен және #define midi_out түсініктемесімен қайта құрастырыңыз.
- Жаңа құрастырылған кодты arduino Nano -ға қайта жүктеңіз.
- LoopMidi ашыңыз және жаңа порт жасаңыз.
- FL студиясын немесе басқа MIDI интерфейсінің бағдарламалық жасақтамасын ашыңыз және MIDI порт параметрлерінде цикл midi портының көрінетініне көз жеткізіңіз.
- Ардуино қосылған ашық түксіз MIDI. LoopMidi порты болу үшін шығыс портын таңдаңыз. Параметрлерге өтіп, Baud жылдамдығын 115200 деп орнатыңыз. Енді Arduino Nano сәйкес келетін COM портын таңдап, портты ашыңыз.
- Микрофон жанында бірнеше «таза» дыбыстарды ойнатыңыз, сонда сіз MIDI бағдарламалық жасақтамасында тиісті нотаны естуіңіз керек. Егер жауап болмаса, C кодында анықталған up_threshold мәнін төмендетуге тырысыңыз. Егер жазбалар кездейсоқ іске қосылса, онда жоғары_шекті жоғарылатыңыз.
- Фортепиано алыңыз және сіздің жүйеңіз қаншалықты жылдам екенін тексеріңіз !! Ең дұрысы, алтын түстес ноталар аймағында ол бір мезгілде бірнеше пернені басуды оңай анықтай алады.
Ескерту: COM портына бір қолданба арқылы кіргенде, оны басқа бағдарлама оқи алмайды. Мысалы, егер Hairless MIDI COM портын оқыса, Xloader тақтаны жыпылықтай алмайды
7 -қадам: Нәтижелер/бейнелер
Әзірге балалар осылай! Сізге ұнайды деп үміттенемін. Егер сізде жобада қандай да бір ұсыныстар немесе жақсартулар болса, түсініктеме бөлімінде маған хабарлаңыз. Бейбітшілік!
Ұсынылған:
Нақты уақыттағы сағат модулін қалай қолдану керек (DS3231): 5 қадам
Нақты уақыттағы модульді қалай қолдану керек (DS3231): DS3231-бұл температурасы компенсацияланған кристалды осцилляторы (TCXO) мен кристалы бар, бағасы төмен, өте дәл I2C нақты уақыт сағаты (RTC). Құрылғы аккумуляторлық кірісті қамтиды және негізгі қуат қосылған кезде дәл уақытты сақтайды
Raspberry Pi мен OpenCV көмегімен нақты уақыттағы Рубик кубының көзін байлаған шешуші: 4 қадам
Raspberry Pi мен OpenCV көмегімен Рубик текшесінің көзін байлаған шешуші: бұл Рубиктің текше құралының көзді байлап шешуге арналған екінші нұсқасы. Бірінші нұсқа JavaScript арқылы жасалған, сіз RubiksCubeBlindfolded1 жобасын көре аласызБұрынғыдан айырмашылығы, бұл нұсқа OpenCV кітапханасын пайдаланып түстерді және
Нақты уақыттағы су деңгейінің өлшегіші: 6 қадам (суреттермен)
Нақты уақыттағы ұңғыманың су деңгейін өлшеу құралы: Бұл нұсқаулар қазылған ұңғымаларда пайдалану үшін арзан, нақты уақыттағы су деңгейін өлшеуішті қалай құруға болатынын сипаттайды. Су деңгейін өлшейтін құрал қазылған ұңғыманың ішіне ілініп, су деңгейін күніне бір рет өлшеп, деректерді WiFi немесе ұялы байланыс арқылы жіберуге арналған
Нақты уақыттағы судың температурасы, өткізгіштігі мен су деңгейін өлшеуіш: 6 қадам (суреттермен)
Нақты уақыттағы ұңғымадағы судың температурасы, өткізгіштігі мен су деңгейін өлшеуіш: Бұл нұсқаулықта температураны, электр өткізгіштігін (ЕС) және қазылған ұңғымалардағы су деңгейін бақылауға арналған арзан, нақты уақыттағы су есептегішін құру әдісі сипатталған. Есептегіш қазылған ұңғыманың ішіне ілінуге, судың температурасын өлшеуге арналған, EC және
Wiggly Wobbly - Дыбыс толқындарын қараңыз !! Нақты уақыттағы аудио визуализатор !!: 4 қадам
Wiggly Wobbly - Дыбыс толқындарын қараңыз !! Нақты уақыттағы аудио визуализатор !!: Сіз Beetle әндерінің қалай көрінетінін ойлап көрдіңіз бе? Немесе сіз жай ғана дыбыстың қалай көрінетінін көргіңіз келе ме? Сонда уайымдамаңыз, мен сізге оны қайта шығаруға көмектесу үшін келдім !!! Дауыс зорайтқышты көтеріп, өшкенді мақсат етіңіз