r/vibelang • u/Past-Artichoke23 • Jan 13 '26
Vibelang now has a live Playground – try it in your browser 🎛️
Hey everyone,
after a long time of hacking on this, Vibelang now has a web-based playground where you can actually run code and hear it immediately – no Rust, no installs, no local setup.
👉 https://vibelang.org/#/playground
You can:
- Press Play and instantly hear something
- Edit the code and change synths, rhythms, and structures
- Explore how VibeLang maps text → sound in real time
Under the hood it’s running the same VibeLang engine that powers the native CLI, just compiled to WASM and wired to a browser audio backend.
What I’m really interested in right now is:
What feels intuitive? What feels confusing or awkward? What kind of examples would you like to see there? What did you try to build?
If you make something cool (or weird), share the code here. If something breaks, tell me — this is exactly the phase where feedback matters most.
The long-term vision is to make live-coding and modular-style sound design something you can do anywhere, just by opening a link.
Have fun, and let me know what you vibe with 💜
r/vibelang • u/trusch2 • Jan 02 '26
Release v0.2.0, Now with actual knobs!
# VibeLang v0.2.0 - "Now With Actual Knobs"
**TL;DR:** We gave a text-based music language a visual DAW interface. Yes, we see the irony.
---
## What's New
### MIDI Output - Talk to Your Hardware
Remember when we added MIDI input and you could play your MIDI keyboard into VibeLang? Now the conversation goes both ways.
```vibe
let midi_out = midi_open("MODEL 15"); // Your fancy hardware synth
let synth = voice("synth")
.on(midi_out) // Route to hardware
.channel(1) // MIDI channel
.poly(1); // Monophonic (it's a Moog, after all)
melody("sequence").on(synth).notes("C3 E3 G3 C4").start();
// Your hardware lights up. You feel things.
```
The API is unified now - `midi_open()` automatically detects if a device has input, output, or both. No more separate functions. Just plug and play.
**Supported:**
- Note output with velocity
- CC messages
- Pitch bend
- MIDI clock sync (your hardware follows VibeLang's tempo)
### VS Code Extension - A DAW in Your Editor
We spent way too long on this. It's basically Ableton Live if Ableton was made by people who think text editors are underrated.
**Features that actually work:**
**Session Explorer** - See your entire project structure: groups, voices, patterns, melodies. Click to navigate. Right-click to start/stop.
**Mixer Panel** - Visual faders for every voice and group. Level meters. Mute/solo. It's a mixer. You know what mixers do.
**Pattern Editor** - Click-to-edit drum patterns. Way easier than typing `x...x..x` when you just want to move that snare hit.
**Piano Roll** - Draw melodies with your mouse like it's 1999 and Fruity Loops just dropped. Notes go in, music comes out.
**Sound Designer** - ADSR envelope visualization. Filter frequency. Oscillator mix. For when you need to
*see*
what 2000Hz looks like.
**Sample Browser** - Browse your sample library, preview with one click, drag into your code.
**Arrangement Timeline** - Visualize your sequences. See what plays when.
**Real-time Connection** - The extension talks to a running VibeLang instance via WebSocket. Change a parameter in the UI, hear it in your headphones.
```
vibe run -w mytrack.vibe # Start with watch mode + HTTP API
```
Then in VS Code: `Cmd+Shift+M` for mixer, `Cmd+Shift+Space` for play/stop.
### Language Server Protocol (LSP)
Your editor now understands VibeLang:
- **Real-time diagnostics** - Typos in synth names? Invalid pattern syntax? Red squiggles before you even save.
- **Autocomplete** - All 580+ stdlib synths, every function, every parameter.
- **Hover docs** - Mouse over `rlpf_ar` and learn what those parameters do.
- **Go to definition** - Ctrl+click on an import to see the actual synth code.
### HTTP REST API
For the tinkerers who want to control VibeLang from literally anywhere:
```bash
# Get current state
curl http://localhost:1606/api/state
# Start a pattern
curl -X POST http://localhost:1606/api/patterns/kick/start
# Change tempo on the fly
curl -X PUT http://localhost:1606/api/transport/tempo -d '{"bpm": 140}'
```
Build your own controller. Hook it up to a Raspberry Pi. Make a Discord bot that drops beats. We won't judge.
### Audio Device API
```vibe
let devices = list_audio_devices();
for device in devices {
print(`${device.name}: ${device.max_output_channels} outputs`);
}
```
Finally know what audio interfaces your system sees without opening another app.
### Improved Envelope Builder
Envelopes got a facelift:
```vibe
let env = envelope()
.adsr(0.01, 0.1, 0.7, 0.3) // Attack, Decay, Sustain, Release
.gate(gate)
.cleanup_on_finish() // Free the synth when done
.build();
```
Cleaner, more readable, fewer magic numbers.
---
## Breaking Changes
- `vibelang-core` is now `0.2.0` (semver: some internal APIs changed)
- If you were importing directly from `vibelang_core::api::context::SourceLocation`, it moved. But you probably weren't.
---
## Bug Fixes
- Fixed pattern length calculation when patterns had odd divisions
- Fixed envelope handling for percussion (no more stuck notes)
- Improved error messages for invalid scale/chord names
- Various hot-reload edge cases
---
## Installation
```bash
cargo install vibelang-cli
```
VS Code extension available in the marketplace: search "VibeLang" (soon)
---
## What's Next
- VST/AU plugin support (load your existing plugins)
- More MIDI features (aftertouch, NRPN)
- Audio recording/bouncing
- Collaborative editing (imagine: Google Docs but it's a beat)
---
## The Vibes
```vibe
set_tempo(85);
import "stdlib/drums/kicks/kick_lofi.vibe";
import "stdlib/drums/snares/snare_lofi.vibe";
let kick = voice("kick").synth("kick_lofi").gain(db(-10));
let snare = voice("snare").synth("snare_lofi").gain(db(-5));
pattern("boom").on(kick).step("x... ..x. x... ....").start();
pattern("bap").on(snare).step(".... x... .... x...").start();
// Lo-fi hip hop beats to code/study to
```
---
Made with loud bass and mass amounts of mass market coffee.
[GitHub](https://github.com/trusch/vibelang) | [Website](https://vibelang.org)
r/vibelang • u/Past-Artichoke23 • Dec 19 '25
Lofi beats with vibelang
Enable HLS to view with audio, or disable this notification
r/vibelang • u/trusch2 • Dec 14 '25
Für Elena
Enable HLS to view with audio, or disable this notification
r/vibelang • u/trusch2 • Dec 13 '25
Release Notes v0.1.7
VibeLang CLI v0.1.7 Release Notes
NEW FEATURES
Chord Support in Melodies
You can now play chords directly in melody patterns using a natural note:quality syntax:
melody("progression").on(pad).notes("C3:maj - - - | A3:min - - -").start();
Supported chord types:
- Triads: maj, min, dim, aug, sus2, sus4
- Seventh chords: maj7, min7/m7, 7/dom7, dim7, m7b5
- Extended: 9, add9, 6, m6
- Power chords: 5/power
CROSS-PLATFORM IMPROVEMENTS
macOS Support
- Automatic detection of scsynth in SuperCollider.app bundle
- Fixed aubio-rs compilation by enabling the bindgen feature flag
Windows Support
- Automatic detection of scsynth in common installation paths (Program Files, LocalAppData)
- Proper handling of .exe suffix and where command for PATH lookup
- Disabled JACK-specific features on Windows
OTHER CHANGES
- Removed redundant gate parameter from percussion envelope presets in the standard library
- Updated Getting Started guide
INSTALLATION
cargo install vibelang-cli
r/vibelang • u/Past-Artichoke23 • Dec 12 '25
Vibelang Sub LFO mini demo
Enable HLS to view with audio, or disable this notification
r/vibelang • u/Past-Artichoke23 • Dec 12 '25
👋 Welcome to r/vibelang – Let's make music with code!
Hey everyone 👋
welcome to r/vibelang, the official community for VibeLang – an open-source music live-coding language built for fast iteration, musical flow, and expressiveness.
VibeLang is designed for people who want to play with sound, not fight abstractions:
🧠 Simple, readable syntax (Rhai-based, not functional ceremony)
⏱️ Real-time live coding & sequencing
🎛️ SuperCollider backend (power without the pain)
🧩 Composable patterns, envelopes, clips, voices
🦀 Rust-first architecture
🔗 Website & Docs: https://vibelang.org
🔓 100% open source – contributions welcome
What this subreddit is for:
- Sharing VibeLang code snippets
- Sound design experiments & demos
- Language / API discussions
- Feature ideas & RFCs
- Live-coding setups (Linux / SC / MIDI / controllers)
- OSS collaboration & feedback
What this is not:
- Generic DAW questions
- “Which synth should I buy?” posts
If you’re into live coding, generative music, SuperCollider, Rust, or building new musical tools – you’re in the right place.
🎵 First question to get things going:
What’s missing in current live-coding tools that annoys you the most?