সুচিপত্র:

ডিজাইনারের জন্য আকর্ষণীয় প্রসেসিং প্রোগ্রামিং গাইডেন্স-মিডিয়া লোডিং এবং ইভেন্ট: 13 টি ধাপ
ডিজাইনারের জন্য আকর্ষণীয় প্রসেসিং প্রোগ্রামিং গাইডেন্স-মিডিয়া লোডিং এবং ইভেন্ট: 13 টি ধাপ

ভিডিও: ডিজাইনারের জন্য আকর্ষণীয় প্রসেসিং প্রোগ্রামিং গাইডেন্স-মিডিয়া লোডিং এবং ইভেন্ট: 13 টি ধাপ

ভিডিও: ডিজাইনারের জন্য আকর্ষণীয় প্রসেসিং প্রোগ্রামিং গাইডেন্স-মিডিয়া লোডিং এবং ইভেন্ট: 13 টি ধাপ
ভিডিও: গ্রাফিক্স ডিজাইন পেশা কি হারাম না হালাল ? | Freelancing islam | sheikh ahmadullah 2024, জুলাই
Anonim
ডিজাইনারের জন্য ইন্টারেস্টিং প্রসেসিং প্রোগ্রামিং গাইডেন্স-মিডিয়া লোডিং এবং ইভেন্ট
ডিজাইনারের জন্য ইন্টারেস্টিং প্রসেসিং প্রোগ্রামিং গাইডেন্স-মিডিয়া লোডিং এবং ইভেন্ট

প্রক্রিয়াকরণে প্রচুর বহিরাগত ডেটা লোড করা যায়, যার মধ্যে তিনটি ধরনের খুব সাধারণভাবে ব্যবহৃত হয়। এগুলি আলাদাভাবে ইমেজ, অডিও এবং ভিডিও।

এই অধ্যায়ে, আমরা বিস্তারিতভাবে অডিও এবং ভিডিও লোড করার বিষয়ে, ইভেন্টগুলির সাথে মিলিয়ে কথা বলতে যাচ্ছি। শেষ পর্যন্ত, আপনি নিজের মিউজিক কীবোর্ড বা মিউজিক প্যালেট তৈরি করতে পারেন।

ধাপ 1: চিত্র পড়ুন

আমরা শুরু করার আগে, আসুন ইমেজ লোডিং পদ্ধতির দিকে ফিরে তাকাই।

ধাপ 2: চিত্র সম্পর্কিত ফাংশন

আমরা এই ফাংশন ব্যবহার করার আগে, আমাদের PImage এর মাধ্যমে একটি চিত্র বস্তু তৈরি করতে হবে। তারপরে আমরা এই ফাংশনগুলি সমস্ত ধরণের চিত্র বৈশিষ্ট্য নির্ধারণ করতে ব্যবহার করতে পারি।

আপনার প্রোগ্রাম চালানোর আগে আপনার ছবির উৎসগুলোকে ডাটা ফাইলে সংরক্ষণ করতে ভুলবেন না।

ধাপ 3: সঙ্গীত লোড হচ্ছে, প্লে করুন এবং বন্ধ করুন

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

কোড উদাহরণ (10-1):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ সাউন্ড।*;

সাউন্ডফাইলের শব্দ;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (255);

সাউন্ড = নতুন সাউন্ডফিল (এটি, "1.mp3");

}

অকার্যকর ড্র () {

}

অকার্যকর চাপানো () {

//খেলার শব্দ

যদি (কী == 'পি') {

sound.play ();

}

// শব্দ বন্ধ করুন

যদি (কী == 's') {

sound.stop ();

}

} [/cceN_cpp]

প্রস্তুতি:

প্রক্রিয়াকরণ নিজেই কোন সাউন্ড লাইব্রেরি বহন করে না। আপনার নিজের দ্বারা এটি ডাউনলোড করতে হবে। সুতরাং, আপনার কোড লেখার আগে, আপনি নিম্নলিখিত প্রস্তুতিগুলি আরও ভাল করবেন।

প্রসেসিংয়ে লাইব্রেরি যুক্ত করুন। এখানে প্রচলিত অভ্যাস। "টুল"- "অ্যাড টুল" এর জন্য মেনু বার থেকে চয়ন করুন এবং তারপরে "লাইব্রেরি" তে স্থানান্তর করুন। সার্চ কলামে লাইব্রেরির মূল শব্দগুলি ইনপুট করুন যাতে আপনি এটি সরাসরি ডাউনলোড এবং ইনস্টল করতে পারেন।

যাইহোক, যদি আমরা আমাদের দেশীয় দেশে (চীনে) এই ফাংশনটি ব্যবহার করি, আমরা সরাসরি ওয়েবের সাথে সংযোগ স্থাপন করে এটি ডাউনলোড করতে পারি না। আমাদের ভিপিএন স্টার্টআপ করতে হবে। যদিও আমরা এটি শুরু করি, সেখানে অস্থিতিশীল পরিস্থিতি থাকবে। তাই আপনাকে কয়েকবার চেষ্টা করার জন্য ধৈর্য ধরতে হবে। এটি লোড করার সবচেয়ে সুবিধাজনক পদ্ধতি। যদি আপনি ইনস্টল করতে না পারেন, আপনাকে অফিসিয়াল ওয়েবসাইট থেকে ম্যানুয়াল দ্বারা ডাউনলোড করতে হবে। (https://processing.org/reference/libraries/) কারণ ম্যানুয়াল ইনস্টলেশন পদ্ধতি খুবই জটিল, আমরা অন্য অধ্যায়ে এটি নিয়ে আরও আলোচনা করব।

কোড এক্সপ্লেইন:

প্রস্তুতি সম্পন্ন হওয়ার পর সাউন্ড লাইব্রেরি সঠিকভাবে কাজ করতে পারে। উপরের কোডটি মোকাবেলা করুন, রান ক্লিক করুন, তারপর এটি কাজ করবে। সঙ্গীত বাজানোর জন্য "P" কী টিপুন, সঙ্গীত বন্ধ করতে "S" টিপুন।

যদি এটি প্রোগ্রামে অভ্যস্ত হয়, তাহলে আমাদের প্রথমে এটি লোড করতে হবে। শুরুতে, আমাদের একটি বাক্য যোগ করতে হবে "import processing.sound।*"। "আমদানি" মূল শব্দ, যার অর্থ আক্ষরিক অর্থে লোড হচ্ছে। "আমদানি" এর পিছনে লাইব্রেরির নাম যোগ করুন, তারপর এটি লাইব্রেরিটি লোড করবে। লেজটি সাধারণত "*" এর একটি চিহ্ন অনুসরণ করে, এইভাবে এটি লাইব্রেরি সম্পর্কিত সমস্ত ক্লাসকে ম্যানুয়ালি যোগ না করেই প্রোগ্রামে লোড করবে।

দ্বিতীয় বাক্যে "SoundFile sound;" একটি অডিও বস্তু ঘোষণা করেছে। SoundFile PImage এর অনুরূপ।

ফাংশন সেটআপের মধ্যে, "sound = new SoundFile (this," 1.mp3 ");" একটি বস্তু তৈরি করতে এবং তার পড়ার পথ নির্ধারণ করতে ব্যবহৃত হয়। এখানে আমরা ইতিমধ্যে একটি নতুন ধারণা ক্লাস ব্যবহার শুরু করেছি। এই মুহূর্তে আমরা এটি গভীরভাবে আলোচনা করি না। আমাদের কেবল জানতে হবে এটি একটি নির্দিষ্ট লেখার পদ্ধতি এবং শেষ প্যারামিটারটি সঙ্গীত উৎসের ঠিকানা পূরণ করার জন্য।

KeyPressed () ইভেন্টগুলির মধ্যে, "sound.play ()" এবং "sound.stop ()" অপেক্ষাকৃতভাবে প্লে এবং স্টপের প্রভাব হিসেবে কাজ করে। "।" মাঝখানে একটি সদস্য ফাংশন নির্দেশ করে যা প্লে এবং স্টপ অডিও বস্তুর অন্তর্গত। আমরা সদস্য ফাংশনকে বস্তুর অন্তর্ভুক্ত ফাংশন হিসেবে বিবেচনা করতে পারি। এটি এই বস্তুর অন্তর্গত, যা পূর্বেই সংজ্ঞায়িত করা হয়েছে। পরবর্তীতে, যখন আমাদের একাধিক অডিও বস্তু চালানোর প্রয়োজন হয়, তখন আমাদের শুধুমাত্র আপেক্ষিক পরিবর্তনশীল নামের পিছনে ".play ()" যুক্ত করতে হয়।

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

ফাংশন ড্র লিখতে ভুলবেন না। যদিও আপনি কোন গ্রাফিক্স আঁকেননি, সফলভাবে সঙ্গীত বাজানো প্রয়োজন।

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

প্রসেসিং সাধারন অডিও ফরম্যাট যেমন mp3, wav, ogg ইত্যাদি সমর্থন করে।

ধাপ 4: সঙ্গীত গতি নিয়ন্ত্রণ

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

ভিডিও ওয়েবসাইট:

কোড উদাহরণ (10-2):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ সাউন্ড।*;

সাউন্ডফাইলের শব্দ;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (255);

সাউন্ড = নতুন সাউন্ডফিল (এটি, "1.mp3");

}

অকার্যকর ড্র () {

float speed = mouseX/(float) প্রস্থ * 3;

সাউন্ড রেট (গতি);

float vol = mouseY/(float) উচ্চতা * 4;

sound.amp (vol);

}

অকার্যকর চাপানো () {

//খেলার শব্দ

যদি (কী == 'পি') {

sound.play ();

}

// শব্দ বন্ধ করুন

যদি (কী == 's') {

sound.stop ();

}

} [/cceN_cpp]

কোড ব্যাখ্যা করুন:

ফাংশন.rate () অডিও বাজানোর গতি নিয়ন্ত্রণ করে। বন্ধনীতে মানটি দ্রুত গতি এবং খেলার গতি নির্ধারণ করে। যখন মান 1, খেলার গতি স্বাভাবিক। যখন এটি 1 এর বাইরে, তখন ত্বরান্বিত করুন; যখন এটি 1 এর নিচে, তারপর হ্রাস।

ফাংশন.amp () অডিও ভলিউম নিয়ন্ত্রণ করে। বন্ধনীতে মান ভলিউম মান নির্ধারণ করে। যখন এটি 1, ভলিউম মান স্বাভাবিক। যখন এটি 1 এর বাইরে, তখন ভলিউম বাড়ান; যখন এটি 1 এর কম, তখন ভলিউম হ্রাস করুন।

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

ধাপ 5: ভিডিও প্লে এবং স্টপ

প্রক্রিয়াকরণে, ভিডিও লোডিং অডিও লোডিংয়ের অনুরূপ। আপনাকে প্রথমে ভিডিও লাইব্রেরি ডাউনলোড করতে হবে। (https://processing.org/reference/libraries/video/index.html)

কোড উদাহরণ (10-3):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ ভিডিও।*;

সিনেমা mov;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (0);

mov = নতুন সিনেমা (এটি, "1.mov");

}

void movieEvent (মুভি মুভি) {

mov.read ();

}

অকার্যকর ড্র () {

ছবি (mov, 0, 0, 640, 360);

}

অকার্যকর চাপানো () {

যদি (কী == 'পি') {

mov.play ();

}

যদি (কী == 's') {

mov.stop ();

}

যদি (কী == 'ডি') {

mov.pause ();

}

} [/cceN_cpp]

ভিডিও স্ক্রিনশট:

কোড ব্যাখ্যা করুন:

ভিডিও লাইব্রেরি লোড করার জন্য প্রথম বাক্য "আমদানি প্রক্রিয়াকরণ ভিডিও।*;" ব্যবহার করা হয়।

দ্বিতীয় বাক্য "মুভি mov;" ভিডিও বস্তু ঘোষণা করার জন্য ব্যবহৃত হয়। এর মধ্যে, "মুভি" এর ফাংশন PImage এর অনুরূপ।

ফাংশন সেটআপের ক্ষেত্রে, "mov = new Movie (this," 1.mov ");" এর প্রভাব হচ্ছে বস্তু তৈরি করা এবং তার পড়ার পথ নির্ধারণ করা। শেষ প্যারামিটারটি ভিডিও উৎসের ঠিকানা দিয়ে পূরণ করা হবে।

Behine সেটআপ, movieEvent ভিডিও ইভেন্টের প্রতিনিধিত্ব করে। এটি ভিডিও তথ্য আপডেট এবং পড়তে ব্যবহৃত হয়। ইভেন্টে "mov.read ()" মানে পড়া।

ছবি প্রদর্শন ছাড়া, ফাংশন ইমেজ ভিডিও প্রদর্শন করতে পারে। আমরা ভিডিও বস্তুকে একটি গতিশীল ছবি হিসেবে বিবেচনা করতে পারি। প্রথম প্যারামিটার, আমরা ভিডিও বস্তুর পরিবর্তনশীল নাম পূরণ করি। দ্বিতীয় এবং তৃতীয় প্যারামিটার হল ভিডিও দ্বারা টানা অনুভূমিক এবং উল্লম্ব সমন্বয়। চতুর্থ এবং পঞ্চম প্যারামিটার ভিডিও প্রদর্শনের দৈর্ঘ্য এবং প্রস্থ নির্ধারণ করে।

ফাংশন.play () মানে খেলা। ফাংশন.stop () মানে স্টপ, এবং এটি ভিডিও রিসেট করবে। ফাংশন। বিরতি () মানে বিরতি। এটি বর্তমান বাজানোকে বাধাগ্রস্ত করবে, যা ফাংশন.play () চালু না হওয়া পর্যন্ত চলবে।

ধাপ 6: ভিডিও গতি নিয়ন্ত্রণ

কোড উদাহরণ (10-4):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ ভিডিও।*;

সিনেমা mov;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (0);

mov = নতুন মুভি (এটি, "transit.mov");

}

void movieEvent (মুভি মুভি) {

mov.read ();

}

অকার্যকর ড্র () {

ছবি (mov, 0, 0, প্রস্থ, উচ্চতা);

ভাসা newSpeed = mouseX/(float) প্রস্থ * 4;

mov.speed (newSpeed);

}

অকার্যকর চাপানো () {

যদি (কী == 'পি') {

mov.play ();

}

যদি (কী == 's') {

mov.stop ();

}

যদি (কী == 'ডি') {

mov.pause ();

}

}

[/cceN_cpp]

কোড ব্যাখ্যা করুন:

ফাংশন.speed () ভিডিও চালানোর গতি নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে। যখন প্যারামিটারের মান 1 হয়, খেলার গতি স্বাভাবিক থাকে। যখন মান 1 এর বাইরে, তখন ত্বরান্বিত করুন; যখন এটি 1 এর নিচে, তারপর গতি বাড়ান।

যেহেতু আমরা স্থানীয় পরিবর্তনশীল newSpeed তৈরি করেছি এবং এটি ফাংশন setSpeed () এ আমদানি করেছি, মাউসের সমন্বয় সরাসরি ভিডিও প্লে করার গতিকে প্রভাবিত করবে।

ভিডিও সম্পর্কে আরও উদাহরণের জন্য, আপনি লাইব্রেরিগুলি উল্লেখ করতে পারেন - কেস লাইব্রেরিতে ভিডিও।

ধাপ 7: সাধারণ ইভেন্টগুলি প্রক্রিয়া করা

পূর্বে, আমরা শুধুমাত্র keyPressed () ইভেন্ট চালু করেছি। কীবোর্ড চাপার পর এটি চালু হবে। নিম্নলিখিতগুলিতে, আমরা আপনার জন্য প্রক্রিয়াকরণে অন্যান্য সাধারণ ঘটনাগুলি উপস্থাপন করব।

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

ঘটনা প্রবাহ

ইভেন্টের এক্সিকিউশন অর্ডার জানতে আমরা একটি উদাহরণ ব্যবহার করতে পারি।

কোড উদাহরণ (10-5):

[cceN_cpp থিম = "ভোর"] অকার্যকর সেটআপ () {

ফ্রেমরেট (2);

println (1);

}

অকার্যকর ড্র () {

println (2);

}

অকার্যকর মাউসপ্রেসড () {

println (3);

}

অকার্যকর মাউস মুভড () {

println (4);

}

অকার্যকর মাউস রিলিজ () {

println (5);

}

অকার্যকর চাপানো () {

println (6);

}

void keyReleased () {

println (7);

} [/cceN_cpp]

কোড ব্যাখ্যা করুন:

ফাংশন সেটআপে, ফাংশন ফ্রেমরেট () প্রোগ্রামটির অপারেট স্পিড রেট সেট করেছে 2 ফ্রেম প্রতি সেকেন্ড। ফ্রেম রেট কমানো আমাদের কনসোলের আউটপুট পর্যবেক্ষণ করতে সাহায্য করতে পারে যদি ট্রিগার করা ঘটনাগুলি অবিলম্বে পিছনে নতুন ডেটা দ্বারা ব্রাশ করা হয়।

আপনার মাউস সরানোর চেষ্টা করুন, মাউস ক্লিক করুন, মাউস ছেড়ে দিন এবং আউটপুট ফলাফল পর্যবেক্ষণ করুন। Println এর মাধ্যমে ইভেন্ট এক্সিকিউশন অর্ডার সম্পর্কে জানুন।

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

ইভেন্টগুলি ক্রমানুসারে কার্যকর হবে। বর্তমান ইভেন্টের সমস্ত কোড বাস্তবায়িত হওয়ার পরে, এটি পরবর্তী ইভেন্টে কোডটি কার্যকর করবে।

ধাপ 8: ব্যাপক উদাহরণ-সঙ্গীত কীবোর্ড

নতুনভাবে ধরা পড়া ইভেন্টগুলির সাথে একত্রিত হয়ে, আমরা আমাদের প্রোগ্রামে নতুন ইন্টারঅ্যাকশন যুক্ত করতে পারি। পরবর্তী, মাত্র কয়েক মিনিটের মধ্যে, আমরা সহজেই একটি সঙ্গীত কীবোর্ড এনালগ করতে পারি।

ভিডিও ওয়েবসাইট:

কোড উদাহরণ (10-6):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ সাউন্ড।*;

সাউন্ডফাইল সাউন্ড 1, সাউন্ড 2, সাউন্ড 3, সাউন্ড 4, সাউন্ড 5;

বুলিয়ান কী 1, কী 2, কী 3, কী 4, কী 5;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (255);

noStroke ();

sound1 = নতুন SoundFile (এই, "do.wav");

sound2 = নতুন SoundFile (এই, "re.wav");

sound3 = নতুন SoundFile (এই, "mi.wav");

sound4 = নতুন SoundFile (এই, "fa.wav");

sound5 = নতুন SoundFile (এই, "so.wav");

}

অকার্যকর ড্র () {

পটভূমি (255, 214, 79);

rectMode (কেন্দ্র);

ভাসা w = প্রস্থ * 0.1;

ভাসা h = উচ্চতা * 0.8;

যদি (কী 1) {

পূরণ (255);

} অন্য {

পূরণ করুন (238, 145, 117);

}

রেকট (প্রস্থ/6, উচ্চতা/2, ওয়াট, এইচ);

যদি (কী 2) {

পূরণ (255);

} অন্য {

পূরণ করুন (246, 96, 100);

}

রেকট (প্রস্থ/6 * 2, উচ্চতা/2, ওয়াট, এইচ);

যদি (কী 3) {

পূরণ (255);

} অন্য {

পূরণ করুন (214, 86, 113);

}

রেকট (প্রস্থ/6 * 3, উচ্চতা/2, ওয়াট, এইচ);

যদি (কী 4) {

পূরণ (255);

} অন্য {

পূরণ করুন (124, 60, 131);

}

রেকট (প্রস্থ/6 * 4, উচ্চতা/2, ওয়াট, এইচ);

যদি (কী 5) {

পূরণ (255);

} অন্য {

পূরণ করুন (107, 27, 157);

}

রেকট (প্রস্থ/6 * 5, উচ্চতা/2, ওয়াট, এইচ);

}

অকার্যকর চাপানো () {

যদি (কী == 'a') {

সাউন্ড ১. প্লে ();

key1 = সত্য;

}

যদি (কী == 's') {

sound2.play ();

key2 = সত্য;

}

যদি (কী == 'ডি') {

sound3.play ();

key3 = সত্য;

}

যদি (কী == 'f') {

sound4.play ();

key4 = সত্য;

}

যদি (কী == 'জি') {

সাউন্ড 5. প্লে ();

key5 = সত্য;

}

}

void keyReleased () {

যদি (কী == 'a') {

কী 1 = মিথ্যা;

}

যদি (কী == 's') {

কী 2 = মিথ্যা;

}

যদি (কী == 'ডি') {

key3 = মিথ্যা;

}

যদি (কী == 'f') {

key4 = মিথ্যা;

}

যদি (কী == 'জি') {

key5 = মিথ্যা;

}

} [/cceN_cpp]

কোড ব্যাখ্যা করুন:

আপেক্ষিক শব্দের তথ্য পড়ার জন্য আমাদের একাধিক অডিও অবজেক্ট তৈরি করতে হবে যাতে বিভিন্ন কী চালু হওয়ার সময় বিভিন্ন শব্দ বাজাতে পারে।

এখানে আমরা একটি নতুন ইভেন্ট কী রিলিজ () ব্যবহার করি। এই ইভেন্টের কাজ হল কীবোর্ডের রঙকে তার আসল রঙে ফিরিয়ে আনা। যখন চাবি রিলিজ, এটি ট্রিগার করা হবে।

মাথায় ঘোষিত 5 টি বুলিয়ান মান কী -এর অবস্থা সনাক্ত করতে ব্যবহৃত হয়।

ধাপ 9: ব্যাপক উদাহরণ-সঙ্গীত প্যালেট 1

কীবোর্ড ইভেন্ট ছাড়াও, মাউস ইভেন্ট একটি ভাল জিনিস যা আমাদের এটি নমনীয়ভাবে ব্যবহার করতে হবে। নিচের উদাহরণটি আমাদের জন্য একটি মিউজিক প্যালেট তৈরি করা, যার মধ্যে আমরা মাউস সম্পর্কিত দুটি ইভেন্ট ব্যবহার করেছি।

ভিডিও ওয়েবসাইট:

কোড উদাহরণ (10-7):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ সাউন্ড।*;

সাউন্ডফাইল সাউন্ড 1, সাউন্ড 2, সাউন্ড 3, সাউন্ড 4, সাউন্ড 5;

বুলিয়ান isDragging;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (255, 214, 79);

noStroke ();

sound1 = নতুন SoundFile (এই, "do.wav");

sound2 = নতুন SoundFile (এই, "re.wav");

sound3 = নতুন SoundFile (এই, "mi.wav");

sound4 = নতুন SoundFile (এই, "fa.wav");

sound5 = নতুন SoundFile (এই, "so.wav");

}

অকার্যকর ড্র () {

যদি (isDragging) {

পূরণ করুন (107, 27, 157, 100);

ellipse (mouseX, mouseY, 16, 16);

}

}

অকার্যকর মাউস ড্র্যাগড () {

isDragging = সত্য;

যদি (mouseX> 100 && mouseX <105) {

সাউন্ড ১. প্লে ();

}

যদি (mouseX> 200 && mouseX <205) {

sound2.play ();

}

যদি (mouseX> 300 && mouseX <305) {

sound3.play ();

}

যদি (mouseX> 400 && mouseX <405) {

sound4.play ();

}

যদি (mouseX> 500 && mouseX <505) {

সাউন্ড 5. প্লে ();

}

}

অকার্যকর মাউস রিলিজ () {

isDragging = মিথ্যা;

} [/cceN_cpp]

কোড ব্যাখ্যা করুন:

আমরা আশা করি যে আমরা যখন মাউস টিপে টেনে আনব তখনই আমরা ছবি আঁকতে পারব। সুতরাং আমাদের বর্তমান অবস্থা পেতে একটি বুলিয়ান পরিবর্তনশীল isDragging তৈরি করতে হবে।

মাউস টেনে নেওয়ার সময়, isDragging সত্য মান হয়ে যায় যাতে ড্র এর মধ্যে অঙ্কন ফাংশনগুলি সম্পাদিত হয়। এটি পর্দায় চিহ্ন রেখে যাবে। যখন আমরা মাউস ছেড়ে দেই, isDragging মিথ্যা মান হয়ে যায়। সুতরাং ফাংশন ড্র এ ড্রয়িং ফাংশন এক্সিকিউশন বন্ধ করবে।

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

ধাপ 10: ব্যাপক উদাহরণ-সঙ্গীত প্যালেট 2 (আপডেট সংস্করণ)

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

আপনি নীচের লিঙ্কে ভিডিও দেখতে পারেন:

v.qq.com/x/page/w03226o4y4l.html

কোড উদাহরণ (10-8):

[cceN_cpp থিম = "ভোর"] আমদানি প্রক্রিয়াকরণ সাউন্ড।*;

সাউন্ডফাইল সাউন্ড 1, সাউন্ড 2, সাউন্ড 3, সাউন্ড 4, সাউন্ড 5;

বুলিয়ান isDragging;

অকার্যকর সেটআপ() {

আকার (640, 360);

পটভূমি (255, 214, 79);

noStroke ();

sound1 = নতুন SoundFile (এই, "do.wav");

sound2 = নতুন SoundFile (এই, "re.wav");

sound3 = নতুন SoundFile (এই, "mi.wav");

sound4 = নতুন SoundFile (এই, "fa.wav");

sound5 = নতুন SoundFile (এই, "so.wav");

}

অকার্যকর ড্র () {

যদি (isDragging) {

স্ট্রোক (107, 27, 157, 100);

স্ট্রোকওয়েট (10);

লাইন (mouseX, mouseY, pmouseX, pmouseY);

}

}

অকার্যকর মাউস ড্র্যাগড () {

isDragging = সত্য;

যদি ((mouseX - 100) * (pmouseX - 100) <0) {

সাউন্ড ১. প্লে ();

}

যদি ((mouseX - 200) * (pmouseX - 200) <0) {

sound2.play ();

}

যদি ((mouseX - 300) * (pmouseX - 300) <0) {

sound3.play ();

}

যদি ((mouseX - 400) * (pmouseX - 400) <0) {

sound4.play ();

}

যদি ((mouseX - 500) * (pmouseX - 500) <0) {

সাউন্ড 5. প্লে ();

}

}

অকার্যকর মাউস রিলিজ () {

isDragging = মিথ্যা;

} [/cceN_cpp]

কোড ব্যাখ্যা করুন:

এখানে আমরা প্রসেসিং সিস্টেমে বহন করা দুটি ভেরিয়েবল pmouseX এবং pmouseY ব্যবহার করেছি। এগুলি মাউসএক্স এবং মাউসওয়াইয়ের অনুরূপ তবে তারা যা পেয়েছিল তা হ'ল শেষ ফ্রেমে মাউসের সমন্বয়।

ফাংশন ড্র -এ, আমরা মূল ফাংশন ellipse () প্রতিস্থাপন করতে ফাংশন লাইন () ব্যবহার করেছি। এটি শেষ ফ্রেমের স্থানাঙ্ককে সরাসরি বর্তমান ফ্রেমের সমন্বয়ের সাথে সংযুক্ত করে। সুতরাং আমরা সুসঙ্গত সরলরেখা বা বক্ররেখা আঁকতে পারি।

মাউস ড্র্যাগড ইভেন্টে, আমরা একটি নতুন ট্রিগারিং কন্ডিশন ডিজাইন করেছি।একটি নির্দিষ্ট স্থানাঙ্ক অতিক্রম করা হয়েছে কিনা তা জানতে শেষ ফ্রেম এবং বর্তমান ফ্রেমের সমন্বয় একই দিকে আছে কিনা তা বিচারের মাধ্যমে। এই শর্তটি উদাহরণ হিসেবে নিন: "যদি ((mouseX - 100) * (pmouseX - 100) <0)"। এর মধ্যে, "মাউসএক্স -100" থেকে প্রাপ্ত ইতিবাচক এবং নেতিবাচক মান থেকে, আমরা জানতে পারি যে মাউসএক্স অনুভূমিক কুডিনেট 100 এর ডান বা বাম দিকে আছে কি না। একইভাবে "pmouseX - 100" এর সাথে। অতএব, যখন সামনে এবং পিছনে দুটি পয়েন্ট একই দিকে না থাকে, একটি ধনাত্মক একটি নেতিবাচক গুণ করে, এটি একটি নতুন নেতিবাচক সংখ্যা পাবে। এইভাবে মৃত্যুদণ্ডের শর্ত সন্তুষ্ট।

উপরের একটি সরলীকৃত অভিব্যক্তি, যা চতুরতার সাথে একটি নির্দিষ্ট গাণিতিক অ্যালগরিদম ব্যবহার করেছে-দুটি নেগেটিভ গুণ করলে একটি ইতিবাচক সৃষ্টি হবে। আপনি আলাদাভাবে আলোচনা করার জন্য এটিকে দুটি পরিস্থিতিতে ভাগ করতে পারেন। যাইহোক, রায় শর্তাবলী লিখতে অনেক বেশি জটিল। রায় শর্তাবলী "যদি ((mouseX = 100) || (mouseX> 100 && pmouseX <= 100))" সোর্স কোডের নির্ধারিত অবস্থার সমতুল্য।

ধাপ 11: অডিও এবং ভিডিও নিয়ন্ত্রণ সম্পর্কে আপেক্ষিক কাজ

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

আরও পরিচিতির জন্য, আপনি অফিসিয়াল ওয়েবসাইট থেকে নথিগুলি উল্লেখ করতে পারেন।

অডিও (https://processing.org/reference/libraries/sound/index.html)

ভিডিও (https://processing.org/reference/libraries/video/index.html)

এই নিবন্ধটি ডিজাইনার ওয়েঞ্জির কাছ থেকে এসেছে।

ধাপ 12: আপেক্ষিক রিডিং:

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং গাইডেন্স-প্রক্রিয়াকরণ প্রাথমিক স্পর্শ

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা – আপনার প্রথম প্রসেসিং প্রোগ্রাম তৈরি করুন

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (প্রথম অংশ)

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ)

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং গাইডেন্স – প্রোগ্রাম প্রসেস কন্ট্রোল- লুপ স্টেটমেন্ট

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং গাইডেন্স-প্রোগ্রাম প্রসেস কন্ট্রোল-কন্ডিশন স্টেটমেন্ট (পার্ট ওয়ান)

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং গাইডেন্স-প্রোগ্রাম প্রসেস কন্ট্রোল-কন্ডিশন স্টেটমেন্ট (পার্ট টু)

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-কাস্টম ফাংশন এবং ফ্র্যাক্টাল পুনরাবৃত্তি

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-কাস্টম ফাংশন এবং ফ্র্যাক্টাল পুনরাবৃত্তি

ডিজাইনারের জন্য আকর্ষণীয় প্রসেসিং প্রোগ্রামিং নির্দেশিকা-রঙ নিয়ন্ত্রণ

ধাপ 13: উৎস

এই নিবন্ধটি থেকে:

যদি আপনার কোন প্রশ্ন থাকে, আপনি contact [email protected] এ যোগাযোগ করতে পারেন।

প্রস্তাবিত: