ภาษาโปรแกรมมิ่งเสียง SAPT ได้รับความสนใจในฐานะโปรเจกต์ล่าสุดของผู้สร้าง SuperCollider

ทีมชุมชน BigGo
ภาษาโปรแกรมมิ่งเสียง SAPT ได้รับความสนใจในฐานะโปรเจกต์ล่าสุดของผู้สร้าง SuperCollider

ภาษาโปรแกรมมิ่งเสียงที่มีเอกลักษณ์เฉพาะตัวชื่อ 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