ภาษาโปรแกรมมิ่งเสียงที่มีเอกลักษณ์เฉพาะตัวชื่อ SAPT (Sound as Pure Form) เพิ่งได้รับความสนใจจากชุมชนโปรแกรมมิ่งดนตรี ภาษานี้พัฒนาขึ้นครั้งแรกในปี 2011 โดย James McCartney ผู้สร้าง SuperCollider โดย SAPT ผสมผสานองค์ประกอบจาก Forth และ APL เพื่อสร้างภาษาแบบ stack-based ที่ออกแบบมาเฉพาะสำหรับการสังเคราะห์เสียงและการแสดงสด
คุณสมบัติหลักของ SAPT :
- ไวยากรณ์แบบต่อเชื่อมกันแบบสแต็กที่ได้แรงบันดาลใจจาก Forth
- การแมปอาร์เรย์และการดำเนินการเชิงฟังก์ชันแบบ APL
- ระบบ "Rays" สำหรับการแสดงลำดับเสียงที่ไม่มีที่สิ้นสุด
- รองรับตัวควบคุม Snyderphonics Manta ในตัว
- ออกแบบมาสำหรับการแต่งเพลงแบบสดแบบอิมโพรไวซ์
- เดิมใช้ได้เฉพาะ macOS (2011) ขณะนี้กำลังพัฒนาเวอร์ชันข้ามแพลตฟอร์ม
การยอมรับจากชุมชนและการพัฒนาข้ามแพลตฟอร์ม
ภาษานี้ได้จุดประกายความสนใจในหมู่นักพัฒนาที่คุ้นเคยกับเครื่องมือที่คล้ายคลึงกัน สมาชิกชุมชนได้สังเกตเห็นแนวทางการออกแบบที่รอบคอบ โดยเฉพาะอย่างยิ่งวิธีที่องค์ประกอบฟังก์ชันแนลที่ได้แรงบันดาลใจจาก APL เสริมกับกระบวนทัศน์แบบ stack-based การผสมผสานนี้ดูเหมือนจะเป็นส่วนหนึ่งของแนวโน้มที่เพิ่มขึ้น โดยมีโปรเจกต์อื่นๆ เช่น Uiua ก็กำลังสำรวจจุดตัดระหว่างภาษาอาร์เรย์และการโปรแกรมแบบ concatenative
แม้ว่า SAPT จะรองรับเฉพาะ macOS ในตอนแรก แต่ชุมชนได้เข้ามาช่วยแก้ไขข้อจำกัดด้านแพลตฟอร์ม ขณะนี้มีการพัฒนา fork ข้ามแพลตฟอร์มอยู่ ทำให้ภาษานี้เข้าถึงได้ง่ายขึ้นสำหรับผู้ใช้ Linux และ Windows ความพยายามในการพัฒนานี้สะท้อนถึงความสนใจของชุมชนในวงกว้างที่ต้องการขยายการเข้าถึงเครื่องมือโปรแกรมมิ่งเสียงเฉพาะทาง
แนวทางเทคนิคและปรัชญาการออกแบบ
SAPT ใช้แนวทางที่โดดเด่นในการโปรแกรมมิ่งเสียงโดยการแทนเสียงเป็นรังสี - ลำดับที่อาจไม่มีที่สิ้นสุดซึ่งสามารถประมวลผลได้โดยใช้การดำเนินการอาร์เรย์ระดับสูง ภาษานี้เน้นความกระชับและการแสดงออก โดยมีเป้าหมายที่จะบรรลุพฤติกรรมเสียงที่ซับซ้อนด้วยโปรแกรมที่สั้นกว่า
ไวยากรณ์ปฏิบัติตามโมเดล concatenative คล้ายกับ Forth ซึ่งการดำเนินการจะทำบนสแต็ก อย่างไรก็ตาม SAPT ขยายสิ่งนี้ด้วยความสามารถในการแมปอาร์เรย์แบบ APL ทำให้การดำเนินการสามารถนำไปใช้โดยอัตโนมัติกับค่าหรือสตรีมหลายตัว ตัวเลือกการออกแบบนี้ทำให้เหมาะสำหรับงานการแต่งเพลงสดที่การปรับเปลี่ยนอย่างรวดเร็วและการเปลี่ยนแปลงพารามิเตอร์แบบเรียลไทม์เป็นสิ่งสำคัญ
การเปรียบเทียบกับเครื่องมือที่มีอยู่
ภูมิทัศน์การโปรแกรมมิ่งเสียงมีตัวเลือกที่ได้รับการยอมรับหลายตัวอยู่แล้ว เช่น SuperCollider, Pure Data และ ChucK โดย SAPT ทำให้ตัวเองโดดเด่นผ่านการมุ่งเน้นไปที่ lazy evaluation และแนวคิดการโปรแกรมแบบฟังก์ชันที่นำไปใช้กับสตรีมเสียง การสนทนาในชุมชนเผยให้เห็นว่าผู้ใช้ชื่นชมการมีกระบวนทัศน์หลายแบบ เนื่องจากแนวทางที่แตกต่างกันทำให้งานบางอย่างง่ายขึ้น
ผู้ใช้บางคนเผชิญกับปัญหาในทางปฏิบัติ: ว่าจะใช้เครื่องมือที่ได้รับการยอมรับต่อไป เช่น SuperCollider ที่มีไลบรารีและทรัพยากรชุมชนมากมาย หรือจะสำรวจภาษาใหม่ๆ เช่น SAPT ที่มีไวยากรณ์ที่สง่างามกว่าแต่ต้องเริ่มต้นใหม่ทั้งหมด สิ่งนี้เน้นย้ำถึงความท้าทายที่ต่อเนื่องในโดเมนการโปรแกรมเฉพาะทางที่ต้นทุนการเปลี่ยนแปลงอาจมีนัยสำคัญ
ภาษาโปรแกรมมิ่งเสียงที่เกี่ยวข้อง:
- SuperCollider: สร้างโดย James McCartney เช่นกัน มีระบบนิเวศที่มั่นคง
- Sporth: ภาษาเสียงที่มีลักษณะคล้าย Forth พร้อม playground ออนไลน์
- Pure Data: ภาษาโปรแกรมมิ่งแบบภาพที่มี UI ข้ามแพลตฟอร์ม
- ChucK: ภาษาโปรแกรมมิ่งเสียงแบบข้อความ
- Csound: ภาษาสังเคราะห์เสียงความคมชัดสูง
- Glicol: ไวยากรณ์ที่ได้แรงบันดาลใจจากฮาร์ดแวร์ พร้อมการรองรับเว็บ WASM
การรวมฮาร์ดแวร์และการประยุกต์ใช้ในทางปฏิบัติ
SAPT มีการรองรับฮาร์ดแวร์เฉพาะทาง เช่น Snyderphonics Manta controller ในตัว ซึ่งแสดงให้เห็นถึงการมุ่งเน้นไปที่แอปพลิเคชันการแสดงสด การรวมนี้สะท้อนถึงเป้าหมายการออกแบบของภาษาในการรองรับการโต้ตอบและการทดลองทางดนตรีแบบเรียลไทม์
ภาษานี้ดูเหมือนจะผลิตเอาต์พุตเสียงคุณภาพสูง โดยสมาชิกชุมชนสังเกตเห็นคุณภาพที่อบอุ่นและคล้ายอนาล็อกของเสียงที่สร้างขึ้น สิ่งนี้แสดงให้เห็นว่าแม้จะมีการแยกแยะระดับสูง SAPT ยังคงรักษาความเที่ยงตรงของเสียงที่จำเป็นสำหรับการผลิตเพลงระดับมืออาชีพ
การเกิดขึ้นของ SAPT แสดงถึงนวัตกรรมที่ต่อเนื่องในภาษาโปรแกรมมิ่งเสียง โดยเสนอเครื่องมือใหม่ให้กับนักดนตรีและนักออกแบบเสียงสำหรับการแสดงออกอย่างสร้างสรรค์ ขณะเดียวกันก็สร้างขึ้นบนแนวคิดที่ได้รับการพิสูจน์แล้วจากทั้งกระบวนทัศน์การโปรแกรมแบบฟังก์ชันและ concatenative
อ้างอิง: sapt/README.md