কিভাবে একটি Arduino দিয়ে একটি MIDI নিয়ামক তৈরি করবেন

কিভাবে একটি Arduino দিয়ে একটি MIDI নিয়ামক তৈরি করবেন

একজন সঙ্গীতশিল্পী হিসেবে যিনি বাদ্যযন্ত্র এবং নয়েজ বক্সের সংগ্রহ সংগ্রহ করেছেন, নম্র Arduino একটি কাস্টম MIDI কন্ট্রোলার তৈরি করার জন্য নিখুঁত হাতিয়ার। যদিও রাস্পবেরি পাই ইন্টারনেট অফ থিংস (আইওটি) প্রকল্পগুলির জন্য মুকুট গ্রহণ করতে পারে, একটি সাধারণ আরডুইনো ইউনো (বিভিন্ন ধরণের আরডুইনো কি?) এই প্রকল্পের জন্য পর্যাপ্ত ক্ষমতার চেয়ে বেশি।





প্রথমবারের মতো আরডুইনো ব্যবহার করছেন? কোন চিন্তা নেই, আমরা একটি সম্পূর্ণ পেয়েছি Arduino শিক্ষানবিস গাইড আপনি এই প্রকল্পটি মোকাবেলা করার আগে পড়ুন।





MIDI কি?

MIDI মানে মিউজিক্যাল ইন্সট্রুমেন্ট ডিজিটাল ইন্টারফেস। এটি বাদ্যযন্ত্রগুলির জন্য একে অপরের সাথে যোগাযোগের একটি আদর্শ উপায় রূপরেখা দেয়। আপনি যদি একটি বৈদ্যুতিন কীবোর্ডের মালিক হন তবে আপনার সম্ভবত একটি MIDI ইন্টারফেস রয়েছে। যদিও MIDI বাস্তবায়নে কিছু প্রযুক্তিগত বিবরণ জড়িত, এটা মনে রাখা গুরুত্বপূর্ণ যে MIDI অডিও নয়! MIDI ডেটা হল নির্দেশাবলীর একটি সহজ সেট (একটি নির্দেশনাকে 'বার্তা' বলা হয়) যা অন্য ডিভাইস বিভিন্ন শব্দ বা নিয়ন্ত্রণের পরামিতিগুলি প্রয়োগ করতে পারে।





MIDI 16 টি চ্যানেল সমর্থন করে। এর মানে হল যে প্রতিটি তারের 16 টি ভিন্ন ডিভাইসকে একে অপরের সাথে স্বাধীনভাবে যোগাযোগ করতে সহায়তা করতে পারে। ডিভাইসগুলি 5-পিন ডিআইএন কেবল ব্যবহার করে সংযুক্ত। ডিআইএন মানে 'জার্মান ইনস্টিটিউট ফর স্ট্যান্ডার্ডাইজেশন', এবং কেবল সংযোগকারীর ভিতরে পাঁচটি পিনযুক্ত একটি কেবল। ইউএসবি প্রায়ই 5-পিন ডিআইএন এর জায়গায় ব্যবহার করা হয়, অথবা একটি ইউএসবি-এমআইডিআই ইন্টারফেস ব্যবহার করা যেতে পারে।

MIDI- কেবল-পুরুষ



নিয়ন্ত্রণ পরিবর্তন এবং প্রোগ্রাম পরিবর্তন

দুটি প্রধান ধরনের MIDI বার্তা রয়েছে: নিয়ন্ত্রণ পরিবর্তন, এবং প্রোগ্রাম পরিবর্তন।

কন্ট্রোল চেঞ্জ (সিসি) মেসেজে একটি কন্ট্রোলার নম্বর এবং 0 থেকে 127 এর মধ্যে একটি মান থাকে। যেসব ডিভাইস MIDI গ্রহণ করে সেগুলি ম্যানুয়াল দিয়ে আসা উচিত যে কোন চ্যানেল এবং বার্তাগুলি ডিফল্টরূপে সেটআপ করা হয় এবং সেগুলি কীভাবে পরিবর্তন করা যায় (MIDI ম্যাপিং নামে পরিচিত)।





প্রোগ্রাম পরিবর্তন (পিসি) বার্তাগুলি সিসি বার্তার চেয়ে সহজ। পিসি বার্তাগুলি একটি একক সংখ্যা নিয়ে গঠিত, এবং একটি ডিভাইসে প্রিসেট বা প্যাচ পরিবর্তন করতে ব্যবহৃত হয়। পিসি বার্তাগুলি কখনও কখনও 'প্যাচ চেঞ্জ' নামে পরিচিত। সিসি বার্তার অনুরূপ, নির্মাতাদের একটি নির্দিষ্ট বার্তা দ্বারা কোন প্রিসেটগুলি পরিবর্তিত হয় তার একটি নথি প্রদান করা উচিত।

আপনার যা দরকার

  • আরডুইনো
  • 5-পিন DIN মহিলা সকেট
  • 2 x 220 ওহম প্রতিরোধক
  • 2 x 10k ওহম প্রতিরোধক
  • 2 x ক্ষণস্থায়ী সুইচ
  • হুক আপ তারের
  • ব্রেডবোর্ড
  • MIDI কেবল
  • MIDI ডিভাইস বা USB ইন্টারফেস
জল এবং কাঠ 5 পিসি DIN 5 পিন PCB মাউন্ট মহিলা সকেট পিসি কীবোর্ডের জন্য এখনই আমাজনে কিনুন

নির্মাণ পরিকল্পনা

এই প্রকল্পটি বেশ সহজ হবে। আপনি অবশ্যই আপনার প্রয়োজন অনুসারে আরও বোতাম বা হার্ডওয়্যার যুক্ত করতে পারেন। প্রায় কোন Arduino উপযুক্ত হবে - এই উদাহরণের জন্য শুধুমাত্র তিনটি পিনের প্রয়োজন। এই প্রকল্পটিতে প্রোগ্রাম নিয়ন্ত্রণের জন্য দুটি বোতাম, ডেটা পাঠানোর জন্য একটি MIDI পোর্ট এবং বার্তা গ্রহণের জন্য একটি ডিভাইস রয়েছে। এই সার্কিটটি এখানে একটি ব্রেডবোর্ডে তৈরি করা হয়েছে, তবে এটি একটি শক্তিশালী সমাধানের জন্য এটি একটি প্রজেক্ট বক্স এবং সোল্ডার সংযোগকারীতে স্থানান্তর করা সম্ভব।





সার্কিট সমাবেশ

Arduino-Midi- কন্ট্রোলার-সার্কিট

MIDI সংযোগ

MIDI- পিনআউট

নিম্নরূপ আপনার MIDI সকেট ওয়্যার আপ করুন:

  • MIDI পিন 5 থেকে Arduino Transmit (TX) 1 একটি 220 ওহম রোধের মাধ্যমে
  • একটি 220 ওহম রোধের মাধ্যমে MIDI পিন 4 Arduino +5V এ
  • MIDI Arduino স্থল 2 পিন

বোতাম সংযোগ

Arduino 'see' প্রতিরোধের পরিবর্তন করে বোতামগুলি কাজ করে। Arduino পিন সুইচ মাধ্যমে সরাসরি মাটিতে যায় ( কম ) একটি 10k ওহম প্রতিরোধকের মাধ্যমে (একটি 'পুল ডাউন' প্রতিরোধক, মান কম থাকে তা নিশ্চিত করে)। যখন বোতামটি চাপানো হয়, তখন সার্কিট দ্বারা দেখা মানটি প্রতিরোধক ছাড়াই +5v তে পরিবর্তিত হয় ( উচ্চ )। Arduino ব্যবহার করে এই পরিবর্তনটি সনাক্ত করতে পারে ডিজিটাল রিড (পিন) কমান্ড Arduino ডিজিটাল ইনপুট/আউটপুট (I/O) এ 6 এবং 7 পিনের বোতাম সংযুক্ত করুন। উভয় বোতাম সংযুক্ত করুন:

  • বোতামের বাম দিকে +5V
  • 10k ওহম প্রতিরোধকের মাধ্যমে Arduino গ্রাউন্ডে বোতামের ডান দিকে
  • Arduino পিনের বোতামের ডান দিকে (6 বা 7)

MIDI পরীক্ষা

এখন যেহেতু সমস্ত হার্ডওয়্যার সমাপ্ত, এটি পরীক্ষা করার সময়। আপনার একটি USB-MIDI ইন্টারফেস প্রয়োজন হবে (অনেক অডিও ইন্টারফেস এটি করতে পারে) এবং একটি MIDI কেবল। রুটিবোর্ডে ওয়্যার্ড করা MIDI পোর্ট ডেটা পাঠাচ্ছে, তাই এটি আউটপুট। আপনার কম্পিউটার ডেটা গ্রহণ করছে, তাই এটি ইনপুট। এই প্রকল্পটি চমৎকার Arduino ব্যবহার করে MIDI লাইব্রেরি v4.2 সাতচল্লিশটি প্রভাব দ্বারা। একবার আপনি লাইব্রেরি ইনস্টল করে নিলে, আপনি এটিকে আপনার কোডে অন্তর্ভুক্ত করতে পারেন স্কেচ> লাইব্রেরি অন্তর্ভুক্ত করুন> MIDI

ইনকামিং MIDI ডেটা পর্যবেক্ষণ করার জন্য আপনার একটি প্রোগ্রামের প্রয়োজন হবে:

আপনার কম্পিউটারে Arduino সংযুক্ত করুন এবং নিম্নলিখিত পরীক্ষা কোড আপলোড করুন (থেকে সঠিক বোর্ড এবং পোর্ট নির্বাচন করতে ভুলবেন না সরঞ্জাম> বোর্ড এবং সরঞ্জাম> পোর্ট মেনু)।

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

এই কোডটি একটি সিসি বার্তা পাঠাবে, 1 সেকেন্ড অপেক্ষা করুন, একটি পিসি বার্তা পাঠান তারপর অনির্দিষ্টকালের জন্য 1 সেকেন্ড অপেক্ষা করুন। যদি সবকিছু সঠিকভাবে কাজ করে তাহলে আপনার MIDI মনিটরে একটি বার্তা দেখা উচিত।

যদি কিছু না ঘটে, আতঙ্কিত হবেন না! সমস্যা সমাধানের চেষ্টা করুন:

  • নিশ্চিত করুন যে সমস্ত সংযোগ সঠিক
  • MIDI পোর্টটি সঠিকভাবে চেক করুন - বাইরের প্রান্তে 2 টি অতিরিক্ত পিন থাকা উচিত
  • সার্কিটটি সঠিক কিনা তা দুবার পরীক্ষা করুন
  • যাচাই করুন যে সার্কিটটি একটি MIDI কেবল দিয়ে একটি USB-MIDI ইন্টারফেসের সাথে সংযুক্ত
  • আপনার MIDI তারের সাথে সংযুক্ত আছে কিনা তা পরীক্ষা করুন ইনপুট আপনার USB-MIDI ইন্টারফেসে
  • Arduino শক্তি আছে তা নিশ্চিত করুন
  • আপনার USB-MIDI ইন্টারফেসের জন্য সঠিক ড্রাইভার ইনস্টল করুন

যদি তুমি হও এখনও সমস্যা থাকলে আপনার ব্রেডবোর্ড চেক করার মূল্য হতে পারে। সস্তা বোর্ডগুলি কখনও কখনও খুব অসঙ্গত এবং নিম্নমানের হতে পারে-এই প্রকল্পে কাজ করার সময় এটি আমার সাথে ঘটেছিল।

বোতাম পরীক্ষা

বোতামগুলি সঠিকভাবে কাজ করছে তা পরীক্ষা করার সময় এসেছে। নিম্নলিখিত পরীক্ষার কোড আপলোড করুন। এই অংশটি পরীক্ষা করার জন্য MIDI কে সংযুক্ত করার প্রয়োজন নেই।

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

এই কোডটি চালান (কিন্তু ইউএসবি কেবল সংযুক্ত রাখুন) এবং সিরিয়াল মনিটর খুলুন ( উপরের ডান> সিরিয়াল মনিটর )। যখন আপনি একটি বোতাম টিপেন তখন আপনার দেখতে হবে 'বোতাম এক কাজ করে!' বা 'বোতাম দুই কাজ!' আপনার চাপানো বোতামের উপর নির্ভর করে।

এই উদাহরণ থেকে একটি গুরুত্বপূর্ণ নোট রয়েছে-সফ্টওয়্যার ডি-বাউন্স। এটি একটি সহজ 10 মিলিসেকেন্ড (ms) বাটন চেক করা এবং তারপর আবার বোতাম চেক করার মধ্যে বিলম্ব। এটি বাটন প্রেসের নির্ভুলতা বাড়ায় এবং আরডুইনোকে ট্রিগার করা শব্দ প্রতিরোধে সহায়তা করে। আপনাকে এটি করতে হবে না, যদিও এটি সুপারিশ করা হয়েছে।

কন্ট্রোলার তৈরি করা

এখন যেহেতু সবকিছু তারযুক্ত এবং কাজ করছে, এটি সম্পূর্ণ নিয়ামক একত্রিত করার সময়।

এই উদাহরণটি চাপা প্রতিটি বোতামের জন্য একটি ভিন্ন সিসি বার্তা পাঠাবে। আমি ওএস এক্স -এ অ্যাবলটন লাইভ 9.6 নিয়ন্ত্রণ করতে এটি ব্যবহার করছি। কোডটি উপরের উভয় পরীক্ষার নমুনার অনুরূপ।

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

দ্রষ্টব্য - আপনি ব্যবহার করতে পারবেন না Serial.println () MIDI আউটপুট সহ।

আপনি যদি সিসির পরিবর্তে একটি পিসি বার্তা পাঠাতে চান তবে কেবল প্রতিস্থাপন করুন:

midiOut.sendControlChange(42,127,1);

সঙ্গে:

midiOut.sendProgramChange(value, channel);

কর্মে

নীচে জন্য একটি নিয়ামক হিসাবে একটি বিক্ষোভ অ্যাবলটন লাইভ ( প্রতিটি বাজেটের জন্য সেরা ডিজে সফটওয়্যার )। উপরের ডানদিকে অডিও মিটার দেখায়, এবং উপরের মধ্যভাগটি আগত মিডি বার্তাগুলি দেখায় (মাধ্যমে MIDI মনিটর ওএস এক্সে)।

গ্যালাক্সি ওয়াচ অ্যাক্টিভ 2 বনাম গ্যালাক্সি ওয়াচ 3

আপনি একটি MIDI নিয়ামক তৈরি করেছেন?

একটি কাস্টম MIDI নিয়ামক জন্য ব্যবহারিক ব্যবহার অনেক আছে। আপনি একটি বিশাল পা-নিয়ন্ত্রিত ইউনিট বা একটি মসৃণ স্টুডিও নিয়ামক তৈরি করতে পারেন। এবং যদি আপনি একটি কিনতে আগ্রহী হন, এখানে আপনি কিনতে পারেন এমন সেরা USB MIDI কন্ট্রোলার।

ইমেজ ক্রেডিট: Shutterstock.com এর মাধ্যমে কিথ জেন্ট্রি

আমরা আশা করি আপনি আমাদের প্রস্তাবিত আইটেমগুলি পছন্দ করবেন এবং আলোচনা করবেন! MUO এর অধিভুক্ত এবং পৃষ্ঠপোষক অংশীদারিত্ব রয়েছে, তাই আমরা আপনার কিছু ক্রয় থেকে রাজস্বের একটি অংশ পাই। এটি আপনার প্রদত্ত মূল্যকে প্রভাবিত করবে না এবং আমাদের সেরা পণ্যের সুপারিশ দিতে সাহায্য করবে।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল এটি কি উইন্ডোজ 11 এ আপগ্রেড করার যোগ্য?

উইন্ডোজ নতুন করে ডিজাইন করা হয়েছে। কিন্তু এটা কি আপনাকে উইন্ডোজ 10 থেকে উইন্ডোজ 11 এ স্থানান্তরিত করার জন্য যথেষ্ট?

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • DIY
  • ডিজে সফটওয়্যার
  • আরডুইনো
  • ইলেকট্রনিক্স
  • মাঝামাঝি
লেখক সম্পর্কে জো কোবার্ন(136 নিবন্ধ প্রকাশিত)

জো যুক্তরাজ্যের লিংকন বিশ্ববিদ্যালয় থেকে কম্পিউটার বিজ্ঞানে স্নাতক। তিনি একজন পেশাদার সফটওয়্যার ডেভেলপার, এবং যখন তিনি ড্রোন উড়াচ্ছেন না বা সঙ্গীত লিখছেন না, তখন তাকে প্রায়ই ফটো তুলতে বা ভিডিও তৈরি করতে দেখা যায়।

জো কোবার্ন থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন
বিভাগ Diy