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 ความคิดเห็น:
แสดงความคิดเห็น