اصنع وحدة تحكم MIDI الخاصة بك مع Arduino

الظهيرة

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

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

قم بإنشاء وحدة تحكم MIDI الخاصة بك باستخدام هذا البرنامج التعليمي البسيط

بمجرد أن نكون واضحين بشأن هذا ، سيكون بالتأكيد أسهل بكثير بالنسبة لك لفهم أن MIDI مجرد بسيط مجموعة تعليمات قادرة على دعم ما يصل إلى 16 قناة مستقلة، مما يعني أنه يمكن أن يكون هناك ما يصل إلى 16 جهازًا مختلفًا تتواصل بشكل مستقل مع بعضها البعض. يجب توصيل هذه الأجهزة من خلال كبل DIN خماسي السنون ، وهو في الأساس كبل به خمسة دبابيس داخل الموصل. كتفصيل ، من الشائع جدًا استخدام USB بدلاً من DIN ذي 5 سنون ، في حالة استخدام USB ، يجب إنشاء واجهة USB-MIDI.

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

المادة ذات الصلة:
كيفية تغيير اسم المستخدم وكلمة المرور Pi على Raspberry Pi الخاص بنا

كيف تصنع وحدة تحكم MIDI الخاصة بك مع Arduino

موصل ميدي

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

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

كيف تصنع روبوت
المادة ذات الصلة:
كيف تصنع روبوت: 3 خيارات مختلفة

ما هي وحدة تحكم MIDI؟

ميدي

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

داخل ميدي هناك نوعان مختلفانمن ناحية ، لدينا العنصر المسمى "التحكم في التغيير" حيث يحتوي على رقم وحدة التحكم وقيمة بين 0 و 127. وبفضل هذا ، يمكن إصدار رسائل حيث يمكن تغيير معلمات مختلفة مثل مستوى الصوت أو نغمة الصوت. يجب على الأدوات المختلفة التي تقبل MIDI إحضار دليل معهم يشرح القنوات والرسائل التي يتم تعيينها افتراضيًا وكيفية تغييرها.

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

الأجزاء المطلوبة لبناء وحدة تحكم MIDI محلية الصنع

تخطيطي موصل ميدي

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

سنحتاج إلى كبل DIN نسائي ذو 5 أقطاب ، ومقاومات 2 أوم ، ومفتاحين مؤقتين ، ومقاومين 220 كيلو أوم ، وأسلاك توصيل ، ولوحة دائرة كهربائية ، وكابل MIDI وجهاز MIDI أو واجهة USB. باستخدام هذه القطع فقط ، يمكنك البدء ، باتباع خطواتي ، لإنشاء وحدة تحكم MIDI الخاصة بك.

الخطوات الأولى

اردوينو ميدي التخطيطي

قبل البدء ، أترك لك صورة حيث يمكنك رؤية دبابيس كبل MIDI الخاص بك ، وبهذه الطريقة يمكننا تحديد المسامير بشكل صحيح وخاصة مكان توصيل كل منها. بشكل عام ، كل ما عليك فعله في هذه المرحلة هو توصيل دبوس 5 من الكبل بمقاوم 220 أوم ومن هناك إلى Arduino Transmit 1 ، والدبوس 4 بمقاوم 220 أوم ومن هناك إلى مقبس 5V من Arduino أثناء دبوس 2 يجب أن يكون متصلاً بالاتصال الأرضي لوحدة التحكم الخاصة بك.

بمجرد الانتهاء من هذه الخطوة ، ليس لديك رسم تخطيطي مفصل في الصورة الموجودة أسفل هذه الخطوط مباشرة ، فقد حان الوقت لتوصيل الأزرار. الفكرة في هذا القسم هي تحقيق ذلك ، باستخدام دبوس digitalRead (القادر على اكتشاف متى يتغير الجهد الذي يصل إليه) لتتمكن من استخدام الترانزستور لتحقيق ذلك ، بضغطة زر فقط. لهذا ، علينا فقط استخدام زر بحيث نقوم بتوصيل الجانب الأيسر منه بـ 5 فولت ، والجانب الأيمن بمقاومة 220 أوم ومن هناك إلى الأرض ، بينما نقوم بدورنا بتوصيل الجانب الأيمن بالدبوس 6. سيتم تثبيت الزر الثاني بنفس الطريقة على الرغم من أنه ، كما ترى في الرسم التخطيطي ، بدلاً من الدبوس 6 نقوم بتوصيله بـ 7.

برنامج لاستخدامه في جهاز تحكم ميدي المنزلي

بمجرد الانتهاء من جميع الأجهزة ، فقد حان الوقت لتوصيل أداتنا والاختبار. قبل ذلك نحتاج إلى الحصول على ملف واجهة USB-MIDI وكابل MIDI لتوصيل اللوحة التي ترسل البيانات بجهاز الكمبيوتر الخاص بنا. لتحقيق ذلك ، اخترنا مكتبة MIDI v4.2 التي أنشأها الرجال من Forty Seven Effects والتي يجب أن نكون قد قمنا بتثبيتها على Arduino الخاصة بنا وإدراجها في المشروع.

في حالة الكمبيوتر ، سنحتاج إلى برنامج قادر على الإشراف على جميع بيانات MIDI التي تصل إليه من Arduino. لهذا لدينا إمكانيات مختلفة مثل MIDI Monitor (OS X) أو MIDI-OX (Windows) أو Kmidimon (Linux)

لإجراء اختبار بسيط ، علينا فقط توصيل Arduino بجهاز الكمبيوتر الخاص بنا وتنفيذ الكود التالي:

#include
#include
#include
#include
#include

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // crear objeto de salida MIDI llamado midiOut

void setup() {
Serial.begin(31250); // configuracion de serial para MIDI
}

void loop() {
midiOut.sendControlChange(56,127,1); // envío de señal MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(1000); // retraso
midiOut.sendProgramChange(12,1); // envío de una señal MIDI PC -- 12 = valor, 1 = canal
delay(1000); // retraso de 1 segundo
}

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

اختبار أن الأزرار تعمل بشكل صحيح

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

const int boton1 = 6; // asignacion del boton a una variable
const int boton2 = 7; // asignacion del boton a una variable

void setup() {
Serial.begin(9600); // configuracion del serial
pinMode(boton1,INPUT); // configuracion del boton1 como entrada
pinMode(boton2,INPUT); // configuracion del boton2 como entrada
}

void loop() {

if(digitalRead(boton1) == HIGH) { // prueba de estado del boton1
delay(10); // retraso
if(digitalRead(boton1) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 1 funciona correctamente!"); // log
delay(250);
}
}

if(digitalRead(boton2) == HIGH) { // prueba de boton 2
delay(10); // retraso
if(digitalRead(boton2) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 2 funciona correctamente!"); // log
delay(250);
}
}

}

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

نقوم بإنشاء وحدة تحكم MIDI محلية الصنع

بمجرد تنفيذ هذه الاختبارات ، حان الوقت لتجميع وحدة تحكم MIDI الخاصة بنا لذلك ، سيكون عليك فقط تجميع الكود التالي:

#include
#include
#include
#include
#include

const int boton1 = 6; // asignamos boton a la variable
const int boton2 = 7; // asignamos boton a la variable

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {
pinMode(boton1,INPUT); // configuracion del boton1 como una entrada
pinMode(boton2,INPUT); // configuracion del boton2 como una entrada
Serial.begin(31250); // configuracion MIDI de salida
}

void loop() {
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado de nuevo
midiOut.sendControlChange(56,127,1); // envío un MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonTwo) == HIGH) { // nueva comprobacion de estado
midiOut.sendControlChange(42,127,1); // envío un MIDI CC -- 42 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}
}

كتفصيل ، أخبرك أنه لا يمكنك استخدام الأمر Serial.println () مع إخراج MIDI هذه المرة ، إذا كنت تريد إظهار نوع من الرسائل على الكمبيوتر ، فقم فقط بتغيير:

midiOut.sendControlChange(42,127,1);

بواسطة:

midiOut.sendControlChange(value, channel);

حيث يجب أن تحتوي القيمة والقناة على القيم المطلوبة التي تريد عرضها.

مثال على العملية:


4 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   ألفريد قال

    يوفر لك Arduino العديد من الاحتمالات للقيام بالمشاريع بنفسك https://www.juguetronica.com/arduino . أحد أفضل الأشياء هو أنه يمكنك البدء دون أن تكون خبيرًا والاستمرار في التعلم ، وبالتالي تحفيز نفسك على التعلم الذاتي.

  2.   دانيل رومان قال

    تحية.

    أحاول تنفيذ هذا البرنامج التعليمي الرائع ... لكن # يشتمل على ليست كاملة….

    هل يمكن أن تخبرني أيها ضروري؟

    شكرا جزيلا.

  3.   أويل قال

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

  4.   إدواردو فالينزويلا قال

    من فضلك ، إذا كان بإمكانك تقديم محتويات هذا الرمز ، فأنا مهتم بهذا المشروع.