ตำราฝึกชัก 01 (Starting ChucK - the Journal 01)
โดย kijjaz (kijjaz@yahoo.com)
จุดประสงค์ เพื่อเผยแพร่และทำให้เกิดกลุ่มนักดนตรี โปรแกรมเมอร์ และผู้ที่สนใจด้านดนตรีสังเคราะห์ เสียงสังเคราะห์ และมัลติมีเดีย เพิ่มขึ้นในประเทศไทย โดยเน้นให้เกิดกิจกรรมและการทดลองใหม่ๆ โดยเฉพาะการสามารถนำมาแสดงสด และทำงานร่วมกับการแสดงด้านอื่นๆได้ด้วย
มาเริ่มต้นพูดกันเลยดีกว่า เจอเน่านี่ก็จะเน้นไปที่เนื้อหาเกี่ยวกับ ดนตรีสังเคราะห์เป็นหลักเลยครับ แต่ก็อยากให้เป็นแบบสนุกๆ ไม่ใช่แบบวิชาการแก่ๆน่าเบื่อ แต่เหมือนมีอะไรใหม่ๆให้เล่นกันตื่นเต้นๆ
ดังนั้น เลยอยากจะเริ่มต้นเล่านิดหน่อย เกี่ยวกับ ภาษาเขียนโปรแกรมคอมพิวเตอร์ (Programming Language) สำหรับด้านดนตรีสังเคราะห์ (Music Synthesis) และเสียงสังเคราะห์ (Sound Synthesis) กัน
จาก http://en.wikipedia.org/wiki/Audio_programming_language> เราได้เรียนรู้สั้นๆเกี่ยวกับภาษาเขียนโปรแกรม สำหรับด้านเสียงต่างๆ ภาษาเหล่านี้ คือภาษาคอมพิวเตอร์ที่เราสามารถนำมาใช้ เขียน เพื่องานด้าน เสียง และดนตรี โดยเฉพาะได้
จริงๆแล้วก็มีภาษา หรือโปรแกรมต่างๆ ที่นำมาใช้ทำงานด้านนี้ได้ ไม่ว่าจะเป็นโปรแกรมของฟรี ของฟรีแบบ opensource หรือที่มีขาย ก็มีหลากหลาย แต่ความสามารถและจุดเด่นก็แตกต่างกันไปมากมาย ทำให้แต่ละกลุ่มคนนำไปใช้งานไม่เหมือนกัน
ถ้ายังไงก็จะขอแนะนำหลายๆภาษาก่อนสำหรับผู้ที่ต้องการศึกษาให้รู้จักหลากหลายตัวเข้าไว้ เริ่มจากของที่มีขายกันดีกว่า
ภาษาเขียนโปรแกรมที่มีขาย Kyma, Max/MSP, SynthEdit, SynthMaker
ที่สามารถหาเวอร์ชั่นที่เป็นของฟรีมาใช้ได้ก็อย่างเช่น SynthEdit, SynthMaker
ส่วนที่เป็นของฟรีที่เป็น opensource (เปิดเผยซอร์สโค้ด) อันนี้พวกคนในวงการ และนักศึกษา - อาจารย์ และนักวิจัย นักทดลอง จะสนใจกันเป็นพิเศษ ก็จะมี.. เอ่อ ก็มีมากมายเลยล่ะ หลากหลายให้เลือกใช้ด้วย เช่น (จะแนะนำที่อยากให้ไปลองอ่านดูนะครับ) Csound, jMax (ทำเป็นรูปแบบ Max/MSP บน Java), Nyquist, Pure Data (อันนี้แนะนำมากๆ เพราะเป็นตัวที่ทำตามสไตล์ Max/MSP และเป็นของฟรีที่เป็นที่นิยมพอสมควร), SuperCollider, และที่จะแนะนำในเจอเน่านี้ก็คือ ชัก - ChucK
โปรแกรม หรือภาษาเหล่านี้ โดยพื้นฐานเติบโตมาจาก ภาษาคอมพิวเตอร์ ซึ่งในสมัยก่อน หลักๆแล้วก็จะเป็นลักษณะที่เป็น code-based ก็คือเป็นการเขียน หรือ พิมพ์ ซอร์สโค้ดภาษาคอมพิวเตอร์นั้นๆลงไป ให้เครื่องทำการแปล แล้วนำเอาไปสั่งให้มันทำงาน (หรือ เอาไป Run นี่แหละ) แต่ภาษาเหล่านี้ แต่ละตัวก็มีความสามารถ ในลักษณะการเขียนโปรแกรมในยุคใหม่ๆเพิ่มมากขึ้นด้วยเช่น
- แต่ก่อน กว่าจะได้ผลจากโปรแกรมที่เขียน ต้องนำไปแปล นำมารัน เอาข้อมูลดิบป้อนให้ เป็นขั้นตอน แต่ปัจจุบัน สามารถพัฒนาให้สามารถนำมาใช้เล่นสด หรือเรียกว่าใช้งานแบบ real-time ได้ (เช่น ChucK, Pure Data นี่เลย ที่ออกแบบมาเหมาะกับการนำมาเล่นสดแบบ real-time กันเลย)
- แทนที่จะเป็นการเขียนด้วยข้อความอย่างเดียว ก็สามารถออกแบบโปรแกรมในลักษณะ เป็นกราฟฟิคได้ หรือสามารถสร้าง interface ที่เป็นกราฟฟิคไปด้วยได้ทันที (เช่น Pure Data เวลาจะโปรแกรมให้ได้สิ่งที่ต้องการ ก็อาศัยการ โยงสาย เราจะมองเห็นขั้นตอนการทำงานต่างๆ หรือการส่งข้อมูลชนิดต่างๆไปมาระหว่างวัตถุต่างๆที่เรามี ได้เป็นกราฟฟิคเลย)
- สามารถติดต่อกับอุปกรณ์อื่นๆภายนอกได้ เช่น นำเอาเสียงสดๆเข้าไปได้ เล่นเสียงสดๆออกมาผ่านทางซาวนด์การ์ด ติดต่อกับ HID (Human Interface Device) เช่น เม้าส์ คีย์บอร์ด จอยสติ๊ก ฯลฯ รวมไปถึง การติดต่อสื่อสารผ่านทาง network และ internet