- nw_wrld biến p5.js, Three.js và D3 thành nhạc cụ visual: 16-step sequencer, MIDI/OSC/audio reactive, đóng gói thành app desktop cho macOS/Windows/Linux.
- Đây là Hydra phiên bản có Dashboard, hoặc Resolume bản code-first miễn phí.
TL;DR
nw_wrld là một sequencer event-driven dùng để trigger visuals, viết hoàn toàn bằng web technologies và đóng gói qua Electron. Bạn code module bằng p5.js, Three.js, D3.js hoặc canvas vanilla, rồi orchestrate chúng bằng một dashboard 16-step có sẵn. Nguồn tín hiệu có thể là sequencer nội bộ, MIDI, OSC, audio mic/loopback hoặc file upload. Dự án đang ở v0.6.0-beta, GPL-3.0, có installer cho macOS/Windows/Linux.

Điểm mới
Tác giả aagentah vừa đẩy v0.6.0-beta ngày 2/4. Bản này thêm UI threshold cho audio input, flow rewrite cho starter modules, một visualizer mới CubeGrowth và mở rộng test coverage. Trước đó, v0.5.0 đã đem lại bộ installer native ba nền tảng cùng audio capture và file playback. v0.4.0 đã hoàn tất migration sang TypeScript và bổ sung Playwright E2E.
Vì sao đáng chú ý
VJ tools hay sequencer visual phổ biến hiện chia làm hai phe: GUI-driven và đắt (Resolume, VDMX, TouchDesigner) hoặc code-only nhưng thiếu I/O (Hydra, Cables.gl). nw_wrld chen vào khoảng trống ở giữa: bạn vẫn viết code p5/three đúng kiểu sketch quen thuộc, nhưng được hưởng miễn phí một timing engine + signal router cấp production. Không cần dựng riêng MIDI handler, không cần đẻ một state machine cho 16 steps, không cần build Electron shell, không cần wrap thành desktop app.
Điểm quan trọng nhất là kiến trúc event-driven: visuals không tự render theo loop của riêng chúng — chúng chờ tín hiệu (sequencer hit, MIDI note, OSC message, audio peak vượt threshold) rồi mới gọi method tương ứng. Nhờ đó cùng một module có thể chạy bằng nhiều nguồn tín hiệu khác nhau, swap qua lại trong runtime mà không phải sửa code. Đây là tư duy giống modular synth nhưng cho hình ảnh — patch tín hiệu vào method, không patch dây.
Thông số kỹ thuật
| Property | Giá trị |
|---|---|
| Phiên bản | v0.6.0-beta (2/4/2026) |
| License | GPL-3.0 |
| Runtime | Node.js ≥ 20, Electron ^39.2.7 |
| Sequencer | 16-step, BPM 60–130 |
| Input sources | Sequencer, MIDI, OSC, audio mic/loopback, file upload |
| Render libs | Three.js ^0.159, p5 ^1.9, D3 ^7.9, Canvas vanilla |
| UI | React 18, Jotai state, TypeScript 81.6% |
| Audio | Tone.js ^15.1 |
| OS | macOS, Windows, Linux installers |
Mỗi module extend ModuleBase để inherit miễn phí các method show, hide, offset, scale, opacity, rotate, randomZoom, matrix. Khai báo dependency qua docblock:
/*
@nwWrld name: My Module
@nwWrld category: 3D
@nwWrld imports: ModuleBase, THREE, assetUrl
*/nw_wrld inject binding tương ứng vào module — không cần require() hay import tay. Lifecycle đơn giản: hàm init() chạy lúc load module, các method còn lại trigger khi sequencer/MIDI/OSC/audio gửi signal tới channel đã map. Asset load qua helper: const url = assetUrl("images/blueprint.png"); JSON data qua await loadJson("json/meteor.json"). Project folder tự chứa modules/, assets/, nw_wrld_data/ — copy nguyên folder sang máy khác là chạy được, hợp với workflow exhibition.
So sánh với tool tương đương
| Tool | Code-first | Sequencer + MIDI/OSC | Giá | Nền tảng |
|---|---|---|---|---|
| nw_wrld | Có (JS) | Có, native | Free, GPL-3.0 | Desktop |
| Hydra | Có (JS) | MIDI cộng đồng, không có sequencer UI | Free | Web |
| Resolume | Không | Có | $$$ | Desktop |
| TouchDesigner | Node-based | Có | $0–$$$ | Desktop |
| Cables.gl | Node-based | Hạn chế | Freemium | Web |
Use cases thực tế
- Live VJ: cắm controller MIDI, map mỗi pad sang một method trong module Three.js, perform.
- Audio reactive: chọn input mic, cấu hình threshold + cooldown per-track để visuals nảy theo bass/snare.
- Strudel / live-coding: pipe MIDI từ Strudel sang nw_wrld qua IAC Driver (mac) hoặc loopMIDI (Windows), trigger visuals theo pattern code.
- Exhibition / installation: project folder portable chứa cả modules, assets, data — mang sang máy khác chạy ngay.
- Prototype: bật sequencer nội bộ, không cần hardware, vẫn test được composition đầy đủ.
- Generative art demo: 16 starter modules sẵn có (2D, 3D, text, data viz) — fork một module, đổi vài param là có piece riêng để khoe.
- Data sonification ngược: dùng D3 +
loadJsonđể render dữ liệu, sequencer chạy theo BPM thay cho timeline scrub.
Hạn chế & pricing
Miễn phí, GPL-3.0, không có pricing tier. Đổi lại là beta status: README cảnh báo có thể có breaking changes giữa các version. Bảo mật: workspace modules là JS thực thi — chỉ mở project folder bạn tin tưởng. Bản dựng hiện chỉ desktop (Electron), không có build web-only hay mobile, cũng chưa có cloud sync. Yêu cầu Node v20+; Windows/Linux cần virtual MIDI driver (loopMIDI hoặc tương đương) nếu dùng MIDI external.
Sắp tới
Trajectory rõ ràng từ tháng 12 đến giờ: v0.1 (Dec 31) ra public beta, v0.4 (19/1) hoàn tất TypeScript, v0.5 (17/2) có installer native + audio input, v0.6 (2/4) refine UX. Với cadence ~1 tháng/release và phạm vi đã ổn định (sequencer + I/O + module system), một bản 1.0 stable không còn xa. Theo dõi qua Releases và Discussions.
Nguồn: aagentah/nw_wrld, GETTING_STARTED.md, tweet @tom_doerr.



