Chuck มีความสามารถในการสื่อสารกับเครื่องดนตรีอิเล็กทรอนิกส์ทาง MIDI โดยใน Chuck จะมีคลาส MIDI ในตัว การเรียกใช้ความสามารถทาง MIDI ใน Chuck ทำได้ดังตัวอย่าง (จาก Official Chuck Tutorial)
MidiIn min; MidiMsg msg; // open midi receiver, exit on fail if ( !min.open(0) ) me.exit(); while( true ) { // wait on midi event min => now; // receive midimsg(s) while( min.recv( msg ) ) { // print content <<< msg.data1, msg.data2, msg.data3 >>>; } }
จากการทดลองพบว่า
- msg.data1 คือข้อมูล Channel และคำสั่ง MIDI อื่น ๆ เช่น Note-On, Note-Off
- msg.data2 คือขั้นเสียง
- msg.data3 คือความดัง (Velociy)
MidiIn min; MidiMsg msg; min.open(0) => int AmIOpen; if(!AmIOpen) { <<< "Can not Open MIDI Input Port" >>>; me.exit(); }else { while(true) { min => now; while(min.recv(msg)) { <<< msg.data1,msg.data2,msg.data3,"MIDI Message">>>; if(msg.data3!=0) { if(msg.data2==59) { Machine.add("gong01.ck"); } if(msg.data2==60) { Machine.add("gong02.ck"); } } } } }
เราใช้ msg.data# เป็นเงื่อนไขให้ Chuck เพิ่ง shred ของฆ้องแต่ละลูกเข้าไปใน Chuck ได้ด้วยคำสั่ง
Machine.add("gong01.ck");
เมื่อ gong01.ck gong02.ck ... เป็นสคริปต์สังเคราะห์เสียงฆ้องแต่ละลูก แต่นี่หมายความว่าที่เครื่องคอมพิวเตอร์จะต้องรัน Chuck อยู่แล้วด้วยคำสั่ง
# chuck --loop
ด้วยวิธีนี้ Chuck จะเป็นคนจัดการเรื่องการสังเคราะห์เสียงหลาย ๆ เสียงพร้อม ๆ กันได้เอง เราไม่ต้องเขียนโปรแกรมขึ้นมาใหม่เลย นั่นหมายความว่าหากเราสามารถสร้างสคริปต์สังเคราะห์เสียงเครื่องดนตรีไทยชนิดต่าง ๆ ได้ ชุดโปรแกรมชุดนี้ก็สามารถรับสัญญาณ MIDI มาตรฐานจากโปรแกรมทั่ว ๆ ไปและสร้างเสียงดนตรีไทยทั้งวงได้ทันที
1 ความคิดเห็น:
แสดงความคิดเห็น