สร้างเพลงด้วย Python3 และ Sonic Pi

Python และ Sonic Pi [1] ได้รับการติดตั้งมากับ Raspbian  เพื่อให้ใช้งานกับ Raspberry Pi นานแล้ว ช่วงแรกทั้งสองยังแยกกันอยู่แต่ปัจจุบันมี python-sonic [4] เป็น python module มาช่วยประสานทั้งสองเข้าหากัน ทำให้สามารถใช้โปรแกรมภาษา Python สั่งงาน Sonic Pi ให้สังเคราะห์เสียงหรือสร้างเพลงได้

แม้ว่าใน Sonic Pi เองก็มีส่วนประสานผู้ใช้อำนวยความสะดวกในการเขียนโปรแกรมแล้วก็ตาม แต่ในการศึกษาการสร้างโปรแกรมคอมพิวเตอร์แล้วยังมีข้อจำกัดอยู่ ดังนั้นการใช้ภาษา Python จึงมีข้อดีตรงที่มาเติมในส่วนที่การเขียนโปรแกรมด้วย Sonic Pi ไม่ได้กล่าวถึง

Sonic Pi รองรับพิธีการสื่อสารที่เรียกว่า Open Sound Control (OSC) [2][3] โดยจะเปิดพอร์ตสื่อสารที่ 4559 ไว้ และ python-sonic ก็ได้ใช้ช่องทางนี้สื่อสารกับ Sonic Pi




ความต้องการของระบบ

1. Sonic Pi
2. 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 line

2.  เขียน 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
Previous
Next Post »