পিচ বেন্ড (এমআইডিআই) মানটিকে একটি "সাধারণ" পিচ মানকে রূপান্তর করা


11

আমি এখানে দেওয়া হিসাবে rt_lpc (রিয়েল-টাইম এলপিসি) বাস্তবায়ন ব্যবহার করে একটি অফলাইন এলপিসি বিশ্লেষণ এবং সংশ্লেষণ চেষ্টা করছি । প্রোগ্রামের মধ্যে কিছু ফাংশন রয়েছে যা অফলাইনে এলপিসি বিশ্লেষণ এবং সংশ্লেষণ প্রোগ্রামের জন্য ব্যবহার করা যেতে পারে। Rt_lpc কোডটি বেশিরভাগই সুরকার ইত্যাদির জন্য বোঝানো হয়, যার অর্থ এটি একটি এমআইডিআই বা গ্লোটাল ডাল ইনপুট ব্যবহার করে। প্রোগ্রামে কিছু কোড রয়েছে যা একটি পিচ মানকে (স্বয়ংক্রিয়-সম্পর্কিত থেকে প্রাপ্ত) মানকে রূপান্তর করে bend। সম্পর্কটি নীচে দেওয়া হল:

    pitch = (int)( Stk::sampleRate() / midi2pitch[ananya.data[1]] ) /
                            pow( 1.0653f, bend/64.0f*11.0f );
                    power *= ananya.data[2] / 64.0f;
bend = ge.data[1] / 128.0f + ge.data[2] - 64;

কিছু বিষয়:
ক। ananyaএটি এমন এক ধরণের জিনিস MidiMsgযা ফ্লাইতে জনবহুল বলে মনে হয়।
খ। geএটি টাইপের একটি বস্তু MidiMsgযা ফ্লাইতে জনবহুল বলে মনে হয়।
গ। এই দুটি বস্তু তৈরি করা হয় যখন প্রোগ্রামটি রিয়েল-টাইমে চালিত হয় (খনিটি আমার একটি অফলাইন সংস্করণ যা এর নিজস্ব নির্বাচনী অংশগুলি আমার নিজস্ব একটি মেইন.পিপিতে চালায়।

আমার প্রশ্ন (গুলি):
১. পিচ বেন্ড কী?
২. আমি কীভাবে পিচ মানকে একটি মোড়ের মানে রূপান্তর করব? ম্যাপিং সম্পর্ক কী?

আমি সমাধানের জন্য গুগল করেছি তবে কোনও সুস্পষ্ট উত্তর পাইনি।

উত্তর:


12

এমআইডিআই-এর মূল অংশটিতে সংগীতের একটি পৃথক নোট ইভেন্ট হিসাবে প্রতিনিধিত্ব করা হয়, প্রত্যেকেরই স্ট্যাটিক পিচ থাকে। এটি কীবোর্ড যন্ত্রগুলিতে সংগীত উপস্থাপনের জন্য উপযুক্ত। আপনি টেম্পারেড স্কেলের নোটের সাথে সম্পর্কিত যে কোনও ফ্রিকোয়েন্সিটিকে একটি এমআইডিআই নোট সংখ্যায় রূপান্তর করতে পারেন:

69+12×log2frequency440

এই ধারণাটি অনুসারে যে এমআইডিআই রিসিভারটি A4 = 440 Hz এর জন্য ক্যালিব্রেট করা হয়েছে।

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

এটি মিডিআইতে "পিচ বেন্ড বার্তাগুলি" ব্যবহার করে করা হয় যা সিন্থেসাইজারকে একটি সামান্য বিরতি দিয়ে বর্তমানে প্লে করা নোটের পিচটি স্থানান্তর করার নির্দেশ দেয়। বেশিরভাগ সিন্থেসাইজারগুলি পিচ বেন্ড মেসেজ রেঞ্জের (0 .. 16383) কোর্স ধরে +/- 2 সেমিটোনগুলির জন্য ডিফল্টরূপে ক্যালিব্রেট হয়। 8192 কোনও পিচ বাঁকানোর সাথে মিলে যায় - নির্গত পিচটি নোটের মানের সাথে হুবহু। পিচ মোড় মান এবং ফ্রিকোয়েন্সি স্থানান্তর অনুপাতের মধ্যে ম্যাপিং দেওয়া রয়েছে:

femitted_notefnote_message=2pitchbend81924096×12

আপনি নীচের সূত্রটি থেকে সিনথেজিয়ারের দ্বারা খেলানো একটি নোটের ফ্রিকোয়েন্সি পেতে পারেন:

440×2note6912.0+pitchbend81924096×12

যেখানে নোটটি সর্বশেষ প্রাপ্ত নোট অন বার্তায় 7-বিট এমআইডিআই নোট নম্বর ; এবং পিচবেনড হ'ল সর্বশেষ প্রাপ্ত পিচ বেন্ড বার্তার 14-বিট মান । একটি সিনথেসাইজারটি তার পিচ বেন্ড রেজিস্টারে 8192 তে সেট করে শুরু হয় এবং "সমস্ত নিয়ন্ত্রকদের পুনরায় সেট করুন" বার্তার অভ্যর্থনা চলাকালীন এই মানটি পুনরায় সেট করা হয়।

আসুন নীচের উদাহরণটি ধরুন। আপনি নীচের ফ্রিকোয়েন্সি ট্র্যাজেক্টোরির সাথে বাঁশি ট্রিলটি প্রকাশ করতে চান: এমআইডিআই বার্তা হিসাবে 500 হার্জ, 510 হার্জ, 500 হার্জ।

বেস নোট নম্বরটি হ'ল:

round(69+12×log2(500/440))=71

সুতরাং আপনি # সমান নোটের সাথে একটি "নোট অন" বার্তা প্রেরণ করুন This এটি একটি পিচের সমতুল্য:

440×2(7169)/12=493.88

যা টেম্পারেড স্কেলের নিকটতম পিচ। এর একটি উপাদান দ্বারা পিচটি বাড়াতে আপনাকে একটি পিচ বেন্ড বার্তা পাঠাতে হবে:

500493.88=1.0124

এবং আপনার 500 হার্জেড পান। সম্পর্কিত পিচ মোড় মান:

round(8192+4096×12×log21.0124)=9065

আপনার 510 হার্জেড পাওয়ার জন্য, পিচ বেন্ডের মানটি হবে:

round(8192+4096×12×log2510493.88)=10469

সুতরাং আপনার 500, 510, 500 Hz এর জন্য MIDI বার্তাগুলির ক্রম হবে:

  • দ্রষ্টব্য 71
  • পিচ বেন্ড 9065
  • ...
  • পিচ বেন্ড 10469
  • ...
  • পিচ বেন্ড 9065

আপনি এমআইডিআই নোট নম্বরটিকে পিচের "অবিচ্ছেদ্য" অংশ হিসাবে ভাবতে পারেন; এবং পিচটি পিচের একটি অনর্থক "ভগ্নাংশ" অংশ হিসাবে বাঁকানো।


এছাড়াও, কোডটি আমার বোঝার থেকে জিই পিচ বেন্ড বার্তা; ge.data [2] এর এমএসবি এবং ge.data [1] এর এলএসবি। অনন্যা বার্তাটির নোট, অনন্যা.ডাতা [1] হ'ল নোট নম্বর এবং অনন্যা.ডাতা [২] বেগ। কোডটির লেখকদের মধ্যে লুকানো রোম্যান্সকে বোঝায় বলে ফানি ভেরিয়েবলের নামকরণ ছাড়াও, আমি এখানে একটি সম্ভাব্য ডাব্লুটিএফ দেখতে পাচ্ছি: 1.0653f এবং 11.0f ধ্রুবকগুলিতে মজাদার কিছু আছে। একটি পঠনযোগ্য পছন্দ হবে: 1.05946f এবং 12.0f। বা 1.06504f এবং 11.0f। লেখকরা মনে করছেন যে +/- 1 অকটভের একটি পিচ বেন্ড রেঞ্জ, যা অন্য সম্ভাব্য ডাব্লুটিএফ।
পিকনেটস

"লুকানো রোম্যান্স" অংশে আরটিএফএল! আমি মনে করি না আমি এটি সঠিকভাবে বুঝতে পেরেছি তাই আমার সাথে সহ্য করুন। পিচ মানটি ফাংশন থেকে পাওয়া যায় autocorrelate, যা আমার কাছে মনে হয় এটি মিডি নোট যা আউটপুট। midi2pitchসূত্রটিতে অ্যারে লক্ষ্য করুন ? আমি যদি সঠিক হয়ে থাকি তবে এর অর্থ হ'ল আমার কাছে এখনও bendবেচের মানটি নির্ধারণ করার জন্য পিচের মূল্য বা প্রকৃত মান নেই এবং আমার কাছে এমআইডিআই ফাইল না থাকলে সেগুলি পাওয়ার কোনও উপায় নেই। অনেকগুলি ভেরিয়েবল এবং খুব কম সমীকরণের একটি সহজ কেস। আমি কীভাবে বাঁক, আসল পিচ মান এবং velocityএই ক্ষেত্রে অনুমান করব ?
শ্রীরাম

আপনি কি করতে চেষ্টা করছেন? পিচ / পাওয়ার জুটিকে এমআইডিআই বার্তাগুলিতে রূপান্তর করবেন? অথবা এমআইডিআই ডেটাটিকে প্রকৃত পিচে রূপান্তর করবেন? উপরের প্রদত্ত কোডটি আগত এমআইডিআই নোট + পিচ বেন্ড বার্তাগুলির এক জোড়া (অনন্যা, জিআর জিপি) একটি পিরিয়ড (পিচ ভেরিয়েবল) এবং একটি পাওয়ার (পাওয়ার ভেরিয়েবল) এ রূপান্তরিত করে। আমি মনে করি এটি একটি মিডি কীবোর্ড দ্বারা নিয়ন্ত্রিত একটি সিন্থেটিক দ্বারা এলপিসি উত্তেজনা প্রতিস্থাপন করতে ব্যবহৃত হয় - এক ধরণের ক্রুড ভোদার বা অটোটুন প্রভাব effect
পিচনেটস

rt_lpc.cpp- এর একটি সন্ধানের বিষয়টি নিশ্চিত করে যে 0xe0 টাইপের আগত এমআইডিআই বার্তা (পিচ বেন্ড) পিচ বেন্ডের মান আপডেট করছে; এবং 0x90 টাইপের আগত এমআইডিআই বার্তা (নোট অন) "অনন্যা" বার্তায় অনুলিপি করা হয়েছে। সেখান থেকে, এই মানগুলি ব্যবহার করে পরিবর্তিত পিচ ব্যবহার করে পুনরায় সংশ্লেষ করা হয়। সেখান থেকে আপনি কী করতে চান তা নিশ্চিত নন।
পিচেনেটস

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

6

এমআইডিআই হ'ল একটি প্রোটোকল যা (প্রাথমিকভাবে) সিন্থেসাইজারকে অন্যান্য সিন্থেসাইজার বা কম্পিউটার দ্বারা নিয়ন্ত্রণ করতে বা নিয়ন্ত্রণ করতে দেয়।

এটি একটি সিরিয়াল প্রোটোকল যা "কী সি 1 আপ" "কী ডি 4 ডাউন" "কী গতিবেগ," শব্দ পরিবর্তন "ইত্যাদির মতো বার্তাগুলি বিনিময় করতে দেয় Many অনেক কন্ট্রোলারের একটি" পিচ হুইল "থাকে যা একটি জয়স্টিক বা am মডুলেশন হুইল These খেলোয়াড়টি ইন্টারেক্টিভভাবে বর্তমান নোটের গর্তটি পরিবর্তন করে খেলতে যাচ্ছেন ম্যানুয়ালি ভাইব্রোটো তৈরি করতে বা এক নোট থেকে পরের দিকে "ধারাবাহিকভাবে" স্লাইড করতে। এটি যেহেতু ঘন ঘন গিটার প্লেয়ারদের বাম হাতের সাথে ফেটে যাওয়া স্ট্রিংটি বাঁকিয়ে প্রায়শই বলা হয়ে থাকে পিচ বাঁকানো এবং তাই নাম।

এমআইডিআই পিচ বেন্ড বার্তাটি যোগাযোগের একটি উপায় যা সময়মতো কোনও নির্দিষ্ট সময়ে পিচ শিফট হওয়ার কথা। একটি পিচ বেন্ড বার্তা প্রাপ্ত একটি সিনথেসাইজার (সফ্টওয়্যার বা হার্ডওয়্যার) প্রদত্ত পরিমাণটি দ্বারা চালিত সমস্ত বর্তমান নোটের পিচটি পরিবর্তন করার কথা।

কন্ট্রোলার বার্তার একটি যুক্তি রয়েছে যা -8192 থেকে 8191 থেকে যায় এবং স্ট্যান্ডার্ড এমআইডিআই ফাইলগুলিতে এটি -200 শতাংশ থেকে 200 শতাংশ হতে পারে, যেখানে 1 শতাংশ সেমিটনের 1/100, অর্থাৎ 2 of এর অনুপাত ( 1/1200) = 1.000577789506555। উদাহরণ: নামমাত্র ফ্রিকোয়েন্সিটির 93% পেতে নীচের দিকে একটি পিচ শিফট তৈরি করতে, নিয়ামক মান হবে

c = round(log2(.93)*12*8192/2);

বা -5146 এই ক্ষেত্রে। আপনি যে অনুপাতটি চান তা হ'ল 0.93, 12 প্রতি অক্টোটায় সেমিটোনগুলির সংখ্যা, 2 সর্বাধিক পিচ বেন্ড রেঞ্জ (এই ক্ষেত্রে 200 সেন্ট বা 2 সেমিটোন) এবং লগ 2 () ভিত্তি 2 সহ লগারিদম ith

তবে বেশিরভাগ সংশ্লেষকগুলিতে পরিসরটি কনফিগারযোগ্য এবং সমস্ত সিন্থেসাইজার একই আচরণ করে এমন ধারণা করা ভাল ধারণা নয়।

এখানে একটি রূপান্তর চার্ট রয়েছে যা সাহায্য করতে পারে। http://www.elvenminstrel.com/music/tuning/reference/pitchbends.shtml

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.