Ruby ในฐานะเครื่องมือแต่งเพลง: Sonic Pi
(bhmt.dev)-
Sonic Pi: ใช้ Ruby เป็นเครื่องมือแต่งเพลง
-
ภูมิหลัง
- เดิมผู้เขียนเรียนเอกดนตรี
- ระหว่างทำงานเป็นนักพัฒนาเว็บ ก็เริ่มหลงใหลในการทำงานเชิงเทคนิค
- เคยพยายามทำเพลงอิเล็กทรอนิกส์เพราะเล่นเครื่องดนตรีหลายชนิดได้ยาก แต่ก็ไม่สำเร็จ
- ไม่นานมานี้ได้กลับมาผสานดนตรีกับการเขียนโค้ดอีกครั้งผ่าน Sonic Pi
-
แนะนำ Sonic Pi
- Sonic Pi ที่สร้างโดย Sam Aaron เป็นซอฟต์แวร์ซินธิไซเซอร์ที่ควบคุมด้วยโค้ด
- ใช้ภาษาเฉพาะโดเมน (DSL) ที่ต่อยอดจาก Ruby เพื่อแมปแนวคิดทางดนตรีและเสียง
- ตัวอย่างเช่น ใช้สัญลักษณ์อย่าง
:c4เพื่อแทนโน้ต และใช้ตัวสร้างคอร์ดอย่างchord(:d3, :maj7)
-
เป้าหมายของโปรเจ็กต์
- เป้าหมายคือแต่งเดโมหนึ่งชิ้นโดยใช้เพียง Sonic Pi เท่านั้น
- แต่งเพลงด้วยโค้ดล้วน ๆ โดยไม่ใช้ MIDI หรือแซมเปิลภายนอก
-
ตัวอย่างโค้ดพื้นฐาน
- ตั้งค่า BPM ด้วย
use_bpm 70และตั้งค่าซินธิไซเซอร์ด้วยuse_synth :pulse - เล่นโน้ตและกำหนดช่วงเวลาด้วยโค้ดอย่าง
play :c2,sleep 0.25 - เล่นแพตเทิร์นด้วย
play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25
- ตั้งค่า BPM ด้วย
-
การปรับโค้ดให้กระชับ
- นิยามฟังก์ชันเพื่อลดโค้ดที่ซ้ำกัน
- สร้างแพตเทิร์นอาร์เพจจิโอด้วยฟังก์ชัน
def arpeggiate(root, is_minor = false) - ใช้บล็อก
in_thread doเพื่อรันโค้ดแบบขนาน
-
การรันแบบขนาน
- ใช้บล็อก
in_thread doเพื่อให้ "เครื่องดนตรี" สองชิ้นทำงานพร้อมกันได้ - ตัวอย่างเช่น รันอาร์เพจจิโอในเธรดหนึ่ง และรันเมโลดี้ในอีกเธรดหนึ่ง
- ใช้บล็อก
-
การทำเสียงประสานแบบคอรัส
- ใช้
ringเพื่อรวมโน้ตหลายตัวไว้ในลิสต์เดียว - เล่นโน้ตและกำหนดระยะเวลาค้างเสียงด้วย
play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8 - นิยามฟังก์ชัน
def choral_rings(notes, sus)เพื่อทำให้แพตเทิร์นคอรัสเรียบง่ายขึ้น
- ใช้
-
ไลฟ์ลูป
- ใช้
live_loopเพื่อสร้างลูปที่เล่นซ้ำไม่สิ้นสุด - นิยามลูปอย่าง
live_loop :harp doแล้วเขียนโค้ดไว้ด้านใน
- ใช้
-
บทสรุป
- การเขียนโปรแกรมไม่ได้เป็นเพียงวิทยาศาสตร์ แต่ยังเป็นศิลปะด้วย
- การเขียนโค้ดคือการกระทำเชิงสร้างสรรค์ และเป็นวิธีสื่อสารกับผู้อื่น
- Sonic Pi ทำให้สามารถผสานดนตรีกับการเขียนโค้ดเพื่อสร้างงานสร้างสรรค์ได้
สรุปโดย GN⁺
- Sonic Pi เป็นเครื่องมือสำหรับแต่งเพลงด้วยโค้ด โดยใช้ DSL ที่ต่อยอดจาก Ruby
- โปรเจ็กต์นี้มีเป้าหมายเพื่อแต่งเดโมหนึ่งชิ้นโดยใช้เพียง Sonic Pi
- การเขียนโปรแกรมไม่ได้มีแค่ด้านวิทยาศาสตร์ แต่ยังมีด้านศิลปะ ซึ่ง Sonic Pi แสดงให้เห็นได้อย่างดี
- เป็นตัวอย่างที่ดีของการผสานดนตรีเข้ากับการเขียนโค้ดเพื่อสร้างงานสร้างสรรค์
- เครื่องมือที่มีความสามารถคล้ายกัน ได้แก่ TidalCycles และ SuperCollider
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News