electronic-music

ตำราฝึกชัก 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

ุจริงๆในเน็ตก็มีแหล่งข้อมูลเกี่ยวกับ ดนตรีสังเคราะห์ เสียงสังเคราะห์ ดนตรีอิเลคโทรนิกส์มากมาย
แต่สิ่งที่ผมอยากเห็นในตอนนี้ ไม่ใช่แค่การที่เราหาแหล่งความรู้ได้อย่างเดียว
แต่สามารถรวมกลุ่มกัน ทำให้กลุ่มคนไดม้มาแชร์กัน และสร้างชุมชนที่มีกิจกรรมดีๆขึ้นมา
รวมถึงการที่นำเอาความรู้ประสบการณ์ด้านต่างๆกันมาผสมผสานกัน
ต่อไปบล็อกที่นี่ก็จะนำเสนอเรื่อง ดนตรีสังเคราะห์เป็นหลักครับ
ยังไงก็จะชวนเพื่อนๆมาร่วมกิจกรรมกันให้มากขึ้นเรื่อยๆแล้วกันฮะ

จะขอใช้ blog ของผมนี่ ในการรวบรวมสิ่งที่ต้องทำ
ในการเซ็ตระบบ linux เพื่อให้ใช้งานโปรแกรม ChucK และ miniAudicle ได้ครับ
สองโปรแกรมนี้เป็นโปรแกรมสำหรับเอาไว้เขียนโปรแกรมเพื่อการสร้างดนตรีสังเคราะห์
อ่านเกี่ยวกับโปรแกรมนี้ได้ที่

ChucK: http://chuck.cs.princeton.edu

miniAudicle: http://audicle.cs.princeton.edu/mini

ระบบ linux ที่ผมใช้อยู่ก็คือ Debian (testing) และ Ubuntu (Feisty)
แต่การปรับแต่งอันนี้ก็ใช้ได้กับทั้งระบบที่ stable จนถึง testing เลยครับ
ลองมาแล้ว ปลอดภัย

ในการเตรียมนี่ก็จะไม่เหมือนกับบน Windows, Mac OS X
ซึ่งโปรแกรมสองอันนี้สามารถหาโหลดมาเป็น Executable ได้เลย สบายใจ
พอเป็น Linux ก็ต้อง Compile เองซะหน่อยล่ะ
จะได้เลือกความสามารถตามที่เราต้องการ

ตอนนี้ใน Ubuntu และ Debian โปรแกรม ChucK นี่ได้เข้าสู่ repository แล้ว
แต่ว่าเป็น version เก่ากว่านั่นเอง (1.2.0.7)
ซึ่งปัจจุบันเป็นเวอร์ชั่น 1.2.0.8 มีความสามารถเพิ่มขึ้นมากมาย
จึงแนะนำให้ทำการ Compile เองมากกว่า

สำหรับสิ่งที่ต้องมีในระบบก็คือแพคเกจเหล่านี้:

(สำหรับการ compile) build-essential bison flex
(สำหรับ ChucK) libsndfile1-dev

ผมแนะนำให้คอมไพล์สำหรับใช้กับ ALSA และ Jack
แต่ถ้าใครอยากมีใช้แค่ version เดียว ก็ compile สำหรับใช้กับระบบเสียง ALSA ไปก่อนก็ได้

(สำหรับ ALSA) libasound2-dev
(สำหรับ Jack) libjack-dev

ดังนั้น รวมๆแล้ว สามารถลง package ทั้งหลายเหล่านี้ไว้ได้หมดเลย สำหรับเตรียมการ compile ด้วยการ
(เราต้องเป็น root นะครับ)

apt-get install build-essential bison flex libsndfile1-dev libasound2-dev libjack-dev

(สำหรับ Ubuntu ก็ทำข้างบนได้เลย โดยใช้ sudo ก่อน apt-get)

และสิ่งที่ต้องมีเพิ่มขึ้นมาอีกสำหรับการ Compile ตัว miniAudicle ก็คือ
wxWidgets Cross-platform C++ GUI toolkit (GTK+ development)

ดังนั้นให้ติดตั้งตัวนี้ด้วย: libwxgtk2.6-dev

(แม้ตอนนี้เราจะเห็นว่ามี เวอร์ชั่น 2.8 แล้ว แต่ตอนนี้การคอมไพล์ miniAudicle ยังไม่ซัพพอร์ท 2.8 ครับ)
- - -

มาเริ่ม compile กันเลย

สำหรับ ChucK นั้น
เมื่อ Extract ไฟล์ต่างๆ จากแพคเกจที่ดาวน์โหลดได้มาจาก http://chuck.cs.princeton.edu/release

(จะเป็นชื่อไฟล์ chuck-1.2.0.8.tgz <-- ปัจจุบันเวอร์ชั่น 1.2.0.8)

เมื่อเข้าไปในนั้นจะเห็น folder ชื่อ src ให้เข้าไป
แล้วทำการคอมไพล์ด้วยคำสั่งตามนี้ "make linux-alsa" หรือ "make linux-jack"
เลือกอันใดอันหนึ่ง ขึ้นอยู่กับว่า เราจะ compile สำหรับ alsa หรือ jack
เมื่อ compile เสร็จแล้ว ใน src นี่เองจะเห็นไฟล์ executable ที่ compile เสร็จแล้วชื่อ chuck
ถ้าอยากใช้ใน command-line ได้สะดวกๆ ก็ทำการ ก๊อปปี้ไฟล์ไปไว้ที่ /usr/bin
ปกติแล้ว ผมจะย้าย chuck ที่ compile สำหรับ alsa ไปไว้ตรงๆเลยที่ /usr/bin
ส่วน chuck ที่ compile สำหรับ jack จะตั้งชื่อใหม่แล้วย้ายไป คือเป็น /usr/bin/chuck-jack

- - -

ส่วนการ compile ตัว miniAudicle นั้น
ก็ใกล้เคียงกัน
คราวนี้พอ extract ไฟล์ของ miniAudicle ออกมา
(ซึ่งโหลดได้จาก http://audicle.cs.princeton.edu/mini/linux)

เข้าไปใน directory ของมัน
จะสามารถ make (ทำการ compile) ได้ทันที
โดยมีทางเลือกเหมือนเดิม คือการ "make linux-alsa" หรือ "make linux-jack"

เมื่อทำการ compile เสร็จแล้ว
ใน folder ชื่อ wxw จะเห็นไฟล์ executable ที่ compile เสร็จแล้วชื่อ miniAudicle
ผมก็ชอบ copy ไปไว้ที่ /usr/bin เช่นกัน.. แล้วก็อันที่ compile สำหรับ jack ให้ชื่อว่า miniAudicle-jack

- - -

ต่อไปก็มีการปรับแต่งอีกเล็กน้อย

เนื่องจาก ChucK และ miniAudicle
สามารถทำการติดต่อกับอุปกรณ์พวก USB HID ได้ เช่น.. คีย์บอร์ด เมาส์ จอยสติ๊ก
อุปกรณ์ควบคุมการเล่นเกมต่างๆ ที่เสียบ USB ฯลฯ
แต่ปกติแล้ว อุปกรณ์พวกนี้ จะ เขียน / อ่านได้โดย root เท่านั้น
ถ้าอยากให้ chuck, miniAudicle ใช้งานกับ HID ได้
ก็ต้องไปทำการ chmod ในขณะที่เป็น root ดังนี้ครับ

chmod a+r /dev/input/*

(ในกรณี Ubuntu ก็เหมือนกัน.. เพียงแค่เติม sudo เข้าไปข้างหน้า ก็เสร็จเรียบร้อย)

- - -

หลังจากนั้นก็ ขอให้เล่น ชัก กันอย่างสนุกสนานนะครับ
ใครที่อ่านมาแล้วไม่รู้ว่าพูดเรื่องอะไรอยู่
ให้ติดต่อ kijjaz ด่วน 5555..

โดยเฉพาะนักดนตรี และโปรแกรมเมอร์ที่สนใจทำดนตรีสังเคราะห์ ^_^


edit @ 2007/05/29 06:20:46
edit @ 2007/05/29 06:20:58


กิจจาศักดิ์ ตริยานนท์
View full profile