Device Details
Overview
Name | Version: | Kasm Ableton WASM Cpp - Source Code Example 1.0 |
Author: | kevleyski |
Device Type: | MIDI Effect |
Description: | Manipulating live notes on-the-fly with C++/WebAssembly (WASM) This is a tutorial only (i.e. not an exciting new plugin) detailing a working example of how to manipulate MIDI data and potentially DSP audio signals using more efficient C++ code in Ableton Live 12.2 w/ Max4Live using WebAssembly in the newly added V8 Javascript engine !! NOTE: this project needs Ableton Live 12.2 (or later) and Max4Live as it utilises the new V8 engine, i.e. you'll need Live 12.2 Suite or Standard + Max4Live add-in !! Features includes: Passing inlet parameters from JS into to C++ C++ code calling Max4Live outlet function (C++ code plays chords offset by semitones pssed in from Max4Live) Max console debug post() messages from inside C++ code How does it work, what does "Kasm" do for me? There are three primary layers working together to enable C++ execution within Max4Live/V8: C++ Code Layer: Your MIDI/Audio DSP logic compiled as WebAssembly JavaScript Bridge Layer: Handles WASM bytecode loading, setups parameter marshalling for Max4Live integration Max4Live Layer: V8 JavaScript engine with an basic example .amxd device showing two way communication with C++ Kasm then provides the base64-encoded WASM binary parts and compiles this as a blob for integration: Base64 Decoding: Custom atob() implementation for Max4Live WASM Compilation: Direct compilation from that decoded binary Function Export: Cahing mapped C++ functions available to JavaScript getStringFromWasm: Convert WASM memory strings into JavaScript strings, for Max Window console debugging The example contains a heap of code comments, whilst you can figure it out from this it helps if you already know a bit about what WebAssembly is, Javascript and how to compile C++ code Building and updating it is easy: npm install npm run build This updates kasm_WASM_cpp.js which then compiles the WASM, you simply copy and paste that into any 'v8' Max4Live object The example .amxd demonstrates the C++ functions being called and outlet and debugging messages from C++ code itself kasm_midi_note_offset has two inlets and has one outlet simply offset the played note kasm_midi_note_octave_hit shows how to generate chords and triggering MIDI events by calling the outlet() function from inside C++ and also debugging the code into Max4Live console using post() |
Details
Live Version Used: | 12.2 |
Max Version Used: | 9.0 |
Date Added: | Jun 26 2025 05:08:57 |
Date Last Updated: | Jun 27 2025 07:54:23 |
Downloads: | 0 |
Website: | https://kevleyski.gumroad.com/l/kasm_ableton_wasm_cpp |
ⓘ License: | None |
Average Rating
Log in to rate this device |
-n/a- |
Login to comment on this device.
Browse the full library