ผมกำลังฝึกเขียนภาษาไพธอน แล้วผมแกะเพลงนึงในความทรงจำสมัยเก่า อยากรู้ว่าคือเพลงอะไรครับ

# -*- coding: utf-8 -*-
import subprocess

def play_tone(duration, freq):
subprocess.call(["play", "-q", "-n", "-t", "alsa", "synth", str(duration), "square", str(freq)])
# try change sine wvw to square wave, or sawtooth wave
# กำหนดความถี่ของตัวโน้ต(Hz)
notes = {
'E4':329.69, 'F4':349.29,'F4S':369.99, 'G4': 392.00, 'A4': 440.00, 'B4': 493.88, 'C5': 523.25, 'D5': 587.33, 'E5': 659.25
} #Do=G4(392), Re=A4(440), Mi=B4(493.88), Fa=C5(523.25), Sol=D5(587.33), La=E5(659.25)
#Do=C4(261.63), Re=D4(293.66), Mi=E4=329.63, Fa=F4(349.23), Sol=G4(392.00), La=A4(440.00), Te=B4(493.88), Do=C5(523.25)
melody = [
('A4', 0.3), ('A4', 0.3), ('A4', 0.3), ('G4', 0.3), ('B4', 0.3), ('A4', 0.3), ('G4', 0.3),
('B4', 0.3), ('B4', 0.3), ('B4', 0.3), ('A4', 0.3), ('G4', 0.3), ('A4', 0.3), ('B4', 0.3),
('G4', 0.3), ('A4', 0.3), ('B4', 0.3), ('G4', 0.3), ('B4', 0.3), ('A4', 0.3), ('A4', 0.3),
('G4', 0.3), ('G4', 0.3), ('E4', 0.3), ('G4', 0.3)
]
for note, duration in melody:
freq = notes[note]
print("Playing {0}: {1}Hz".format(note, freq))
play_tone(duration, freq)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ข้างบนคือโค้ดที่ผมเขียนครับ



1. ส่วนที่สำคัญ คือ subprocess.call เป็น Library มาตรฐานของ Python ครับ ทำหน้าที่เป็น "สะพาน" เพื่อสั่งให้คอมพิวเตอร์รันคำสั่งภายนอก 

2. คำสั่ง play (SoX - Sound eXchange)  เป็นส่วนหนึ่งของโปรแกรมที่ชื่อว่า SoX ครับ
SoX คือโปรแกรมจัดการเสียงที่ทรงพลังมาก (ฉายาคือ "Swiss Army knife of sound processing")

3. (Advanced Linux Sound Architecture)
ALSA ไม่ใช่ตัวโปรแกรมที่สร้างเสียง แต่เป็น Audio Framework/Driver ของระบบปฏิบัติการ Linux ครับ
ในคำสั่งนี้  คือการบอก SoX ว่า "เมื่อสร้างเสียงเสร็จแล้ว ให้ส่งข้อมูลเสียงไปที่ Driver ของ ALSA เพื่อขับออกลำโพง"
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่