সুচিপত্র:

মেলোডি: 8 টি ধাপ (ছবি সহ)
মেলোডি: 8 টি ধাপ (ছবি সহ)

ভিডিও: মেলোডি: 8 টি ধাপ (ছবি সহ)

ভিডিও: মেলোডি: 8 টি ধাপ (ছবি সহ)
ভিডিও: ঘুমানোর সময় ঘাড়ে উকুন উঠে গেলো #cartoon 2024, জুলাই
Anonim
Image
Image
প্রবাহ বোঝা
প্রবাহ বোঝা

বাড়ি থেকে কাজ করার অনুমতি দেয় এমন অনেক সুবিধা এবং প্রযুক্তিগত সমাধানের পাশাপাশি, সহকর্মীদের মধ্যে জীবন সহায়তা তৈরি এবং তৈরি করার অসুবিধা রয়ে গেছে। মেলোডি একটি ডিজিটাল-ফিজিক্যাল ডিভাইস যা সহযোগী সংক্ষিপ্ত মিউজিক্যাল জ্যাম তৈরি করতে সক্ষম করে। সহকর্মীরা সময় সমন্বয় করে এবং ডিভাইসটি মোড় এবং বিভিন্ন এলোমেলো শব্দ সহ একটি জ্যাম সেশন সেট করে। প্রথম অংশগ্রহণকারী একটি সুনির্দিষ্ট ছন্দ নির্ধারণ করে, তার পর প্রত্যেক অংশগ্রহণকারী সেট তালের সাথে সংশ্লিষ্ট তাদের নিজস্ব সঙ্গীত বিভাগ যোগ করে। কোন সঙ্গীত পটভূমি ছাড়া ব্যবহারকারীদের জন্য এটি সহজ করার জন্য, সফ্টওয়্যার তাদের ক্লিকের নমুনা এবং যথাযথ তালের সাথে সামঞ্জস্য করে তাদের গতি বজায় রাখতে সাহায্য করে। প্রায় minutes০ মিনিট পরে সেশন শেষ হয় যখন সকল অংশগ্রহণকারীরা তাদের অংশ রেকর্ড করা শেষ করে।

এটা কিভাবে কাজ করে?

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

মেলোডির দুটি প্রধান চাক্ষুষ সূচক রয়েছে। প্রথমটি হল একটি এলইডি স্ট্রিপ যা খেলোয়াড়কে লুপ কখন শুরু হয় এবং কখন শেষ হয় এবং ইঙ্গিত দেয় যে এটি খেলোয়াড়ের পালা কিনা। দ্বিতীয়টি পণ্যের কেন্দ্রে একটি LED ডিসপ্লে, যা বিদ্যমান টিউনটি দৃশ্যত প্রদর্শনের জন্য ব্যবহৃত হয়। 3 থেকে 1 পর্যন্ত একটি কাউন্টডাউন খেলা শুরু করার ইঙ্গিত দেয় এবং একটি টাইমিং ডিসপ্লে ব্যবহারকারীকে নির্দেশ করে যে সে কখন এবং কীভাবে গ্রুপের মেলোডিতে অবদান রাখতে চায়। ভবিষ্যতে ব্যবহারের জন্য রেকর্ডিং স্বয়ংক্রিয়ভাবে কোম্পানির ক্লাউডে সংরক্ষিত হয়।

এই প্রকল্পটি মিডিয়া ইনোভেশন ল্যাব (MiLab) এর আন্তiscবিষয়ক কেন্দ্র হার্জলিয়া (IDC) এর চারজন শিক্ষার্থী ডিজাইন করেছিলেন: শাহর আগাসি, ইডেন বার-টভ, গাল এশচার এবং গ্যাড স্টার্ন। Zvika Markfeld, Netta Ofer এবং Michal Leschinsky এর সহযোগিতায় এবং Noa Morag এবং Oren Zuckerman এর নির্দেশনায়।

টম গ্রানটকে ধন্যবাদ একটি দুর্দান্ত নির্দেশিকা তৈরির জন্য যা আমাকে এখানে কিছু জিনিস বাস্তবায়ন করতে শিখতে সাহায্য করেছে (এখানে কিছু পদক্ষেপ এই মহান নির্দেশের পরে তৈরি করা হয়েছে)।

সরবরাহ

  • 3D প্রিন্টার
  • ESP8266
  • 7 বোতাম
  • 8X8 LED ম্যাট্রিক্স
  • WS2812B LED স্ট্রিপ
  • I2S পরিবর্ধক
  • মহিলা 1/8 "(3.5 মিমি) 4 মেরু অডিও জ্যাক
  • 4X 1K প্রতিরোধক
  • 1X3K প্রতিরোধক

ধাপ 1: প্রবাহ বোঝা

প্রবাহ বোঝা
প্রবাহ বোঝা
প্রবাহ বোঝা
প্রবাহ বোঝা

এই প্রকল্পে আমরা কিছু সমস্যা মোকাবেলা করার চেষ্টা করেছি:

  1. আমরা কিভাবে এটি অনলাইনে করতে পারি, যাতে খেলোয়াড়রা একই সাথে খেলতে পারে?
  2. আমরা কিভাবে ইন্টারনেট বিলম্বের কাছাকাছি যেতে পারি এবং একটি নির্বিঘ্ন অভিজ্ঞতা তৈরি করতে পারি?
  3. বাদ্যযন্ত্রের পটভূমি ছাড়া মানুষের জন্য আমরা কীভাবে সঙ্গীতকে ভালো করে তুলতে পারি?

সঙ্গীতের সময় এবং সিরিয়ালাইজেশন

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

সংগীতে, আমরা ছন্দগুলিকে মিউজিক্যাল বারে বিভক্ত করি। প্রতিটি বার মূলত একটি ছোট সময়ের বিভাগ যা আমরা 4/4 (একটি বাদ্যযন্ত্র বারে 4 বিট মানে) ব্যবহার করতে পছন্দ করি - সবচেয়ে সাধারণ।

প্রতিটি বীট তারপর 4 টি স্যাম্পলিং উইন্ডোতে বিভক্ত করা হয় যাতে বাজানো প্রতিটি নোট স্বয়ংক্রিয়ভাবে একটি ভাল অবস্থানে সংযুক্ত থাকে এবং আমাদের সার্ভারে পাঠানোর জন্য সংখ্যার একটি স্ট্রিং হিসাবে একটি গান উপস্থাপন করতে দেয়।

বাদ্যযন্ত্রের পটভূমি ছাড়াই খেলোয়াড়দের সাথে বন্ধুত্বপূর্ণ হওয়ার জন্য আমরা তিনটি জিনিস করেছি:

  1. কম বিকল্পে প্লেয়ারকে ফোকাস করতে কীগুলির সংখ্যা সীমিত করুন।
  2. আমরা একই স্কেলে নোট বাছাই করেছি যা একসাথে ভালভাবে খেলে যাতে কোনও অসঙ্গতির শব্দ না হয়।
  3. প্রতিটি প্রেস ছন্দের "উইন্ডো" তে সেট করা হয় এভাবে প্লেয়ার মিউজিককে ছন্দে বিচ্ছিন্ন করে

যোগাযোগ প্রোটোকল

সুতরাং আমরা সংগীতের পিছনে যুক্তি বোঝার পরে, আমরা কীভাবে এটি আমাদের খেলোয়াড়দের মধ্যে যোগাযোগ করতে পারি?

এর জন্য, আমরা MQTT ব্যবহার করি, একটি প্রকাশ-সাবস্ক্রাইব নেটওয়ার্ক প্রোটোকল যা ডিভাইসের মধ্যে বার্তা পরিবহন করে।

প্রতিটি খেলোয়াড় দুটি বিষয়ে সাবস্ক্রাইব করা হয়: লুপ (সর্বাধিক বর্তমান লুপ পান) এবং পালা (সিঙ্কের উদ্দেশ্যে বর্তমান প্লেয়ারের আইডি পায়)।

তাদের পালাক্রমে যখন একজন প্লেয়ার টিউন বাজানো শেষ করে তখন সে ইউপি বোতাম টিপবে এবং লুপটি (আপডেট করা) এমকিউটিটি ব্রোকারের কাছে পাঠানো হবে, যা লুপ চ্যানেলের সমস্ত খেলোয়াড়দের কাছে এটি ফেরত পাঠাবে।

বর্তমান লুপটি খেলা শেষ না হওয়া পর্যন্ত এই লুপটি "সুপ্ত" থাকবে এবং তারপর এটি প্রতিস্থাপন করবে। সুতরাং এটি খেলোয়াড়ের কাছে স্বচ্ছ হবে। এছাড়াও যেহেতু নতুন লুপটি বর্তমানে প্লেয়ার ডিভাইসে স্থানীয়ভাবে সংরক্ষিত আছে সেখানে সঙ্গীতের জন্য ইন্টারনেট বিলম্ব নেই তাই আমরা দ্বিতীয় সমস্যাটি সমাধান করেছি।

ধাপ 2: সার্ভার সেট করা - Ngrok

সার্ভার সেট করা হচ্ছে - এনগ্রোক
সার্ভার সেট করা হচ্ছে - এনগ্রোক
সার্ভার সেট করা হচ্ছে - এনগ্রোক
সার্ভার সেট করা হচ্ছে - এনগ্রোক

এনগ্রোক একটি টানেলিং পরিষেবা। এটি আমাদের একটি স্থানীয়ভাবে চলমান পরিষেবা (আমাদের ক্ষেত্রে, নোড -রেড) বহির্বিশ্বে প্রকাশ করতে দেয় - একটি সার্ভার স্থাপন বা ডিএনএস রেকর্ড নিয়ে কাজ করার ঝামেলা ছাড়াই। আপনি কেবল আপনার কম্পিউটারে Node-RED চালান, এবং তারপর একই পোর্টে ngrok চালান Node-RED চলছে।

এটিই হল - আপনি একটি ইউআরএল পাবেন যা আপনি বিশ্বের যেকোনো জায়গা থেকে নোড -রেড অ্যাক্সেস করতে ব্যবহার করতে পারেন, এটি কোন নেটওয়ার্কের সাথে সংযুক্ত তা নির্বিশেষে।

ইনস্টলেশন এবং কনফিগারেশন

  1. আপনার অপারেটিং সিস্টেমের জন্য ngrok ডাউনলোড করুন এখান থেকে।
  2. "ফায়ার ইট আপ" ধাপ পর্যন্ত ডাউনলোড পৃষ্ঠার ধাপটি অনুসরণ করুন।
  3. "ফায়ার ইট আপ স্টেপ" -এ, 1883 -এর জন্য 80 টি অদলবদল করুন -
  4. ইউআরএল এবং পোর্ট নম্বর সংরক্ষণ করুন (ছবিতে দেখা গেছে) আমাদের পরে প্রয়োজন হবে।

ধাপ 3: সার্ভার সেট করা - নোড -রেড

সার্ভার সেট করা - নোড -রেড
সার্ভার সেট করা - নোড -রেড

প্রকল্পের সার্ভার লজিক, নোড-রেড একটি ভিজ্যুয়াল প্রোগ্রামিং পরিবেশ যা আপনাকে বিভিন্ন সফটওয়্যার (এবং হার্ডওয়্যার!) সংযুক্ত করতে দেয়।

এখানে আমরা সমস্ত খেলোয়াড়দের মধ্যে যোগাযোগের যুক্তি তৈরি করেছি (লুপগুলি ভাগ করে নেওয়া এবং গ্রহণ করা এবং পালা সমন্বয় করা)

নোড-রেড ইনস্টল করুন

আপনার স্থানীয় কম্পিউটারে আমাদের নোড-রেড ফ্লো লোড করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. Node-RED এর জন্য Node.js প্রয়োজন, এটি এখান থেকে ইনস্টল করুন
  2. এখানে নির্দেশাবলী ব্যবহার করে নিজেই নোড-রেড ইনস্টল করুন।

এখন যেহেতু আপনি নোড-রেড ইনস্টল করেছেন, উপরের ধাপে নির্দেশাবলী ব্যবহার করে এটি চালান এবং যাচাই করুন আপনি একটি খালি ক্যানভাস পৃষ্ঠা দেখতে পারেন। এটি https://127.0.0.1:1880 এ অবস্থিত হওয়া উচিত

আমরা এখন এই প্রজেক্টের জন্য যে প্রবাহটি আমরা ব্যবহার করেছি তা আমদানি করতে হবে, আপনি এটি এখানে খুঁজে পেতে পারেন এবং কেবল আমদানি টিপুন JSON ফাইল যোগ করুন এবং স্থাপন করুন টিপুন।

নোড-রেড ইনস্টল করুন:

আপনি যদি এই ধাপের সাথে সংযুক্ত ছবিটি দেখেন তবে আপনি দেখতে পাবেন যে আমাদের 2 টি প্রধান "ক্রিয়া" আছে যা আমরা আমাদের একজন খেলোয়াড়ের কাছ থেকে একটি বর্তমান লুপ গ্রহণ করি এবং তারপর আমরা এটি অন্য সব খেলোয়াড়দের কাছে প্রেরণ করি। উপরন্তু, আমরা সব খেলোয়াড়দের জন্য নতুন পালা সম্প্রচার করি। তাই গেমটি সিঙ্কে থাকে।

ধাপ 4: সার্ভার সেট করা - MQTT (মশা)

সার্ভার সেট করা - MQTT (মশা)
সার্ভার সেট করা - MQTT (মশা)

যেহেতু নোড-রেডের নিজস্ব MQTT ব্রোকার নেই, এবং MQTT- এর উপর আমাদের সেন্সর এবং অ্যাক্টিভেটরদের সাথে যোগাযোগ করতে হবে, তাই আমরা একটি ডেডিকেটেড MQTT ব্রোকার ব্যবহার করব। যেহেতু নোড-রেড মশকিটো সুপারিশ করে, এটিই আমরা ব্যবহার করব। MQTT সম্পর্কে কিছু তথ্যের জন্য এখানে দেখুন এবং কেন এটি প্রায়ই IoT প্রকল্পে ব্যবহৃত হয়।

ইনস্টলেশন এবং কনফিগারেশন

  1. এখান থেকে মশকিটো ডাউনলোড করে ইনস্টল করুন, সব আপনার অপারেটিং সিস্টেম অনুযায়ী।
  2. সাধারণত, নোড-রেডকে মশার সাথে সংযুক্ত করতে আপনাকে এখানে নির্দেশাবলী অনুসরণ করতে হবে। যাইহোক, যদি আপনি আমাদের প্রবাহ ব্যবহার করেন, এটি ইতিমধ্যে আপনার জন্য পূর্ব-কনফিগার করা আছে। যতক্ষণ আপনি প্রবাহ এবং মস্কিট্রো সঠিকভাবে ইনস্টল করেন, এবং মস্কিটো 1883 পোর্টে চলে (যার উপর এটি ডিফল্টরূপে চলে), এটি বাক্সের বাইরে কাজ করা উচিত।
  3. মনে রাখবেন যে এর অর্থ হল MQTT ব্রোকার এবং আপনার নোড-রেড সার্ভার একই মেশিনে চলে। এটি সিস্টেমের ভিতরে যোগাযোগ সহজ করার জন্য দরকারী। আরো তথ্যের জন্য নীচের নোট দেখুন।

MQTT ট্রাফিক পর্যবেক্ষণ

আমি ট্রাফিক নিরীক্ষণের জন্য MQTTfx ব্যবহার করেছি, এটি একটি খুব সাধারণ GUI সহ একটি দুর্দান্ত সরঞ্জাম।

ধাপ 5: কোড

কোড
কোড

আপনি GitHub এ কোডটি খুঁজে পেতে পারেন (সমস্ত ডেটা ফাইল এবং config.h সহ)

নির্ভরতা:

esp2866 এ কোড লোড করার আগে আপনাকে কয়েকটি লাইব্রেরি ইনস্টল করতে হবে:

  1. libmad-8266 (SPIFF থেকে এবং I2S এ সংগীত ডিকোড করুন)
  2. EspMQTTC ক্লায়েন্ট
  3. ESP8266WiFi
  4. Adafruit_NeoPixel

SPIFF ব্যবহার করে ESP এ সাউন্ড আপলোড করুন:

  1. এই মহান নির্দেশাবলী অনুসরণ করুন।
  2. সোর্স কোড ডিরেক্টরিতে ডাটা ফোল্ডার যোগ করুন।
  3. Arduino IDE- এ টুলস এর অধীনে ফ্ল্যাশের আকার পরিবর্তন করে "4MB (FS: 3MB TOA: ~ 512KB)"
  4. এছাড়াও সরঞ্জামগুলির অধীনে ESP2866 স্কেচ ডেটা আপলোড টিপুন

পরামিতি নির্ধারণ:

তারপরে config.h ফাইলে যান এবং আগের ধাপ থেকে প্রয়োজনীয় তথ্য যেমন WIFI শংসাপত্র এবং ngrok URL এবং পোর্ট যুক্ত করুন (রেফারেন্সের জন্য সংযুক্ত ছবিটি দেখুন)।

p.s-আমি আপনার স্মার্ট ফোন থেকে WIFI এবং ngrok ডেটা সেট করতে সাহায্য করার জন্য একটি স্বয়ংক্রিয় সংযোগ বৈশিষ্ট্য যোগ করেছি, যেহেতু এটি ধারণার একটি প্রথম প্রমাণ ছিল, আমি এটি কিছু দিন যোগ করতে চাই।

আপনার পছন্দের খেলোয়াড়ের পরিমাণ নির্ধারণ করুন (এই গেমটি 2-3 খেলোয়াড়দের জন্য সেরা কাজ করে এবং বাক্সের বাইরে এটি 2 খেলোয়াড়দের জন্য শব্দগুলির একটি অ্যারে দিয়ে লোড করা হয়)। কিন্তু আরো জন্য সহজে সমন্বয় করা যেতে পারে:

প্রতিটি খেলোয়াড়ের জন্য ব্যবহারকারী-নির্দিষ্ট বিষয়ের অধীনে একটি লুপ প্রকাশ করার জন্য নোড-রেডে আরেকটি প্রবাহ যোগ করুন।

এছাড়াও, আপনি আপনার কাস্টম শব্দের এই অ্যারে ক্যানজিং দ্বারা বাদ্যযন্ত্র সাউন্ড সম্পাদনা করতে পারেন:

এখানে আপনি 3 ধরণের যন্ত্র দেখতে পারেন (প্লেয়ার 0 এর জন্য ক্রোডস, প্লেয়ার 1 এর জন্য লিড এবং প্লেয়ার 2 এর জন্য বাস)

const char* paths [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", "/Bas_C3.wav", "/Bas_D3.wav", "/Bas_F3.wav", "/Bas_G3.wav", "/Bas_A3.wav"};

ধাপ 6: 3D মডেল প্রিন্ট করুন

3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন
3D মডেল প্রিন্ট করুন

প্রথম ধাপের জন্য, STL ডাউনলোড করুন এবং সেগুলি মুদ্রণ করুন।

সমর্থনগুলি সরানোর পরে এবং সম্ভবত কিছুটা স্যান্ডিং (প্রিন্টারের রেজোলিউশনের উপর নির্ভর করে)

এটি পছন্দসই রঙে আঁকুন

ধাপ 7: একত্রিতকরণ এবং dingালাই

একত্রিতকরণ এবং dingালাই
একত্রিতকরণ এবং dingালাই

তাই মূলত এখানেই আসল যাদু ঘটে।

আপনি এই স্কিম্যাটিক্সগুলি অনুসরণ করতে পারেন এবং সবকিছু একসাথে dালতে পারেন।

মনে রাখবেন যে আপনি পিনের অবস্থান পরিবর্তন করতে পারেন শুধু কোডে এটি পরিবর্তন করতে মনে রাখবেন।

A0 এবং I2S জায়গায় বেশ স্থির:

যেহেতু A0 রোধকারী সেতুর জন্য (আমরা 5 এর মধ্যে কোন বোতামটি চাপানো হয়েছিল তা জানতে বর্তমানের পার্থক্যটি ব্যবহার করি - এই নির্দেশাবলীর অনুরূপ।

I2S- এর একটি নির্দিষ্ট কোডিং আছে যা আপনি এখানে খুঁজে পেতে পারেন

ধাপ 8: আপনার বন্ধুদের সাথে কিছু লুপ খেলুন

প্রস্তাবিত: