5 กรกฎาคม 2558

Published กรกฎาคม 05, 2558 by with 0 comment

สร้างเสียงสังเคราะห์ MIDI ในภาษา Python

สวัสดีผู้อ่านทุกท่านครับ หลังจากบทความที่แล้ว อัดและเล่นเสียง NumPy arrays ในภาษา Python บทความนี้ผมจะพาผู้อ่านไปเขียนโปรแกรมสร้างเสียงสังเคราะห์ MIDI ในภาษา Python กันครับ

MIDI คืออะไร ?
MIDI (Music Instrument Digital Interface) เป็นโพรโทคอลมาตรฐานสำหรับการประสานเครื่องดนตรีแบบดิจิทัลครับ
อ่านเพิ่มเติมได้ที่ https://th.wikipedia.org/wiki/มิดิ

ในการสร้างเสียงสังเคราะห์ MIDI ในภาษา Python ผมขอแนะนำโมดูลตัวช่วยที่มีชื่อว่า "Pyknon"

โมดูล Pyknon เป็นโมดูลสำหรับใช้สร้างเสียงสังเคราะห์ MIDI ได้แบบง่าย ๆ และรวดเร็ว โดยใส่เสียงโน้ตที่ต้องการลงไป และเก็บเสียงไว้ในไฟล์ MIDI

  • รองรับทั้ง Python 2 และ Python 3

  • ใช้ MIT license


สามารถติดตั้งได้โดยใช้คำสั่ง pip :
pip install pyknon

ตัวอย่างการใช้งาน

โค้ดตัวอย่างจากหน้าหลักโมดูล Pyknon

[python]
from pyknon.genmidi import Midi
from pyknon.music import NoteSeq

notes1 = NoteSeq("D4 F#8 A Bb4")
midi = Midi(1, tempo=90) # จังหวะ 90
midi.seq_notes(notes1, track=0)
midi.write("demo.mid")
[/python]

ผลลัพธ์





เพลงช้าง
จากคอร์สเพลง
ช้าง ช้าง ช้าง ช้าง ช้าง
5 5 5 5 5
น้องเคยเห็นช้างหรือเปล่า
5 3 2 3 5 1
ช้างมันก็ตัวไม่เบา
5 3 2 3 1 2
จมูกยาวๆเรียกว่างวง
1 6. 1 1 6. 5. 1
มีเขี้ยวใต้งวงเรียกว่างา
1 6. 1 1 6. 5. 1
มีหูมีตา หางยาว
5 6 5 3 2 1.

แปลงเป็น
G G G G G
G E D E G C
G E D E C D
C A. C C A. G. C
C A. C C A. G. C
G A G E D C.

นำมาสร้างเสียงสังเคราะห์

[python]
from pyknon.genmidi import Midi
from pyknon.music import NoteSeq
notes1 = NoteSeq("G G G G G G E D E G C G E D E C D C A. C C A. G. C C A. C C A. G. C G A G E D C.")
midi = Midi(5, tempo=70) # จังหวะ 70
midi.seq_notes(notes1, track=0)
midi.write("demo2.mid")
[/python]

ผลลัพธ์


อ่านเอกสารการใช้งานได้ที่ https://s3.amazonaws.com/musicforgeeksandnerds.com/Pyknon+from+Music+for+Geeks+and+Nerds.pdf
หน้าหลักโมดูล https://kroger.github.io/pyknon/

ลองสร้างเสียงสังเคราะห์ดนตรีมาแบ่งปันกันดูครับ :D

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)