2 điểm bởi GN⁺ 2025-10-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • Strudel REPL là một môi trường live coding âm nhạc mã nguồn mở và miễn phí hoạt động trên trình duyệt web
  • Có thể tạo và chỉnh sửa nhạc theo thời gian thực chỉ ngay trong trình duyệt mà không cần cài đặt phần mềm riêng
  • Về cơ bản, nó hoạt động theo kiểu REPL (Read–Eval–Print Loop), khi người dùng nhập mã thì mẫu âm thanh sẽ được phát ngay lập tức
  • Tính năng chính

    • Người dùng có thể dễ dàng thực hiện sequencing pattern, chọn nhạc cụ, điều chỉnh âm thanh thông qua các lệnh mã như "s(\"[bd ]*2\").bank(\"tr909\").dec(.4)"
    • Có thể thao tác âm nhạc chi tiết với nhiều drum sampler (bank), thiết lập decay và các tùy chọn khác
    • Việc chỉnh sửa mã theo thời gian thực và nghe kết quả diễn ra ngay lập tức, nên phản hồi tức thì là một điểm mạnh
  • Khả năng tiếp cận và tính ứng dụng

    • Ngay cả khi không có DAW (digital audio workstation) hoặc phần mềm âm nhạc phức tạp, người dùng vẫn có thể thử tạo và thử nghiệm âm nhạc bằng mã đơn giản
    • Ngay cả người mới bắt đầu với âm nhạc và lập trình cũng có thể có được trải nghiệm thú vị và sáng tạo nhờ rào cản gia nhập thấp
    • Việc là mã nguồn mở và có hỗ trợ cộng đồng cũng hàm chứa khả năng mở rộng và hợp tác trong tương lai
  • So sánh và ưu điểm

    • So với các nền tảng live coding hiện có (TidalCycles, Sonic Pi, v.v.), nó có tính tiếp cận và tiện lợi cao hơn nhờ dựa trên môi trường web
    • Bất kỳ ai cũng có thể bắt đầu trải nghiệm live coding âm nhạc ngay lập tức mà không cần quy trình cài đặt/cấu hình riêng

1 bình luận

 
GN⁺ 2025-10-15
Ý kiến trên Hacker News
  • Có rất nhiều buổi live coding của Strudel rất hay trên YouTube, ví dụ tôi khuyên xem video này
    • Video của Switch Angel đặc biệt ấn tượng, các tutorial trên Instagram của người này cũng đáng tham khảo
    • Một trong những video tôi thật sự thích là video này, trong đó phần thuyết minh nhờ bộ lọc giọng nói mà nghe như một phần của bản nhạc, xem rất thú vị
    • Nếu ai đó thử remix audio của video này, bao gồm cả vocal, thì chắc sẽ rất vui
    • Có vẻ cùng một liên kết đã bị dán hai lần, tôi tò mò không biết liên kết thứ hai ban đầu định là gì, cũng muốn xem nó
  • Strudel là bản port JavaScript của TidalCycles (Haskell); khác với việc TC dùng SuperCollider làm synth, Strudel dường như dùng một triển khai riêng tên là superdough. Tôi đang học SuperCollider sclang và nếu có bản nâng cấp thì muốn chia sẻ trên HN, vì chủ đề này lúc nào cũng có thảo luận rất sâu. Nhưng sclang giống PHP của giới âm nhạc: xấu hơn và kém nhất quán hơn, dù vậy vẫn mạnh mẽ và cũng rất vui
    • Trên diễn đàn SuperCollider có thảo luận về việc port SuperCollider sang wasm (bài đăng về hỗ trợ WebAssembly), tôi tự hỏi sau này liệu thứ này có thể được dùng không
    • Tôi cũng từng nghịch TidalCycles và muốn dùng thử vì thích cú pháp Haskell, nhưng UI của Strudel quá mượt nên tôi chấp nhận cú pháp JS. Nhờ đó tôi mới biết đến superdough, trước giờ chưa từng thấy nên khá tò mò
    • Hồi trước khi dùng SuperCollider, tôi dùng Overtone; Overtone bọc mọi thứ trong API Clojure nên có thể định nghĩa âm thanh bằng s-expression thay vì sclang. Tôi không hoàn toàn chắc Overtone hiện giờ còn được duy trì không, nhưng có vẻ vẫn còn chút hoạt động (trang chính thức)
    • Theo trải nghiệm của tôi, sclang giống như bản lai giữa Smalltalk và Ruby. Nó đúng là hiện thân của sự "thiếu nhất quán", vừa lạ vừa quen một cách kỳ quặc, nhưng tôi vẫn thấy nó thanh lịch hơn PHP rất nhiều
  • Điều hay ở Strudel là trong khi các công cụ âm nhạc hiện có có cảm giác khá cũ và như mắc hội chứng NIH (not invented here), thì thứ thật sự cần thiết lại là một công cụ chạy bằng JS. Ở thời các công cụ thế hệ trước như sonic pi ra mắt thì điều này còn khó, nhưng bây giờ thời điểm đã vừa đẹp. Tôi hy vọng thế hệ tiếp theo sẽ có giao diện nơi phần trực quan hóa và code thật sự giao tiếp hai chiều; hiện tại tôi thấy các slider là một yếu tố rất tuyệt, chắc Bret Victor cũng sẽ thấy tự hào
  • Cũng có một công cụ tên là flok, kết hợp strudel repl với phần hình ảnh của hydra; nó còn cung cấp các môi trường algorave khác như sclang và mọi thứ đều được đồng bộ hóa (đoán là bằng CRDT), rất tuyệt để jam từ xa với bạn bè (liên kết flok)
  • Tôi không có nhiều năng khiếu âm nhạc, nhưng đã làm ra thứ này
    $: 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()
    
    Tôi cũng không hiểu nổi một nửa những gì đang xảy ra ở đây, nhưng thật sự rất vui, có lẽ là dự án tôi thích nhất từng làm. Và điều vui nhất là ngay trong trang đã có tài liệu tham chiếu, nên có thể thử bừa đủ thứ và xem kết quả ngay lập tức
  • Tôi gặp thông báo lỗi này
    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
    
    Tôi muốn biết phải thay đổi gì trong thiết lập bảo mật của mình để nó hoạt động
  • Chia sẻ bản remix Array của DJ_Dave do tôi (Lil Data) làm lại (bản mix trên Strudel, video YouTube)
  • Tôi thích video giới thiệu này (liên kết YouTube)
  • Vì Strudel là dạng văn bản nên AI sẽ rất dễ tự động tạo nhạc; tôi đang chờ một agent Strudel có thể chép nhạc sang ký pháp strudel
    • Tôi vẫn thích tự tay sáng tác, nhưng nếu AI có thể xử lý cả sound design chỉ bằng prompt ("giống lead synth của bài XYZ nhưng buzzy hơn một chút, và cho chỉnh riêng cả tham số ABC") thì sẽ mang tính cách mạng
    • Tôi nghĩ sớm thôi các agent sẽ có thể tự nghe chính âm nhạc, rồi phân tích cả cách chúng ta đã đánh giá nó trước đây
  • Gần đây tôi thấy giao diện Strudel trên YouTube; ban đầu trông như console nhưng có cả các yếu tố như slider nên cảm thấy khá thú vị