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

وحدة تحكم Arduino MIDI الأساسية: 5 خطوات
وحدة تحكم Arduino MIDI الأساسية: 5 خطوات

فيديو: وحدة تحكم Arduino MIDI الأساسية: 5 خطوات

فيديو: وحدة تحكم Arduino MIDI الأساسية: 5 خطوات
فيديو: كيف تستخدم Bluetooth module HC-05 مع الأردوينو و ارسال و استقبال البيانات 2024, شهر نوفمبر
Anonim
وحدة تحكم Arduino MIDI الأساسية
وحدة تحكم Arduino MIDI الأساسية

مقدمة:

أنا جديد في العمل مع Arduino ولكني آمل أن أقوم بتوسيع معرفتي من خلال تعليم الآخرين وتلقي التعليقات. هذه وحدة تحكم MIDI أساسية جدًا بأربعة أزرار ومقياس جهد. يبدو مخطط هذا المشروع كما يلي:

1. بناء اللوح

2. قم بتحميل المخطط على Arduino

3. فهم عديم الشعر MIDI وحلقة MIDI الداخلية (loopbe1)

4. قم بتوجيه MIDI الخاص بك إلى DAW (Ableton)

اللوازم

1 × أردوينو ميجا 2560

1 × لوحة الخبز

1 × كابل يو اس بي

1 × مقياس الجهد

4 × أزرار اللباقة

مقاومات 4 × 120 أوم

14 × كابلات توصيل للوح

الخطوة 1: بناء اللوح

بناء اللوح
بناء اللوح
بناء اللوح
بناء اللوح

قم بتوصيل اللوح الخاص بك حتى تتطابق جميع المكونات مع الصورة 1 أعلاه. يجب أن يبدو كل زر كما هو الحال في الصورة 2. مدخلات الزر هي 2 و 3 و 4 و 5 على Arduino ويتم توصيل الدبوس الأوسط لمقياس الجهد بمدخل ANALOG A0.

الخطوة الثانية: تحميل الرسم التخطيطي

تحميل الرسم
تحميل الرسم

انسخ والصق الكود أدناه في Arduino IDE. حدد اللوحة الصحيحة ضمن "الأدوات" وقم بتحميل المخطط على Arduino.

بايت noteON = 144 ؛ // ملاحظة على مذكرة الأوامر ؛ // تخزين لتشغيل الملاحظة int buttonPin1 = 2 ؛ int buttonPin2 = 3 ؛ int buttonPin3 = 4 ؛ int buttonPin4 = 5 ؛ int potPin = A0 ؛ boolean currentState = LOW؛ // stroage لحالة الزر الحالية boolean lastState = LOW؛ // تخزين لآخر حالة زر إعداد باطل () {pinMode (buttonPin1، INPUT) ؛ pinMode (buttonPin2 ، الإدخال) ؛ pinMode (buttonPin3 ، الإدخال) ؛ pinMode (buttonPin4 ، الإدخال) ؛ // هذه المرة سنقوم بتعيين الدبوس كـ INPUT Serial.begin (9600) ؛ // تهيئة الاتصال التسلسلي} حلقة فارغة () {int PotVal = analogRead (potPin) ؛ سرعة البايت = خريطة (PotVal ، 0 ، 1023 ، 0 ، 127) ؛ CurrentState = digitalRead (buttonPin1) ؛ if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON، 60، velocity)؛ // قم بتشغيل الملاحظة 60 مع تأخير 127 للسرعة (200) ؛ // شكل خام من زر debouncing} وإلا إذا (currentState == LOW && lastState == HIGH) {MIDImessage (noteON، 60، 0)؛ // turn note 60 off delay (2)؛ // raw form of button debouncing} lastState = currentState؛ CurrentState = digitalRead (buttonPin2) ؛ if (currentState == HIGH && lastState == LOW) {// إذا تم الضغط على الزر للتو MIDImessage (noteON، 61، velocity)؛ // قم بتشغيل الملاحظة 60 مع 127 سرعة تأخير (200)؛ // شكل خام من الزر debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON، 60، 0)؛ // turn note 60 off delay (2)؛ // raw form of button debouncing} lastState = currentState؛ CurrentState = digitalRead (buttonPin3) ؛ if (currentState == HIGH && lastState == LOW) {// إذا تم الضغط على الزر للتو MIDImessage (noteON، 62، velocity)؛ // قم بتشغيل الملاحظة 60 مع 127 سرعة تأخير (200)؛ // شكل خام من الزر debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON، 60، 0)؛ // turn note 60 off delay (2)؛ // raw form of button debouncing} lastState = currentState؛ CurrentState = digitalRead (buttonPin4) ؛ if (currentState == HIGH && lastState == LOW) {// إذا تم الضغط على الزر للتو MIDImessage (noteON، 63، velocity)؛ // قم بتشغيل الملاحظة 60 مع 127 سرعة تأخير (200) ؛ // شكل خام من الزر debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON، 60، 0)؛ // turn note 60 off delay (2)؛ // raw form of button debouncing} lastState = currentState؛ } // send MIDI message void MIDImessage (أمر بايت ، بيانات بايت 1 ، بيانات بايت 2) {Serial.write (أمر) ؛ Serial.write (data1) ؛ Serial.write (بيانات 2) ؛ }

ما زلت جديدًا جدًا في كتابة الكود بشكل عام….. يمكن لمن لديهم خبرة أكبر أن ينظفوا هذا الأمر على الأرجح …

الخطوة الثالثة: فهم حلقات MIDI الداخلية

فهم حلقات MIDI الداخلية و MIDI بدون شعر
فهم حلقات MIDI الداخلية و MIDI بدون شعر
فهم حلقات MIDI الداخلية و MIDI بدون شعر
فهم حلقات MIDI الداخلية و MIDI بدون شعر
فهم حلقات MIDI و MIDI الداخلية بدون شعر
فهم حلقات MIDI و MIDI الداخلية بدون شعر

يحتاج Arduino إلى المرور عبر جسر تسلسلي مثل Hairless MIDI ثم عبر حلقة MIDI داخلية مثل loopbe1 (أو ناقل IAC لنظام التشغيل Mac).

ملاحظة: لا يمكنك تحميل رسم تخطيطي إلى Arduino أثناء توصيله بجسر MIDI التسلسلي الخالي من الشعر.

حدد Arduino في المنفذ التسلسلي Hairless MIDI و loopbe1 أو ناقل IAC في مخرج MIDI.

ملاحظة: تأكد من عدم تشغيل كتم الصوت عند استخدام loopbe1.

الخطوة 4: الاتصال بالمنصة الصوتية الرقمية الخاصة بك

الاتصال بالمنصة الصوتية الرقمية الخاصة بك
الاتصال بالمنصة الصوتية الرقمية الخاصة بك

إذا كنت تتلقى إشارة إلى تطبيق Hairless MIDI عند الضغط على زر على لوحة التجارب (ستومض الأضواء) ، فيجب أن تكون قادرًا على إرسال بيانات MIDI إلى منصة DAW. لقد استخدمت Ableton ولكن يجب أن تعمل أي منصة عمل صوتية. تأكد من تمكين حلقة MIDI الداخلية (loopbe1) في تفضيلات DAW (في Ableton تريد تمكين "المسار"). بعد ذلك ، حدد أحد مدخلات مسار MIDI الخاص بك إلى حلقة MIDI (loopbe1) كما هو موضح في الصورة أعلاه.

الخطوة 5: العب

Image
Image

ستعمل الأزرار الآن مثل أي وحدة تحكم MIDI أخرى! سيغير مقياس الجهد سرعة الملاحظات التي يتم إرسالها إلى منصة العمل الصوتية. يُظهر مقطع الفيديو (المظلم جدًا …) أعلاه صوت بيانو كبير أثناء العمل!

موصى به: