แม้ว่าใน Sonic Pi เองก็มีส่วนประสานผู้ใช้อำนวยความสะดวกในการเขียนโปรแกรมแล้วก็ตาม แต่ในการศึกษาการสร้างโปรแกรมคอมพิวเตอร์แล้วยังมีข้อจำกัดอยู่ ดังนั้นการใช้ภาษา Python จึงมีข้อดีตรงที่มาเติมในส่วนที่การเขียนโปรแกรมด้วย Sonic Pi ไม่ได้กล่าวถึง
Sonic Pi รองรับพิธีการสื่อสารที่เรียกว่า Open Sound Control (OSC) [2][3] โดยจะเปิดพอร์ตสื่อสารที่ 4559 ไว้ และ python-sonic ก็ได้ใช้ช่องทางนี้สื่อสารกับ Sonic Pi
ความต้องการของระบบ
1. Sonic Pi2. Python3
3. python-osc และ python-sonic
4. ระบบเครื่องเสียงสำหรับติดตั้งกับ Raspberry Pi
ทั้ง Sonic Pi และ Python3 ได้มีการติดตั้งมาพร้อมกับ Raspbian อยู่แล้ว จะขอข้ามเรื่องการติดตั้งไป และสามารถศึกษาการติดตั้งระบบเสียงให้กับ Raspberry Pi ได้ที่ [5]
การติดตั้ง python-sonic และ python-osc
รายละเอียดการติดตั้งได้กล่าวไว้ใน [4] แล้ว แต่ไม่ได้ระบุไว้ชัดเจนว่าใช้กับ python รุ่นไหน ต่อไปจะกล่าวถึงการติดตั้งที่ใช้กับ python3 เท่านั้น ดังนี้1. update ระบบ
$ sudo apt-get update
2. ติดตั้ง python-osc ใช้คำสั่ง
$ sudo python3 -m pip install python-osc
3. ติดตั้ง python-sonic ใช้คำสั่ง
$ sudo python3 -m pip install python-sonic
หลังจากการติดตั้งเสร็จแล้วทุกอย่างก็พร้อมใช้งาน
ทดลองสร้างเพลงกัน
1. เปิดใช้งาน Sonic Pi และทดสอบระบบเสียง การเรียกใช้งาน Sonic Pi สามารถทำได้ทั้งการเรียกผ่านการ Click บน Icon หรือจาก command line2. เขียน Python script บันทึกไว้ใน song.py
from psonic import *
import time
delay = 0.5
notes =[]
notes.append([C5,D5,C5,A4,G4,A4,G4,E4])
notes.append([D4,E4,G4,A4,C4,E4,G4,A4,C5,D5,C5,A4])
notes.append([C5,D5,C5,E5,C5,A4,G4,E4,A4,G4,E4,D4,E4])
for i in range(len(nots)):
for n in nots[i]:
play(n)
time.sleep(delay)
time.sleep(delay)
3. เรียกใช้งาน Python script
$ python3 song.py
4. ศึกษาการใช้ Note, Chord, Sound effect เพิ่มเติมจาก Tutorial ของ Sonic Pi [6]
เอกสารอ้างอิง
[1] http://sonic-pi.net/
[2] http://opensoundcontrol.org/introduction-osc
[3] https://en.wikipedia.org/wiki/Open_Sound_Control
[4] https://github.com/gkvoelkl/python-sonic
[5] https://www.raspberrypi.org/documentation/configuration/audio-config.md
[6] http://sonic-pi.net/tutorial.html
Sign up here with your email
ConversionConversion EmoticonEmoticon