جدول المحتويات:
- اللوازم
- الخطوة الأولى: فهم التدفق
- الخطوة 2: ضبط الخادم - Ngrok
- الخطوة 3: ضبط الخادم - Node-Red
- الخطوة 4: ضبط الخادم - MQTT (Mosquitto)
- الخطوة 5: الكود
- الخطوة 6: اطبع النموذج ثلاثي الأبعاد
- الخطوة 7: التجميع واللحام
- الخطوة 8: العب بعض الحلقات مع أصدقائك
فيديو: اللحن: 8 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
إلى جانب المزايا العديدة والحلول التكنولوجية التي تسمح بالعمل من المنزل ، تظل صعوبة صياغة وخلق دعم الحياة بين زملاء العمل. MELODY هو جهاز رقمي فيزيائي يتيح إنشاء اختصارات موسيقية تعاونية قصيرة. ينسق زملاء العمل الوقت ويقوم الجهاز بتعيين جلسة ازدحام مع عدد من الأدوار وأصوات عشوائية مختلفة. يحدد المشارك الأول إيقاعًا محددًا ، وبعد ذلك يضيف كل مشارك قسمه الموسيقي الخاص به وفقًا للإيقاع المحدد. من أجل تسهيل الأمر على المستخدمين الذين ليس لديهم خلفية موسيقية ، يساعدهم البرنامج على مواكبة ذلك من خلال أخذ عينات من نقراتهم والتكيف مع الإيقاع المناسب. تنتهي الجلسة بعد حوالي 3 دقائق عندما ينتهي جميع المشاركين من تسجيل الجزء الخاص بهم.
كيف يعمل؟
يعتمد ميلودي على أجهزة ESP2866 ، التي تتصل بخادم Node-Red عبر بروتوكول MQTT. يقوم الجهاز بترجمة ملاحظات اللاعب إلى سلسلة من الأحرف التي يتم إرسالها إلى الخادم ومن الخادم إلى اللاعبين الآخرين. يتيح ذلك للجميع العزف وسماع النغمة دون انقطاع من اتصال الشبكة.
يحتوي اللحن على مؤشرين بصريين رئيسيين. الأول عبارة عن شريط LED يتيح للاعب معرفة وقت بدء Loop ومتى ينتهي ويشير إلى ما إذا كان دور اللاعب. والثاني هو شاشة LED في وسط المنتج ، والتي تُستخدم لعرض اللحن الموجود بصريًا. يشير العد التنازلي من 3 إلى 1 إلى بدء اللعب ويوجه عرض التوقيت المستخدم متى وكيف تريد المساهمة في نغمة المجموعة. يتم حفظ التسجيل تلقائيًا في سحابة الشركة لاستخدامها في المستقبل.
تم تصميم هذا المشروع من قبل أربعة طلاب في مختبر الابتكار الإعلامي (MiLab) في مركز هرتسليا متعدد التخصصات (IDC): شاهار آجاسي ، إيدن بار-توف ، غال إششار ، وجاد ستيرن. بمساعدة Zvika Markfeld و Netta Ofer و Michal Leschinsky وتوجيهات Noa Morag و Oren Zuckerman.
شكرًا لـ Tom Granot لإنشاء تعليمات رائعة ساعدتني في تعلم كيفية تنفيذ بعض الأشياء هنا (تم تصميم بعض الخطوات هنا على غرار هذه التعليمات الرائعة).
اللوازم
- طابعة 3D
- ESP8266
- 7 أزرار
- مصفوفة 8X8 LED
- شريط إضاءة LED WS2812B
- مضخم I2S
- مقبس صوت 4 أقطاب أنثى 1/8 بوصة (3.5 ملم)
- 4X 1K المقاوم
- 1X3K المقاوم
الخطوة الأولى: فهم التدفق
حاولنا في هذا المشروع معالجة بعض المشكلات:
- كيف يمكننا جعلها على الإنترنت ، بحيث يمكن للاعبين اللعب في نفس الوقت؟
- كيف يمكننا تجاوز فترات انتقال الإنترنت وإنشاء تجربة سلسة؟
- كيف يمكننا جعل الموسيقى تبدو جيدة حتى للأشخاص الذين ليس لديهم خلفية موسيقية؟
توقيت وتسلسل الموسيقى
من أجل حل المشكلة الأولى ، نظرنا إلى بروتوكول MIDI وحاولنا استخدامه ، لكننا رأينا أنه أكثر قوة مما نحتاجه بالفعل ، كما أردنا حقًا أن نجعله بسيطًا حتى نتمكن من بناء أول نموذج أولي يعمل. لذلك أخذنا الإلهام من MIDI وجعلنا الحلقة الموسيقية الخاصة بنا ممثلة بسلسلة من الأرقام (من 0-5) أضعاف حجم الحلقات وقت العازفين (سنشرح كل الرياضيات الموسيقية لاحقًا).
في الموسيقى ، نقسم الإيقاعات إلى أشرطة موسيقية. كل شريط هو في الأساس مقطع لوقت قصير نختار استخدام 4/4 (أي 4 دقات في شريط موسيقي) - الأكثر شيوعًا.
يتم بعد ذلك تقسيم كل نبضة إلى 4 نوافذ لأخذ العينات بحيث يتم محاذاة كل نغمة يتم تشغيلها تلقائيًا إلى موضع جيد c وتسمح لنا أيضًا بتمثيل أغنية كسلسلة من الأرقام لإرسالها إلى الخادم.
من أجل أن نكون ودودين مع اللاعبين الذين ليس لديهم خلفية موسيقية ، قمنا بثلاثة أشياء:
- حدد عدد المفاتيح لجعل اللاعب يركز على خيارات أقل.
- لقد اخترنا نغمات على نفس المقياس تعمل جيدًا معًا حتى لا يكون هناك أي صوت تنافر.
- يتم تعيين كل ضغطة على "نافذة" الإيقاع وبالتالي عزل موسيقى المشغل عن الإيقاع
بروتوكولات الاتصال
إذن بعد أن فهمنا المنطق الكامن وراء الموسيقى ، كيف يمكننا توصيلها بين لاعبينا؟
لذلك ، نستخدم MQTT ، وهو بروتوكول شبكة اشتراك للنشر ينقل الرسائل بين الأجهزة.
يتم اشتراك كل لاعب في موضوعين: الحلقة (الحصول على أحدث حلقة) والدور (يحصل على معرف المشغل الحالي لأغراض المزامنة).
بدوره ، عندما ينتهي اللاعب من تشغيل النغمة ، سيضغط على الزر UP وسيتم إرسال الحلقة (المحدثة) إلى وسيط MQTT ، والذي سيرسلها مرة أخرى إلى جميع اللاعبين في قناة الحلقة.
ستبقى هذه الحلقة "كامنة" حتى تنتهي الحلقة الحالية من اللعب ثم تستبدلها. وبالتالي ستكون شفافة للاعب. أيضًا نظرًا لأن الحلقة الجديدة يتم حفظها حاليًا محليًا على جهاز المشغل ، فلا يوجد زمن انتقال للموسيقى عبر الإنترنت ، لذلك قمنا بحل المشكلة الثانية.
الخطوة 2: ضبط الخادم - Ngrok
ngrok هي خدمة حفر أنفاق. يتيح لنا الكشف عن خدمة تعمل محليًا (في حالتنا ، Node-RED) للعالم الخارجي - دون متاعب إعداد خادم أو التعامل مع سجلات DNS. يمكنك ببساطة تشغيل Node-RED على جهاز الكمبيوتر الخاص بك ، ثم تشغيل ngrok على نفس المنفذ الذي يعمل عليه Node-RED.
هذا كل شيء - ستحصل على عنوان URL يمكنك استخدامه للوصول إلى Node-RED من أي مكان في العالم ، بغض النظر عن الشبكة التي تتصل بها.
التثبيت والتكوين
- قم بتنزيل ngrok لنظام التشغيل الخاص بك من هنا.
- اتبع الخطوة في صفحة التنزيل ، حتى خطوة "Fire it up".
- في "Fire it up step" ، استبدل 80 بـ 1883 - و http إلى tcp كما في./ngrok tcp 1883 اعتمادًا على
- احفظ عنوان URL ورقم المنفذ (الذي رأيناه في الصورة) سنحتاج إلى ، لاحقًا.
الخطوة 3: ضبط الخادم - Node-Red
منطق الخادم للمشروع ، Node-RED هو بيئة برمجة مرئية تسمح لك بتوصيل العديد من البرامج (والأجهزة!).
هنا قمنا بعمل منطق التواصل بين جميع اللاعبين (مشاركة واستقبال الحلقات وتنسيق المنعطفات)
تثبيت Node-Red
اتبع الخطوات التالية لتحميل تدفق Node-RED على جهاز الكمبيوتر المحلي الخاص بك:
- يتطلب Node-RED Node.js ، قم بتثبيته من هنا
- قم بتثبيت Node-RED نفسها باستخدام الإرشادات الموجودة هنا.
الآن بعد أن قمت بتثبيت Node-RED ، قم بتشغيله باستخدام الإرشادات الموجودة في الخطوة أعلاه وتحقق من صحة أنه يمكنك رؤية صفحة قماشية فارغة. يجب أن يكون موجودًا في
ستحتاج الآن إلى استيراد التدفق الذي استخدمناه لهذا المشروع ، يمكنك العثور عليه هنا والضغط فقط على استيراد إضافة ملف JSON والضغط على Deploy.
تثبيت Node-Red:
إذا نظرت إلى الصورة المرفقة بهذه الخطوة ، يمكنك أن ترى أن لدينا "إجراءين" رئيسيين ، نتلقى حلقة حالية من أحد لاعبينا ثم ننقلها إلى جميع اللاعبين الآخرين. بالإضافة إلى ذلك ، نبث الدور الجديد لجميع اللاعبين. حتى تظل اللعبة متزامنة.
الخطوة 4: ضبط الخادم - MQTT (Mosquitto)
نظرًا لأن Node-RED ليس لديها وسيط MQTT خاص بها ، وسنحتاج إلى التواصل مع أجهزة الاستشعار والمنشطات لدينا عبر MQTT ، سنستخدم وسيط MQTT مخصصًا. نظرًا لأن Node-RED توصي بـ Mosquitto ، فهذا هو ما سنستخدمه. انظر هنا للحصول على بعض المعلومات حول MQTT ولماذا يتم استخدامه غالبًا في مشاريع إنترنت الأشياء.
التثبيت والتكوين
- قم بتنزيل Mosquitto من هنا وقم بتثبيته ، كل ذلك وفقًا لنظام التشغيل الخاص بك.
- عادة ، ستحتاج إلى اتباع التعليمات الواردة هنا لتوصيل Node-RED بـ Mosquitto. ومع ذلك ، إذا استخدمت التدفق الخاص بنا ، فسيتم تكوينه مسبقًا من أجلك. طالما قمت بتثبيت التدفق و Mosquitrro بشكل صحيح ، ويعمل Mosquitto على المنفذ 1883 (الذي يعمل عليه افتراضيًا) ، يجب أن يعمل خارج الصندوق.
- لاحظ أن هذا يعني أن وسيط MQTT وخادم Node-RED يعملان على نفس الجهاز. هذا مفيد لتبسيط الاتصال داخل النظام. انظر الملاحظة أدناه لمزيد من المعلومات.
مراقبة حركة المرور MQTT
لقد استخدمت MQTTfx لمراقبة حركة المرور ، إنها أداة رائعة مع واجهة مستخدم رسومية بسيطة للغاية.
الخطوة 5: الكود
يمكنك العثور على الكود في GitHub (مع جميع ملفات البيانات و config.h)
التبعيات:
قبل تحميل الكود إلى esp2866 ، ستحتاج إلى تثبيت بعض المكتبات:
- libmad-8266 (فك تشفير الموسيقى من SPIFF إلى I2S)
- EspMQTTClient
- واي فاي
- Adafruit_NeoPixel
قم بتحميل الأصوات إلى ESP باستخدام SPIFF:
- اتبع هذا التدريب الرائع.
- إضافة مجلد البيانات إلى دليل التعليمات البرمجية المصدر.
- في Arduino IDE ضمن الأدوات ، قم بتغيير حجم الفلاش إلى "4 ميجا بايت (FS: 3 ميجا بايت TOA: ~ 512 كيلو بايت)"
- أيضًا ضمن أدوات ، اضغط على ESP2866 Sketch Data Upload
ضبط المعلمات:
بعد ذلك ، انتقل إلى ملف config.h وأضف البيانات المطلوبة مثل بيانات اعتماد WIFI وعنوان URL الخاص بـ ngrok والمنفذ من الخطوة السابقة (تحقق من الصورة المرفقة للرجوع إليها).
p.s - لقد أضفت حتى الآن ميزة الاتصال التلقائي لمساعدتك في تعيين بيانات WIFI و ngrok من هاتفك الذكي ، نظرًا لأنها كانت مجرد إثبات أولي للمفهوم ، أود إضافتها يومًا ما.
حدد مقدار اللاعب الذي تريده (تعمل هذه اللعبة بشكل أفضل مع 2-3 لاعبين ويتم تحميلها خارج الصندوق بمجموعة من الأصوات للاعبين 2). ولكن يمكن تعديلها بسهولة لمزيد من المعلومات:
لكل لاعب إضافة تدفق آخر في العقدة الحمراء لنشر حلقة في موضوع خاص بالمستخدم.
أيضًا ، يمكنك تحرير الصوت الموسيقي عن طريق ضبط هذه المجموعة على أصواتك المخصصة:
هنا يمكنك رؤية 3 أنواع من الآلات (Chrods for player 0 و Lead for player 1 و Bass for player 2)
مسارات حرف * ثابتة [NUMofNotes] = {"/blank1.wav"، "/Chords_Am.wav"، "/Chords_F.wav"، "/Chords_C.wav"، "/Chords_G.wav"، "/Chords_Dm.wav" ، "/blank2.wav" ، "/Lead_C.wav" ، "/Lead_D.wav" ، "/Lead_E.wav" ، "/Lead_G.wav" ، "/Lead_A.wav" ، "/blank0.wav" ، "/Bass_C3.wav"، "/Bass_D3.wav"، "/Bass_F3.wav"، "/Bass_G3.wav"، "/Bass_A3.wav"} ؛
الخطوة 6: اطبع النموذج ثلاثي الأبعاد
للخطوة الأولى ، قم بتنزيل STL وطباعتها.
بعد إزالة الدعامات وربما القليل من الصنفرة (حسب دقة الطابعة)
قم برسمه على اللون المطلوب
الخطوة 7: التجميع واللحام
إذن هنا هو المكان الذي يحدث فيه السحر الحقيقي.
يمكنك اتباع هذه الخطط ولحام كل شيء معًا.
ضع في اعتبارك أنه يمكنك تغيير موضع أرقام التعريف الشخصية ، فقط تذكر تغييرها في الرمز أيضًا.
تم إصلاح كل من A0 و I2S في مكانهما:
نظرًا لأن A0 مخصص لجسر المقاوم (نستخدم الاختلاف في التيار لمعرفة الزر الذي تم الضغط عليه من أصل 5 - على غرار Instructables.
يحتوي I2S على ترميز محدد يمكنك العثور عليه هنا
الخطوة 8: العب بعض الحلقات مع أصدقائك
موصى به:
كيف تصنع عداد خطوات؟: 3 خطوات (بالصور)
How to Make Step Counter؟: اعتدت أن أؤدي أداءً جيدًا في العديد من الرياضات: المشي والجري وركوب الدراجة ولعب كرة الريشة وما إلى ذلك ، أحب ركوب الخيل للسفر في وقت قريب. حسنًا ، انظر إلى بطني المنتفخ … حسنًا ، على أي حال ، قررت إعادة التمرين. ما هي المعدات التي يجب أن أحضرها؟
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): 6 خطوات
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): هل تريد تخويف أصدقائك وإحداث بعض ضوضاء الصراخ في عيد الهالوين؟ أو تريد فقط عمل مزحة جيدة؟ يمكن لشاشة الزومبي المنبثقة القيام بذلك! في هذا Instructable ، سوف أعلمك كيفية جعل زومبي القفز للخارج بسهولة باستخدام Arduino. HC-SR0
وحدة تحكم أتاري بانك مع جهاز التسلسل 8 خطوات للأطفال: 7 خطوات (بالصور)
وحدة التحكم Atari Punk مع جهاز التسلسل المكون من 8 خطوات للأطفال: هذا التصميم الوسيط هو وحدة التحكم Atari Punk المتكاملة وجهاز التسلسل 8 خطوات للأطفال الذي يمكنك طحنه على آلة طحن PCB لسطح المكتب من Bantam Tools. إنها مكونة من لوحين للدائرة: أحدهما عبارة عن لوحة واجهة مستخدم (UI) والآخر عبارة عن لوحة مساعدة
صندوق اللحن: 4 خطوات (بالصور)
ميلودي بوكس: مرحبًا ، لقد صنعت صندوقًا به 3 أزرار مع كل لحن مختلف ، كل لحن له لون LED مختلف ويستمر عند عزف نغمة ، كلما ضغطت على & quot؛ forward & quot؛ زر اللحن يسير بشكل أسرع الأشياء التي تحتاجها:
اللحن التلقائي: 7 خطوات
Autotune: Bienvenue dans notre projet Autotune! Notre & eacute؛ quipe vous pr & eacute؛ senter la r & eacute؛ alisation de ce projet. Notre & eacute؛ quipe est compos & eacute؛ e de 3 & eacute؛ l & egrave؛ ves ing & eacute؛ nieurs de Polytech Sorbonne en EISE4 (4 & egrave؛ me ann