جدول المحتويات:

في الوقت الحقيقي لتحويل الصوت إلى MIDI: 7 خطوات
في الوقت الحقيقي لتحويل الصوت إلى MIDI: 7 خطوات

فيديو: في الوقت الحقيقي لتحويل الصوت إلى MIDI: 7 خطوات

فيديو: في الوقت الحقيقي لتحويل الصوت إلى MIDI: 7 خطوات
فيديو: أفضل برنامج تغيير الصوت للكمبيوتر، تغيير الصوت في الوقت الحقيقي في أي تطبيقات 2024, شهر نوفمبر
Anonim
في الوقت الحقيقي لتحويل الصوت إلى MIDI
في الوقت الحقيقي لتحويل الصوت إلى MIDI

الناس ناماستي! هذا هو المشروع الذي عملت عليه في إحدى دوراتي (معالجة الإشارات الرقمية في الوقت الفعلي) في برنامج البكالوريوس الخاص بي. يهدف المشروع إلى إنشاء نظام DSP "يستمع" إلى البيانات الصوتية ويخرج رسائل MIDI من الملاحظات المقابلة عبر UART. تم استخدام Arduino Nano لهذا الغرض. قصة قصيرة طويلة ، تقوم وحدة التحكم الدقيقة بإجراء FFT على البيانات الصوتية الواردة وتقوم ببعض التحليلات للقمم وترسل رسالة MIDI المناسبة. لا تنزعج من MOSFETs على الرغم من أنها مخصصة لبعض المشاريع الأخرى (والتي سيتم طرحها لاحقًا في التعليمات أيضًا) وليست مطلوبة لهذا المشروع. لذلك دعونا نبدأ بالفعل !!

الخطوة 1: المكونات المطلوبة

المكونات مطلوبة
المكونات مطلوبة

سنحتاج إلى المكونات التالية لبناء هذا المشروع على الرغم من أن العديد منها عامة ويمكن استبدالها بمثيلاتها. راجع أيضًا مخطط الدائرة للعمل والبحث عن تطبيقات أفضل.

كمية المكون

1. Electret ميكروفون. 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.01 فائق التوهج. 2

11. 2.2 فائق التوهج المكثفات. 3

12. مكثفات 47 فائق التوهج. 2

13. 1000 فائق التوهج مكثف. 1

14. 470 فائق التوهج مكثف. 1

15. 7805 منظم جهد. 1

16. شريط رأس الأنثى والذكور. 1 كل

17. موصل جاك برميل. 1

18. محول 12 فولت 1 أمبير تيار مستمر. 1

19. مفتاح SPST. (اختياري) 1

20. بيرفبورد. 1

الخطوة الثانية: المواصفات الفنية

المواصفات الفنية
المواصفات الفنية

تردد أخذ العينات: 3840 عينة / ثانية

عدد العينات لكل FFT: 256

دقة التردد: 15 هرتز

معدل التحديث: حوالي 15 هرتز

لم يتم التقاط المقاييس الدنيا والعليا للنوتات الموسيقية بشكل صحيح. تعاني الملاحظات المنخفضة من دقة التردد المنخفض حيث تعاني الترددات الأعلى من معدلات أخذ العينات المنخفضة. نفدت ذاكرة اردوينو بالفعل ، لذا لا توجد طريقة للحصول على دقة أفضل. وستأتي الدقة الأفضل بتكلفة انخفاض معدل التحديث ، لذا فإن المقايضة أمر لا مفر منه. نسخة ليمان من مبدأ عدم اليقين لهايزنبرغ.

الصعوبة الأساسية هي التباعد الأسي بين النغمات (كما هو موضح في الشكل. كل نبضة على محور التردد هي نوتة موسيقية). قد تساعد الخوارزميات مثل LFT ولكن هذا متقدم قليلاً ومعقد قليلاً لجهاز مثل اردوينو نانو.

الخطوة 3: مخططات الدوائر

مخططات الدوائر
مخططات الدوائر
مخططات الدوائر
مخططات الدوائر
مخططات الدوائر
مخططات الدوائر
مخططات الدوائر
مخططات الدوائر

ملاحظة: لا تنزعج من وحدات MOSFET الثلاثة والأطراف اللولبية في الصور. ليست مطلوبة لهذا المشروع. لاحظ أن لوحة إدخال الميكروفون قابلة للإزالة أو كما يسمونها Modular. ويرد أدناه وصف صغير للكتل المختلفة.

1) تجمع المقاومات 470 أوم بين إشارة الصوت المجسم إلى إشارة الصوت الأحادية. تأكد من أن أرضية الإشارة تذهب إلى الأرض الافتراضية (vg في مخطط الدائرة) وليس إلى أرض الدائرة.

2) الكتلة التالية هي مرشح تمرير منخفض من الدرجة الثانية بمفتاح sallen وهو مسؤول عن النطاق الذي يحد من إشارة الإدخال لتجنب التشويش. نظرًا لأننا نعمل بإمداد + 12 فولت فقط ، فإننا نحيز op-amp عن طريق إنشاء مقسم جهد RC. هذا يخدع op-amp إلى التفكير في أن العرض هو 6 0 -6 volts Supply (سكة مزدوجة) حيث vg هو المرجع الأرضي لـ op amp.

3) ثم يتم ترشيح المخرجات لتمرير منخفض لمنع إزاحة التيار المستمر بمقدار 6 فولت ويقترن بتيار مستمر يبلغ حوالي 0.55 فولت لأن ADC سيتم تكوينه لاستخدام 1.1 فولت الداخلي مثل Vref.

ملاحظة: المضخم المسبق للميكروفون الكهربائي ليس أفضل دائرة على الإنترنت. الدائرة التي تتضمن op-amp ستكون خيارًا أفضل. نرغب في أن تكون استجابة التردد مسطحة قدر الإمكان. يتم استخدام وعاء استريو 47 كيلو أوم لتحديد تردد القطع الذي يجب أن يكون عادةً نصف تردد أخذ العينات. يتم استخدام الضبط المسبق 10 كيلو أوم (الوعاء الصغير ذو الرأس الأبيض) لضبط الكسب وقيمة Q للفلتر. يتم استخدام وعاء التشذيب بسعة 10 كيلو أوم (واحد بمقبض ضبط معدني يشبه برغي صغير مسطح الرأس) لضبط الجهد ليكون أقرب ما يكون إلى نصف Vref.

ملاحظة: عند توصيل Nano بـ PC. أبقِ مفتاح SPST مفتوحًا وإلا مغلق. احتفظ بعناية خاصة بهذا الإخفاق في القيام بذلك يمكن أن يضر بالدائرة / الكمبيوتر / منظم الجهد أو أي مزيج مما سبق

الخطوة 4: التطبيقات الضرورية و IDE

التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
التطبيقات الضرورية و IDEs
  1. لتشفير Arduino Nano ، ذهبت مع AVR studio 5.1 البدائي لأنه يبدو أنه يعمل بالنسبة لي. يمكنك العثور على المثبت هنا.
  2. لبرمجة Arduino Nano استخدمت Xloader. من السهل حقًا استخدام أداة خفيفة الوزن لنسخ ملفات.hex إلى Arduinos. يمكنك الحصول عليه هنا.
  3. بالنسبة لمشروع صغير مكافأة صغير وضبط الدائرة ، استخدمت المعالجة. يمكنك الحصول عليه من هنا على الرغم من إجراء تغييرات كبيرة في كل مراجعة ، لذلك قد تضطر إلى العبث بالوظائف المهملة لجعل الرسم يعمل.
  4. FL studio أو أي برنامج معالجة MIDI آخر. يمكنك الحصول على إصدار وصول محدود من FL studio مجانًا من هنا.
  5. ينشئ Loop MIDI منفذ MIDI افتراضيًا ويكتشفه FL studio كما لو كان جهاز MIDI. احصل على نسخة من نفس الشيء من هنا.
  6. يستخدم Hairless MIDI لقراءة رسائل MIDI من منفذ COM وإرسالها إلى منفذ حلقة MIDI. كما أنه يصحح أخطاء رسائل MIDI في الوقت الفعلي مما يجعل التصحيح مناسبًا. احصل على Hairless MIDI من هنا.

الخطوة 5: الرموز ذات الصلة بكل شيء

أود أن أشكر Electronic Lifes MFG (موقع الويب هنا !!) لمكتبة FFT الثابتة التي استخدمتها في هذا المشروع. تم تحسين المكتبة لعائلة AVR الضخمة. هذا هو الرابط لملفات المكتبة والأكواد التي استخدمها. أنا أرفق الكود الخاص بي أدناه. يتضمن رسم المعالجة ورمز AVR C أيضًا. يرجى ملاحظة أن هذا هو التكوين الذي نجح معي ولا أتحمل أي مسؤولية على الإطلاق إذا قمت بإتلاف أي شيء بسبب هذه الرموز. أيضًا ، كان لدي الكثير من المشكلات أثناء محاولة جعل الكود يعمل. على سبيل المثال ، يحتوي DDRD (سجل اتجاه البيانات) على DDDx (x = 0-7) كأقنعة بت بدلاً من DDRDx التقليدي (x = 0-7). احترس من هذه الأخطاء أثناء التجميع. يؤثر تغيير وحدة التحكم الصغيرة أيضًا على هذه التعريفات ، لذا راقب ذلك أيضًا أثناء التعامل مع أخطاء الترجمة. وإذا كنت تتساءل عن سبب تسمية مجلد المشروع DDT_Arduino_328p.rar ، حسنًا ، دعنا نقول فقط إنه كان مظلمًا جدًا في المساء عندما بدأت وكنت كسولًا بما يكفي لعدم تشغيل الأضواء.: ص

عند القدوم إلى رسم المعالجة ، استخدمت المعالجة 3.3.6 لكتابة هذا الرسم التخطيطي. ستحتاج إلى تعيين رقم منفذ COM في الرسم يدويًا. يمكنك التحقق من التعليقات في الكود.

إذا كان بإمكان أي شخص مساعدتي في نقل الرموز إلى Arduino IDE وأحدث إصدار معالجة ، فسأكون سعيدًا وسأمنح أرصدة للمطورين / المساهمين أيضًا.

الخطوة 6: الإعداد

  1. افتح الكود وقم بتجميع الكود باستخدام #define pcvisual uncommented و #define midi_out علق.
  2. افتح xloader واستعرض الدليل باستخدام الكود ، واستعرض ملف.hex وقم بنسخه على nano عن طريق تحديد اللوحة المناسبة ومنفذ COM.
  3. افتح مخطط المعالجة وقم بتشغيله باستخدام فهرس منفذ COM المناسب. إذا سارت الأمور على ما يرام ، يجب أن تكون قادرًا على رؤية طيف للإشارة على الدبوس A0.
  4. احصل على مفك لولبي وأدر وعاء التشذيب حتى يصبح الطيف مسطحًا (يجب أن يكون مكون التيار المستمر قريبًا من الصفر). لا تدخل أي إشارة إلى اللوحة بعد ذلك. (لا تقم بتوصيل وحدة الميكروفون).
  5. استخدم الآن أي أداة منشئ المسح مثل هذه لإعطاء مدخلات إلى اللوحة من الهاتف الصغير ومراقبة الطيف.
  6. إذا كنت لا ترى مسحًا للترددات ، فقم بتقليل تردد القطع عن طريق تغيير مقاومة 47 كيلو أوم. قم أيضًا بزيادة الكسب باستخدام وعاء معد مسبقًا سعة 10 كيلو أوم. حاول الحصول على ناتج مسح ضوئي مسطح وبارز عن طريق تغيير هذه المعلمات. هذا هو الجزء الممتع (المكافأة الصغيرة!) ، قم بتشغيل أغانيك المفضلة واستمتع بطيفها في الوقت الفعلي. (شاهد الفيديو)
  7. الآن قم بتجميع كود C المضمن مرة أخرى هذه المرة مع التعليق #define pcvisual و #define midi_out uncommented.
  8. قم بإعادة تحميل الكود المترجم الجديد إلى اردوينو نانو.
  9. افتح LoopMidi وأنشئ منفذًا جديدًا.
  10. افتح استوديو FL أو برنامج واجهة MIDI آخر وتأكد من أن منفذ حلقة midi مرئي في إعدادات منفذ MIDI.
  11. افتح MIDI الخالي من الشعر مع توصيل اردوينو. حدد منفذ الإخراج ليكون منفذ LoopMidi. انتقل إلى الإعدادات وقم بتعيين معدل Baud ليكون 115200. الآن حدد منفذ COM المطابق لـ Arduino Nano وافتح المنفذ.
  12. قم بتشغيل بعض النغمات "النقية" بالقرب من الميكروفون ويجب أن تسمع صوت النغمة المقابلة في برنامج MIDI أيضًا. إذا لم تكن هناك استجابة ، فحاول خفض up_threshold المحدد في كود C. إذا تم تشغيل الملاحظات بشكل عشوائي ، فقم بزيادة حد up_threshold.
  13. احصل على البيانو الخاص بك واختبر مدى سرعة نظامك !! أفضل شيء هو أنه في منطقة القفل الذهبي للملاحظات ، يمكنه بسهولة اكتشاف العديد من ضغطات المفاتيح المتزامنة بسهولة.

ملاحظة: عندما يتم الوصول إلى منفذ COM من قبل تطبيق لا يمكن قراءته من قبل تطبيق آخر. على سبيل المثال ، إذا كان Hairless MIDI ws يقرأ منفذ COM ، فلن يتمكن Xloader من وميض اللوحة

الخطوة 7: النتائج / مقاطع الفيديو

هذا كل شيء الآن يا شباب! أتمني أن تعجبك. إذا كان لديك أي اقتراحات أو تحسينات في المشروع ، فأعلمني بذلك في قسم التعليقات. سلام!

موصى به: