2 คะแนน โดย GN⁺ 2025-10-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Strudel REPL เป็น สภาพแวดล้อมสำหรับการเขียนโค้ดดนตรีสด แบบ โอเพนซอร์ส และใช้งานฟรีที่ทำงานบนเว็บเบราว์เซอร์
  • สามารถ สร้างและแก้ไขดนตรีแบบเรียลไทม์ ได้จากในเบราว์เซอร์โดยไม่ต้องติดตั้งซอฟต์แวร์เพิ่มเติม
  • โดยพื้นฐานใช้รูปแบบ REPL (Read–Eval–Print Loop) ซึ่งเมื่อผู้ใช้ป้อนโค้ด ระบบจะเล่น แพตเทิร์นเสียง ทันที
  • คุณสมบัติหลัก

    • ผู้ใช้สามารถทำ การจัดลำดับแพตเทิร์น เลือกเครื่องดนตรี และปรับแต่งเสียง ได้อย่างง่ายดายผ่านคำสั่งโค้ดอย่าง "s(\"[bd ]*2\").bank(\"tr909\").dec(.4)"
    • รองรับการปรับแต่งทางดนตรีอย่างละเอียด เช่น ดรัมแซมเพลอร์ (bank) หลายแบบ และการตั้งค่า decay
    • เนื่องจากสามารถแก้โค้ดและฟังผลลัพธ์ได้ทันทีแบบเรียลไทม์ จุดเด่นจึงอยู่ที่ การตอบสนองกลับอย่างฉับไว
  • การเข้าถึงและการใช้งาน

    • สามารถลองสร้างและทดลองดนตรีด้วย โค้ดง่าย ๆ ได้โดยไม่ต้องใช้ DAW (Digital Audio Workstation) หรือซอฟต์แวร์ดนตรีที่ซับซ้อน
    • แม้แต่ ผู้เริ่มต้นด้านดนตรีและการเขียนโปรแกรม ก็สามารถสนุกและได้ประสบการณ์สร้างสรรค์ด้วยอุปสรรคในการเริ่มต้นที่ต่ำ
    • ด้วยความเป็นโอเพนซอร์สและการสนับสนุนจากชุมชน จึงมีศักยภาพในการต่อยอดและการทำงานร่วมกันในอนาคต
  • การเปรียบเทียบและข้อดี

    • เมื่อเทียบกับแพลตฟอร์มไลฟ์โค้ดดิ้งเดิมอย่าง TidalCycles และ Sonic Pi แล้ว การที่ทำงานบน สภาพแวดล้อมเว็บ ทำให้เข้าถึงได้ง่ายและสะดวกกว่า
    • ทุกคนสามารถเริ่ม ประสบการณ์การเขียนโค้ดดนตรีสด ได้ทันทีโดยไม่ต้องผ่านขั้นตอนการติดตั้งหรือตั้งค่าเพิ่มเติม

1 ความคิดเห็น

 
GN⁺ 2025-10-15
ความคิดเห็นจาก Hacker News
  • มีเซสชันไลฟ์โค้ดดิ้งของ Strudel เจ๋ง ๆ อยู่บน YouTube เยอะมาก ขอแนะนำเป็นตัวอย่างคือ วิดีโอนี้
    • วิดีโอของ Switch Angel น่าประทับใจเป็นพิเศษ และทิวทอเรียลบน Instagram ของเขาก็น่าดูเหมือนกัน
    • หนึ่งในวิดีโอที่ฉันชอบมากคือ วิดีโอนี้ ที่ทำให้เสียงบรรยายรู้สึกเหมือนเป็นส่วนหนึ่งของเพลงเพราะเอฟเฟกต์กรองเสียง ดูแล้วสนุกมากโดยเฉพาะ
    • ถ้ามีใครลองรีมิกซ์เสียงของวิดีโอนี้ (รวมถึงเสียงร้อง) ก็น่าจะสนุกมาก
    • เหมือนลิงก์เดียวกันถูกแปะซ้ำสองครั้ง เลยสงสัยว่าลิงก์ที่สองที่ตั้งใจใส่จริง ๆ คืออะไร เพราะอยากดูอันนั้นด้วย
  • Strudel เป็นพอร์ต JavaScript ของ TidalCycles (Haskell) โดยต่างจาก TC ที่ใช้ SuperCollider เป็นซินธ์ ดูเหมือนว่า Strudel จะใช้ตัวเอนจินของตัวเองชื่อ superdough ตอนนี้ฉันกำลังเรียน SuperCollider sclang อยู่ และถ้ามีอัปเกรดเวอร์ชันก็คงอยากเอามาแชร์บน HN เพราะหัวข้อนี้มักมีการถกกันแบบลึก ๆ เสมอ แต่ sclang ก็เหมือน PHP ของโลกดนตรี คือหน้าตาแย่กว่าและสม่ำเสมอน้อยกว่า ถึงอย่างนั้นก็ทรงพลังและสนุกดี
    • ในฟอรัมของ SuperCollider มีการคุยกันเรื่องพอร์ต SuperCollider ไป wasm (โพสต์เกี่ยวกับการรองรับ WebAssembly) เลยสงสัยว่าในอนาคตสิ่งนี้จะถูกนำมาใช้ได้ไหม
    • ฉันเองก็เคยลองเล่น TidalCycles เพราะชอบไวยากรณ์ของ Haskell และอยากใช้งานมัน แต่ UI ของ Strudel ลื่นไหลมากจนยอมใช้ไวยากรณ์ JS แทน และก็เพิ่งรู้จักสิ่งที่เรียกว่า superdough จากตรงนี้ ซึ่งก่อนหน้านี้ไม่เคยเห็นมาก่อนเลยเลยยิ่งอยากรู้
    • ตอนที่เคยใช้ SuperCollider เมื่อก่อน ฉันใช้ Overtone ซึ่ง Overtone จะห่อทุกอย่างไว้ด้วย Closure API ทำให้กำหนดเสียงด้วย s-expression แทน sclang ได้ ฉันไม่แน่ใจเต็มที่ว่าเดี๋ยวนี้ Overtone ยังมีคนดูแลอยู่ไหม แต่ดูเหมือนว่ายังมีความเคลื่อนไหวอยู่บ้าง (เว็บไซต์ทางการ)
    • จากประสบการณ์ของฉัน sclang เหมือนลูกผสมของ Smalltalk กับ Ruby เป็นความ "ไม่สม่ำเสมอ" แบบเต็มตัว ทั้งแปลกหน้าและคุ้นเคยอย่างประหลาด แต่ถึงอย่างนั้นฉันก็คิดว่ามันยังสง่างามกว่า PHP มาก
  • สิ่งที่ทำให้ Strudel เจ๋งคือเครื่องมือดนตรีที่มีอยู่เดิมหลายตัวดูเก่าไปหน่อยและเหมือนติดอาการ NIH (not invented here) ทั้งที่สิ่งที่ต้องการจริง ๆ คืออะไรที่รันบน JS ได้ ตอนที่เครื่องมือยุคก่อนหน้าออกมา (เช่น sonic pi) สิ่งนี้ยังทำได้ยาก แต่ตอนนี้จังหวะมันพอดีมาก หวังว่าเครื่องมือรุ่นถัดไปจะมีอินเทอร์เฟซที่ภาพและโค้ดสื่อสารกันได้แบบสองทางจริง ๆ ตอนนี้ฉันคิดว่าสไลเดอร์เป็นองค์ประกอบที่เจ๋งมาก Bret Victor น่าจะภูมิใจ
  • ยังมีเครื่องมือชื่อ flok ด้วย ที่เอา strudel repl ไปผสานกับภาพของ hydra และยังมีสภาพแวดล้อม algorave อื่น ๆ อย่าง sclang ให้ใช้ด้วย โดยทุกอย่างซิงก์กันหมด (เดาว่าใช้ crdts) เหมาะมากสำหรับแจมดนตรีทางไกลกับเพื่อน ๆ (ลิงก์ flok)
    • แล้วก็มี dilber.io ที่เพิ่งออกมาใหม่ด้วย (ลิงก์ GitHub)
  • ฉันไม่ได้มีพรสวรรค์ด้านดนตรีเท่าไร แต่ก็ทำสิ่งนี้ออกมาได้
    $: arrange(
     [4, "<sh09_bd>(4,8)"],
     [4, "<sh09_bd>(4,8)"],
     [1, "<sh09_bd mfb512_sd>(6,6)"]
    ).s().fast(2).layer(x=>x.add("0,2")).gain(".4!2 .5").phaser(2).phasercenter("<4000 800 4000 4000>")
    
    $: s("gm_tinkle_bell").distort("<1 2 1 2:.5>").crush("<8 8 8 6 6 8 8>").chop(4)
    
    $: arrange(
     [2, "<c4 e4 g4>(3,8)"], 
     [1, "<f4 a4 c5>(3,8)"], 
     [1, "<c4 e4 g4>(3,8)"] 
    ).note().chop(4).fast(4).distort("<3:.5>").phaser(4).phasercenter("<800>").fm(4).fmdecay("<.05 .05 .1 .2>").fmsustain(.4)._scope()
    
    ฉันเองก็ไม่ค่อยเข้าใจด้วยซ้ำว่าครึ่งหนึ่งของสิ่งที่เกิดขึ้นตรงนี้คืออะไร แต่สนุกมากจริง ๆ น่าจะเป็นหนึ่งในโปรเจกต์ที่ฉันชอบที่สุดเท่าที่เคยทำมา และสิ่งที่สนุกที่สุดคือมีเอกสารอ้างอิงอยู่ในหน้าเดียวกันเลย ทำให้ลองอะไรมั่ว ๆ แล้วเห็นผลได้ทันที
  • มีข้อความผิดพลาดนี้ขึ้นมา
    Uncaught (in promise) ReferenceError: AudioContext is not defined
     ln https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
     W https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
     un https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
     c https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
    
    สงสัยว่าต้องเปลี่ยนอะไรในการตั้งค่าความปลอดภัยของฉันถึงจะทำให้มันใช้งานได้
  • ขอแชร์เวอร์ชันรีมิกซ์ Array ของ DJ_Dave ที่ฉันทำเอง (Lil Data) (Strudel mix, วิดีโอ YouTube)
  • ชอบวิดีโอแนะนำอันนี้ (ลิงก์ YouTube)
  • ความที่ Strudel เป็นแบบข้อความ ทำให้ AI สร้างเพลงอัตโนมัติได้ง่ายมากจริง ๆ ฉันกำลังรอ Strudel agent ที่จะถอดเพลงออกมาเป็นโนเตชันของ strudel ให้ได้
    • ฉันชอบแต่งเพลงด้วยมือตัวเองก็จริง แต่ถ้า AI ช่วยจัดการไปถึงระดับซาวด์ดีไซน์ได้จากแค่พิมพ์พรอมป์ต์ ("คล้ายลีดซินธ์ของเพลง XYZ แต่ฟังวินเทจขึ้นหน่อย และแยกให้ปรับพารามิเตอร์ ABC ได้ด้วย") ก็น่าจะปฏิวัติวงการเลย
    • ฉันคิดว่าอีกไม่นานเอเจนต์ก็น่าจะฟังตัวเพลงเองได้ พร้อมทั้งวิเคราะห์ได้ด้วยว่าเมื่อก่อนเราประเมินมันไว้อย่างไร
  • ไม่นานมานี้ฉันเห็นอินเทอร์เฟซของ Strudel บน YouTube ตอนแรกมันดูเหมือนคอนโซล แต่ก็มีองค์ประกอบอย่างสไลเดอร์ด้วย เลยรู้สึกว่าน่าสนุก