আমি বছরের পর বছরগুলিতে কোনও মিডিআই প্রোগ্রামিং করিনি, তবে আপনার মৌলিক ধারণাটি খুব দৃ sound় (কোনও পাং নেই)।
এমআইডিআই হ'ল "ইভেন্ট" (বা "বার্তাগুলি") এর একটি স্রোত, সবচেয়ে দুটি মৌলিক "নোট অন" এবং "নোট অফ" যা তাদের সাথে নোট নম্বর (0 = সি মধ্যবর্তী সি এর নীচে পাঁচটি অষ্টভ, 127 = এর মধ্য দিয়ে বহন করে carry মাঝের সি এর উপরে জি এর পাঁচটি অষ্টভুজ, আধা টোনগুলিতে)। এই ইভেন্টগুলি কীবোর্ডগুলিতে "বেগ" নম্বর বহন করে যা বেগ সংবেদনশীল ("স্পর্শ সংবেদনশীল") থাকে, যার একটি বল (আপনি এটি অনুমান করেছিলেন) 0 এবং 127 এর মধ্যে রাখেন।
বেগ, চির্ডিং এবং প্যাডেলগুলির মধ্যে, আমি মনে করি আপনি পিয়ানো কীবোর্ডের জন্য বেশ ভাল একটি "টাইপিং" ইন্টারফেস নিয়ে আসতে পারেন। বিশেষত রেকর্ডিং একটি খুব শক্তিশালী কৌশল হতে পারে - যেমন আমি মন্তব্যগুলিতে বলেছি যে, র্যাঙ্ক-এবং-ফাইল স্টেনোগ্রাফাররা টানা কয়েক ঘন্টা কথা বলার লোকদের সাথে তাল মিলিয়ে স্টেনোটাইপ মেশিন ব্যবহার করতে পারেন , এমনকি শীর্ষ-বিমানের টাইপস্টরাও চাইতেন না ' টি সাধারণ টাইপরাইটার-স্টাইলের কীবোর্ডগুলির মাধ্যমে যেকোন সময়ের জন্য সক্ষম হবেন না। মেশিন স্টেনোগ্রাফির মতো আপনার বাছুর অর্থ এবং দুলার ক্রমগুলির অর্থের একটি "অভিধান" প্রয়োজন। (আপনি কি বলতে পারেন যে আমি মেশিন স্টেনোগ্রাফির সফ্টওয়্যার সাইডে কাজ করতাম?)
এটি করার জন্য, মৌলিক টুকরোগুলি হ'ল:
- এমআইডিআই ইনপুট গ্রহণ করা। এটি নিজে করার চেষ্টা করবেন না, একটি লাইব্রেরি ব্যবহার করুন। সম্পাদনা : স্পষ্টতই, জাভা সাউন্ড এপিআই এমআইডিআই সমর্থন করে , এমআইডিআই নিয়ন্ত্রকদের কাছ থেকে ইভেন্টগুলি গ্রহণ করে। কুল। এই পৃষ্ঠাটিও দরকারী হতে পারে।
- আপনি যে কীট্রোকগুলি প্রেরণ করতে চান সেগুলিতে সেই ডেটাটি রূপান্তর করা, উদাহরণস্বরূপ আমি উপরে বর্ণিত অভিধানের মাধ্যমে।
- কম্পিউটারে কীস্ট্রোক আউটপুট করা।
সফ্টওয়্যারটির সাথে সর্বাধিক বিস্তৃতভাবে সামঞ্জস্যপূর্ণ হতে আপনাকে এটিকে একটি কীবোর্ড ডিভাইস ড্রাইভার হিসাবে লিখতে হবে। এটি অপারেটিং সিস্টেমের একটি প্লাগ-ইন যা অন্তর্নিহিত হার্ডওয়্যার (আপনার ক্ষেত্রে, পিয়ানো কীবোর্ড) এর সাথে কথা বলে কীবোর্ড ইভেন্টগুলির উত্স হিসাবে কাজ করে। উইন্ডোজ এবং লিনাক্সের জন্য, আপনি সম্ভবত এটির জন্য সি ব্যবহার করতে চাইছেন।
তবে, যেহেতু আপনি কেবল কীস্ট্রোক তৈরি করছেন (সেগুলি বাধা দেওয়ার চেষ্টা করছেন না, যা আমি বছরখানেক আগে করার চেষ্টা করছিলাম), আপনি কৃত্রিম কীস্ট্রোক প্রেরণের জন্য অপারেটিং সিস্টেমের যা কিছু বৈশিষ্ট্য রয়েছে তা ব্যবহার করতে সক্ষম হতে পারেন। উইন্ডোজের এটি করার জন্য একটি ইন্টারফেস রয়েছে (সম্ভবত বেশ কয়েকটি, আমি যা ভাবছিলাম তা SendInput
কিন্তু আমি জানি কিছু "জার্নাল" ইন্টারফেস রয়েছে যা কিছু একই রকম করে) এবং আমি নিশ্চিত যে অন্যান্য অপারেটিং সিস্টেমগুলিও এটির কাজ করে। এটি আপনার উদ্দেশ্যগুলির পক্ষে যথেষ্ট হতে পারে - এটিই আমি শুরু করেছি, কারণ ডিভাইস ড্রাইভারের রুটটি বিশ্রী হতে চলেছে এবং আপনার সম্ভবত জাবার চেয়ে আলাদা ভাষা ব্যবহার করতে হবে। (আমি জাভার একটি বড় অনুরাগী, তবে ডিভাইস ড্রাইভারদের সাথে কথা বলার জন্য অপারেটিং সিস্টেমগুলি যে ইন্টারফেসগুলি ব্যবহার করে সেগুলি সি এবং এর মতো আরও সহজেই গ্রাস করা যায় to)
আপডেট : কীস্ট্রোকগুলিতে chords এর "অভিধান" সম্পর্কে আরও:
মূলত, অভিধানটি একটি ট্রাই (ধন্যবাদ, @ অ্যাডাম) যা আমরা দীর্ঘতম উপসর্গের মিলের সাথে অনুসন্ধান করি। বিবরণ:
মেশিন স্টেনোগ্রাফিতে স্টেনোগ্রাফার একই সাথে স্টেনোটাইপ মেশিনে একাধিক কী টিপুন এবং তারপরে সেগুলি সমস্ত ছেড়ে দিয়ে লেখেন। এটিকে তারা কীবোর্ডের "স্ট্রোক" বলে; এ যেন পিয়ানোতে বাজি বাজানোর মতো। প্রায়শই স্ট্রোক হয় (তবে সর্বদা নয়) কথ্য ভাষার একটি বর্ণের সাথে মিলে যায়। সিলেবলের মতো, কখনও কখনও একটি স্ট্রোক (জ্যা) এর নিজস্ব অর্থ সমস্ত অর্থ হয়, অন্য সময়ে এটি কেবল নিম্নলিখিত স্ট্রোকের সাথে মিলিত অর্থ। ("ভাল" বনাম "ভাল" এর পরে "বাই" ভাবেন)। যদিও তারা যে বিদ্যালয়ে তারা পড়াশোনা করেছিল তার দ্বারা তারা ব্যাপকভাবে প্রভাবিত হবে, তবে প্রতিটি স্টেনোগ্রাফারের নিজের "ডিকশনারি" থাকবে যার অর্থ তারা কী স্ট্রোক ব্যবহার করে তা বোঝায়, একটি অভিধান যা তারা ক্রমাগত তাদের কর্মজীবন চলতে থাকবে। অভিধানটিতে এন্ট্রি থাকবে যেখানে স্টেনোগ্রাফিক অংশ ("স্টেনো" সংক্ষেপে) একটি স্ট্রোক দীর্ঘ, বা একাধিক স্ট্রোক দীর্ঘ। প্রায়শই একই স্ট্রোক স্ট্রোক সহ বেশ কয়েকটি এন্ট্রি আসবে যা তাদের দৈর্ঘ্য এবং পরবর্তী স্ট্রোক দ্বারা পৃথক করা হয়। উদাহরণস্বরূপ (এবং আমি এখানে সত্যিকারের স্টেনো ব্যবহার করব না, কেবল স্থানধারক), এই এন্ট্রিগুলি থাকতে পারে:
এ = আলফা
এ / বি = বর্ণমালা
এ / বি / সি = বর্ণানুক্রমিক
এ / সি = শীতাতপ নিয়ন্ত্রণ ব্যবস্থা
খ = মৌমাছি
বি / সি = কারণ
সি = সমুদ্র
ডি = কুকুর
ডি / ডি = ডি-ডি
(এই চিঠিগুলি বাদ্যযন্ত্রের নোট নয়, কেবল বিমূর্ত মার্কার হিসাবে বোঝানো হয়েছে))
নোট যে A
একাধিক এন্ট্রি শুরু করে এবং আপনি যে কোনও C
স্ট্রোক অনুবাদ করেন তা কীভাবে আপনি পূর্বে কোনও A
, ক B
, বা আপনি নতুনভাবে শুরু করেছেন কিনা তার উপর নির্ভর করে Note
আরও মনে রাখবেন (যদিও উপরে খুব ছোট নমুনায় প্রদর্শিত হয়নি), কেবলমাত্র একটি শব্দ না করে একই শব্দ বা বাক্যাংশটি "প্লে" করার একাধিক উপায় থাকতে পারে। স্টেনোগ্রাফাররা হাতের অবস্থানের উপর নির্ভর করে পূর্ববর্তী শব্দ থেকে পরবর্তী শব্দটিতে প্রবাহিত করা সহজতর করার জন্য এটি করেন। এখানে সংগীতের একটি সুস্পষ্ট উপমা রয়েছে এবং আপনার পিয়ানো বাজানোতে নেতিবাচকভাবে প্রভাব ফেলতে এবং উভয়ই এই আরএসআইয়ের সাথে সাহায্য করার সম্ভাবনা সর্বাধিক করে তোলার জন্য আপনার টাইপিং প্রবাহকে সংগীত বাজানোর অনুরূপ করতে এবং এটি ব্যবহার করতে পারেন।
স্টেনোটিকে স্ট্যান্ডার্ড পাঠ্যে অনুবাদ করার সময়, আমরা আবার একটি "দীর্ঘতম উপসর্গের ম্যাচ" অনুসন্ধান ব্যবহার করি: অনুবাদ অ্যালগরিদমটি প্রথম লেখার প্রথম স্ট্রোক দিয়ে শুরু হয় এবং সেই স্ট্রোক দিয়ে শুরু হওয়া এন্ট্রিগুলির সন্ধান করে। যদি কেবল একটি প্রবেশিকা থাকে এবং এটি একটি স্ট্রোক দীর্ঘ হয় তবে আমরা নির্ভরযোগ্যভাবে বলতে পারি "এটি ব্যবহারের জন্য এন্ট্রি", সংশ্লিষ্ট পাঠ্য আউটপুট এবং তারপরে পরবর্তী স্ট্রোকের সাথে নতুন করে শুরু করতে পারি। তবে সম্ভবত, স্ট্রোকটি বিভিন্ন দৈর্ঘ্যের একাধিক এন্ট্রি শুরু করে। সুতরাং আমরা পরবর্তী স্ট্রোক তাকান এবং দেখুন যে প্রবেশদ্বারগুলি সেই দুটি স্ট্রোকের সাথে শুরু করে; এবং এই পর্যন্ত আমরা কোনও ম্যাচ না পাওয়া পর্যন্ত।
সুতরাং উপরের অভিধানের সাথে, ধরুন আমরা এই ক্রমটি দেখেছি:
ACBBCABCABD
এখানে আমরা এটি কীভাবে অনুবাদ করব:
A
বিভিন্ন দৈর্ঘ্যের তিনটি এন্ট্রি শুরু; পরবর্তী স্ট্রোক তাকান:C
A/C
শুধুমাত্র একটি প্রবেশের সাথে মেলে; "শীতাতপনিয়ন্ত্রণ" আউটপুট আউট এবং পরবর্তী স্ট্রোক দিয়ে তাজা শুরু:B
B
দুটি এন্ট্রি শুরু; পরবর্তী স্ট্রোক তাকান:B
B/B
কিছু শুরু করে না; দীর্ঘতম ম্যাচটি নিন ( B
) এবং আউটপুট যা ("মৌমাছি")
- আউটপুট
B
= "মৌমাছি" থাকার পরেও B
আমাদের বাফারে স্ট্রোক রয়েছে। এটি দুটি এন্ট্রি শুরু করে, সুতরাং পরবর্তী স্ট্রোকটি দেখুন:C
B/C
একটি প্রবেশের সাথে মেলে; আউটপুট "কারণ" এবং পরবর্তী স্ট্রোকের সাথে নতুন করে শুরু করুন:A
A
তিনটি এন্ট্রি শুরু; পরবর্তী স্ট্রোক তাকান:B
A/B
দুটি এন্ট্রি শুরু; পরবর্তী স্ট্রোক তাকান:C
A/B/C
শুধুমাত্র একটি প্রবেশের সাথে মেলে; "বর্ণমালা" আউটপুট এবং পরবর্তী স্ট্রোক দিয়ে তাজা শুরু:A
A
তিনটি এন্ট্রি শুরু; পরবর্তী স্ট্রোক তাকান:B
A/B
দুটি এন্ট্রি শুরু; পরবর্তী স্ট্রোক তাকান:D
A/B/D
কোনও কিছুর সাথে মেলে না, সুতরাং দীর্ঘতম ম্যাচটি নিন ( A/B
) এবং এটি "বর্ণমালা" আউটপুট ব্যবহার করুন। এটি আমাদের D
বাফারে এখনও রেখে দেয় ।
D
দুটি এন্ট্রি শুরু হয়, তাই আমরা সাধারণত পরবর্তী স্ট্রোকটি দেখব - তবে আমরা সমস্ত স্ট্রোক প্রক্রিয়া করেছি, সুতরাং এটিকে বিচ্ছিন্নতার সাথে বিবেচনা করুন। বিচ্ছিন্নতায়, এটি "কুকুর" হিসাবে আউটপুট হিসাবে অনুবাদ করে।
উপরের দিকগুলি লক্ষ করুন:
- আপনার কাছে স্ট্রোকগুলির একটি বাফার রয়েছে যা আপনি পড়েছেন তবে এখনও অনুবাদ করেন নি।
- আপনি সর্বদা একটি স্ট্রোকের সাথে সবচেয়ে বেশি স্ট্রোকের সাথে মিল রাখতে চান যা আপনি পারেন।
A/B
"বর্ণমালা" হিসাবে অনুবাদ করা উচিত, "আলফা" এবং "মৌমাছি" নয়।
- (উপরে দেখানো হয়নি) আপনার স্ট্রোকের ক্রমগুলি থাকতে পারে যা আপনি অনুবাদ করতে পারবেন না, কারণ এগুলি অভিধানে কোনও কিছুর সাথে মেলে না। (স্টেনো লোকেরা "আনট্রান্সলেট" বিশেষ্য ব্যবহার করে - উদাহরণস্বরূপ, আমাদের অভিধানের সাথে স্ট্রোকগুলি
E
একটি "আনটারান্সলেট" হতে পারে))
- (উপরে দেখানো হয়নি) স্টেনোর কিছু তত্ত্ব বিস্তৃত প্রেক্ষাপটের ভিত্তিতে একই সেটটিকে একাধিক জিনিস বোঝাতে দেয় allow স্টেনো লোকেরা এগুলিকে "বিবাদ" বলে ডাকে। আপনি সম্ভবত আপনার প্রকল্পে এগুলি অস্বীকার করতে চান এবং বাস্তবে স্টেনোগ্রাফার যখন স্টেনোকে ম্যানুয়ালি অনুবাদ করতেন, তখন দ্বন্দ্বগুলি ভাল ছিল কারণ তারা জানতেন ঠিক বাক্যটিতে কোথায় তারা সঠিক পছন্দটি ছিল, কিন্তু উত্থানের সাথে মেশিন অনুবাদ এর, ফলাফল অনুবাদ অনুবাদ এবং "সংশোধন" দ্বন্দ্ব না পেরে স্টেনো বিরোধ বিরোধ মুক্ত তত্ত্বগুলি বিশেষত উত্থাপিত হয়েছিল।
- রিয়েল টাইমে (যা আপনি করতেন) অনুবাদ করার অর্থ এই যে আপনি যদি কোনও আংশিক ম্যাচ পান তবে পরবর্তী জ্যাজের জন্য অপেক্ষা করার সময় আপনি এটি ধরে রাখতে চাইবেন - তবে সম্ভবত কেবল একটি সময়সীমা অবধি থাকবে, যেখানে আপনি চাইবেন বাফারে যা আছে তা যথাসম্ভব অনুবাদ করুন। (অথবা হতে পারে আপনি কোনও সময়সীমা চান না; এটি আপনার কল))
- সম্ভবত "পূর্ববর্তী স্ট্রোকটিকে উপেক্ষা করুন" বলে স্ট্রোক করা ভাল
- সম্ভবত স্ট্রোকের সবচেয়ে ভাল যা "কোনও কিছুর আউটপুট ছাড়াই বাফারকে পুরোপুরি সাফ করুন" বলে