فهرست مطالب:
- مرحله 1: اجزای مورد نیاز
- مرحله 2: مشخصات فنی
- مرحله 3: نمودارهای مدار
- مرحله 4: برنامه های کاربردی و IDE های لازم
- مرحله 5: کدهای مربوطه برای همه چیز
- مرحله 6: تنظیم آن
- مرحله 7: نتایج/فیلم ها
تصویری: تبدیل صوتی به MIDI در زمان واقعی: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
مردم نامسته! این پروژه ای است که من در یکی از دوره های خود (پردازش سیگنال دیجیتال در زمان واقعی) در برنامه کارشناسی خود کار کردم. هدف این پروژه ایجاد یک سیستم DSP است که به داده های صوتی "گوش می دهد" و پیامهای MIDI یادداشت های مربوطه را از طریق UART خروجی می دهد. برای این منظور از آردوینو نانو استفاده شد. به طور خلاصه میکروکنترلر روی داده های صوتی ورودی 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 کیلو اهم. 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. اتصال جک بشکه. 1
18. آداپتور DC 12 V 1 آمپر. 1
19. سوئیچ SPST. (اختیاری) 1
20. تخته چوبی. 1
مرحله 2: مشخصات فنی
فرکانس نمونه برداری: 3840 نمونه در ثانیه
تعداد نمونه در هر FFT: 256
وضوح فرکانس: 15 هرتز
نرخ تازه سازی: حدود 15 هرتز
مقیاس های پایین و بالاتر نت های موسیقی به درستی ضبط نشده است. نت های پایینی از وضوح فرکانس پایین رنج می برند در حالی که فرکانس های بالاتر از نرخ نمونه برداری پایین رنج می برند. آردوینو در حال حاضر حافظه ندارد بنابراین راهی برای دستیابی به وضوح بهتر وجود ندارد. و وضوح بهتر با هزینه کاهش نرخ تجدید می شود ، بنابراین مبادله اجتناب ناپذیر است. نسخه لیمن اصل عدم قطعیت هایزنبرگ
مشکل اصلی فاصله نمایی بین نت ها است (همانطور که در شکل مشاهده می شود. هر ضربه در محور فرکانس یک نت موسیقی است). الگوریتم هایی مانند LFT ممکن است کمک کنند ، اما برای دستگاهی مانند arduino Nano کمی پیشرفته و کمی پیچیده است.
مرحله 3: نمودارهای مدار
توجه: از سه ماسفت و پایانه های پیچ موجود در تصاویر اذیت نشوید. آنها برای این پروژه مورد نیاز نیستند. توجه داشته باشید که برد ورودی میکروفون قابل جابجایی است یا همانطور که آنها آن را Modular می نامند. شرح کوچکی از بلوک های مختلف در زیر آورده شده است.
1) دو مقاومت 470 اهم ، سیگنال صوتی استریو را با سیگنال صوتی مونو ترکیب می کنند. اطمینان حاصل کنید که سیگنال ورودی به زمین مجازی (در نمودار مدار vg) می رود و به زمین مدار نمی رسد.
2) بلوک بعدی یک فیلتر پایین گذر سالن کلید درجه 2 است که وظیفه محدود کردن باند سیگنال ورودی را برای جلوگیری از aliasing دارد. از آنجا که ما فقط با منبع تغذیه +12 ولت کار می کنیم ، با ایجاد تقسیم کننده ولتاژ RC ، op-amp را تعصب می کنیم. که op -amp را فریب می دهد و فکر می کند که منبع تغذیه 6 0 -6 ولت (ریل دوگانه) است که در آن vg مرجع اصلی آمپر است.
3) سپس خروجی کم عبور فیلتر می شود تا جریان ولتاژ DC 6 ولت را مسدود کرده و با DC حدود 0.55 ولت همراه شود زیرا ADC پیکربندی می شود تا از 1.1 ولت داخلی به عنوان Vref استفاده کند.
توجه: پیش تقویت کننده میکروفن الکترت بهترین مدار در اینترنت نیست. یک مدار شامل op-amp انتخاب بهتری بود. ما آرزو می کنیم که پاسخ فرکانسی تا آنجا که ممکن است مسطح باشد. دیگ استریو 47 کیلو اهم برای تعریف فرکانس قطع استفاده می شود که باید به طور معمول نصف فرکانس نمونه برداری باشد. از پیش تعیین شده 10 کیلو اهم (گلدان کوچک با سر سفید) برای تنظیم افزایش و مقدار Q فیلتر استفاده می شود. قابلمه تریمر 10 کیلو اهم (یکی با دستگیره تنظیم فلزی که شبیه پیچ کوچک سر تخت است) برای تنظیم ولتاژ نزدیک به نصف Vref استفاده می شود.
توجه: هنگام اتصال Nano به P. C. سوئیچ SPST را باز نگه دارید در غیر این صورت بسته است. مراقب باشید در صورت عدم انجام این کار می تواند به مدار/کامپیوتر/تنظیم کننده ولتاژ یا هر ترکیبی از موارد بالا آسیب برساند
مرحله 4: برنامه های کاربردی و IDE های لازم
- برای برنامه نویسی Arduino Nano ، من با استودیوی اولیه AVR 5.1 رفتم ، زیرا به نظر می رسد برای من کار می کند. در اینجا می توانید نصب کننده را پیدا کنید.
- برای برنامه نویسی Arduino Nano از Xloader استفاده کردم. استفاده از ابزار سبک وزن برای رایت فایل های hex در Arduinos بسیار آسان است. می توانید آن را از اینجا دریافت کنید.
- برای کمی پروژه کوچک پاداش و تنظیم مدار ، من از پردازش استفاده کردم. می توانید آن را از اینجا دریافت کنید ، هرچند تغییرات عمده ای را در هر نسخه ایجاد کنید ، بنابراین ممکن است مجبور شوید با عملکردهای منسوخ کنار بیایید تا طرح کار کند.
- FL studio یا هر نرم افزار پردازش MIDI دیگر. از اینجا می توانید نسخه دسترسی محدود FL studio را به صورت رایگان دریافت کنید.
- حلقه MIDI یک پورت MIDI مجازی ایجاد می کند و توسط FL studio به عنوان یک دستگاه MIDI تشخیص داده می شود. یک نسخه از همان را از اینجا دریافت کنید.
- MIDI بدون مو برای خواندن پیامهای MIDI از پورت COM و ارسال آن به پورت MIDI حلقه استفاده می شود. همچنین پیام های MIDI را در زمان واقعی اشکال زدایی می کند که اشکال زدایی را راحت می کند. MIDI بدون مو را از اینجا تهیه کنید.
مرحله 5: کدهای مربوطه برای همه چیز
من می خواهم از Electronic Lifes MFG (وب سایت اینجا !!) برای کتابخانه FFT نقطه ثابت که در این پروژه استفاده کردم تشکر کنم. کتابخانه برای خانواده AVR مگا بهینه شده است. این پیوند فایل ها و کدهای کتابخانه ای است که او استفاده کرده است. کد زیر را ضمیمه می کنم. این شامل طرح پردازش و کد AVR C نیز می باشد. لطفاً توجه داشته باشید که این پیکربندی برای من کار کرده است و اگر به دلیل این کدها به چیزی آسیب برسانید ، هیچ مسئولیتی نمی پذیرم. همچنین ، من برای کارکردن کد مشکلات زیادی داشتم. به عنوان مثال ، DDRD (Data Direction Register) به جای DDRDx معمولی (x = 0-7) دارای DDDx (x = 0-7) به عنوان ماسک بیت است. هنگام تدوین مراقب این خطاها باشید. همچنین تغییر میکرو کنترلر بر این تعاریف تأثیر می گذارد ، بنابراین هنگام برخورد با خطاهای کامپایل ، این مورد را نیز زیر نظر داشته باشید. و اگر تعجب می کنید که چرا پوشه پروژه DDT_Arduino_328p.rar نامیده می شود ، خوب بگذارید بگوییم که عصر هنگام شروع کار بسیار تاریک بود و من آنقدر تنبل بودم که چراغ ها را روشن نمی کردم.:پ
با آمدن به طرح پردازش ، از پردازش 3.3.6 برای نوشتن این طرح استفاده کردم. شما باید شماره پورت COM را در طرح به صورت دستی تنظیم کنید. می توانید نظرات موجود در کد را بررسی کنید.
اگر کسی می تواند به من در انتقال کدها به Arduino IDE و آخرین نسخه پردازشی کمک کند ، خوشحال می شوم و به توسعه دهندگان / مشارکت کنندگان نیز اعتبار می دهم.
مرحله 6: تنظیم آن
- کد را باز کنید و کد را با #تعریف pcvisual بدون کامنت و #تعریف نظرات متوسط تعریف کنید.
- xloader را باز کرده و فهرست را با کد مرور کنید ، فایل.hex را مرور کرده و با انتخاب برد مناسب و درگاه COM آن را در nano بسازید.
- طرح پردازش را باز کرده و با شاخص پورت COM مناسب اجرا کنید. اگر همه چیز خوب پیش رفت ، باید بتوانید طیفی از سیگنال را در پین A0 مشاهده کنید.
- یک پیچ گوشتی بگیرید و گلدان اصلاح را بچرخانید تا طیف صاف شود (قطعه DC باید نزدیک صفر باشد). پس هیچ سیگنالی به برد وارد نکنید. (ماژول میکروفون را وصل نکنید).
- اکنون از هر ابزار تولید کننده رفت و برگشت مانند این برای ورود ورودی به برد از طریق میکرو تلفن و مشاهده طیف استفاده کنید.
- اگر رفت و برگشت فرکانس ها را مشاهده نمی کنید ، با تغییر مقاومت 47 کیلو اهم ، فرکانس قطع را کاهش دهید. همچنین با استفاده از قابلمه از پیش تعیین شده 10 کیلو اهم ، سود را افزایش دهید. سعی کنید با تغییر این پارامترها یک خروجی رفت و برگشت صاف و برجسته به دست آورید. این بخش سرگرم کننده است (پاداش کمی!) ، آهنگ های مورد علاقه خود را پخش کنید و از طیف زمان واقعی آنها لذت ببرید. (فیلم را ببینید)
- حالا این بار کد C جاسازی شده را مجدداً با #تعریف کامنت های بصری و بدون تعریف ، تعریف کنید.
- کد کامپایل شده جدید را روی arduino Nano بارگذاری کنید.
- LoopMidi را باز کرده و یک پورت جدید ایجاد کنید.
- FL studio یا سایر نرم افزارهای رابط MIDI را باز کنید و مطمئن شوید که پورت midi حلقه در تنظیمات پورت MIDI قابل مشاهده است.
- MIDI بدون مو را با آردوینو متصل کنید. پورت خروجی را انتخاب کنید تا پورت LoopMidi باشد. به تنظیمات بروید و نرخ Baud را 115200 قرار دهید. حالا پورت COM مربوط به آردوینو نانو را انتخاب کرده و پورت را باز کنید.
- در نزدیکی میکروفون چند صدای "خالص" پخش کنید و باید صدای ضبط مربوطه را در نرم افزار MIDI نیز بشنوید. در صورت عدم پاسخگویی سعی کنید آستانه up_threshold که در کد C تعریف شده است را کاهش دهید. اگر یادداشت ها به طور تصادفی فعال می شوند ، آستانه بالا را افزایش دهید.
- پیانو خود را بگیرید و سرعت سیستم خود را آزمایش کنید !! بهترین کار این است که در قسمت قفل طلایی یادداشت ها می توان به راحتی چندین کلید همزمان را به راحتی تشخیص داد.
توجه: وقتی یک برنامه به پورت COM دسترسی پیدا می کند ، دیگر برنامه نمی تواند آن را بخواند. به عنوان مثال ، اگر MIDI بدون مو ، پورت COM را بخواند ، Xloader نمی تواند برد را فلش کند
مرحله 7: نتایج/فیلم ها
فعلا همین است بچه ها! امیدوارم دوست داشته باشید. اگر پیشنهاد یا پیشرفتی در پروژه دارید ، در قسمت نظرات به من اطلاع دهید. آرامش!
توصیه شده:
نحوه استفاده از ماژول ساعت در زمان واقعی (DS3231): 5 مرحله
نحوه استفاده از ماژول ساعت در زمان واقعی (DS3231): DS3231 یک ساعت زمان واقعی کم هزینه و بسیار دقیق I2C (RTC) با نوسان ساز بلوری با جبران دما (TCXO) و کریستال است. این دستگاه دارای ورودی باتری است و زمان دقیق را در زمان تغذیه اصلی حفظ می کند
حل کننده مکعب روبیک در زمان واقعی با استفاده از Raspberry Pi و OpenCV: 4 مرحله
حل کننده مکعب روبیک در زمان واقعی با استفاده از Raspberry Pi و OpenCV: این دومین نسخه از ابزار مکعب روبیک است که برای حل با چشم بسته ساخته شده است. نسخه اول توسط javascript توسعه یافته است ، می توانید پروژه RubiksCubeBlindfolded1 را مشاهده کنید بر خلاف نسخه قبلی ، این نسخه از کتابخانه OpenCV برای تشخیص رنگها و
Wiggly Wobbly - امواج صوتی را ببینید !! زمان واقعی صوتی بصری !!: 4 مرحله
Wiggly Wobbly - امواج صوتی را ببینید !! Real Time Audio Visualizer !!: آیا تا به حال فکر کرده اید که آهنگ های Beetle چگونه به نظر می رسند؟ یا فقط می خواهید ببینید که چگونه صدایی به نظر می رسد ؟؟ پس نگران نباشید ، من اینجا هستم تا به شما کمک کنم تا بتوانید آن را درست کنید! بلندگو را بلند کنید و رنگ محو شده را هدف بگیرید
تبدیل دوربین فیلمبرداری دهه 1980 به تصویرگر قطبی سنج زمان واقعی: 14 مرحله (همراه با تصاویر)
تبدیل دوربین فیلمبرداری دهه 1980 به تصویرگر قطبی سنج در زمان واقعی: تصویربرداری پلاریمتریک راهی را برای توسعه برنامه های تغییر بازی در طیف وسیعی از زمینه ها ارائه می دهد & ndash؛ شامل همه موارد از نظارت بر محیط زیست و تشخیص پزشکی گرفته تا برنامه های امنیتی و ضدتروریسم. با این حال ، بسیار
نحوه تبدیل جریانهای صوتی واقعی به فایلهای MP3: 7 مرحله
چگونه می توان جریانهای صوتی واقعی را به فایل های MP3 تبدیل کرد: سلام! احتمالاً برخی از شما به محتویات صوتی یا برنامه های پخش شده از رادیوهای وب توسط Real Audio Player یا Real Audio Plug-in مرورگر وب گوش می دهید. PROBLEM این فایلها اغلب به صورت جریان پخش می شوند ، اما معمولاً امکان بارگیری آنها برای