API JavaScript
Utilisez les liaisons WebAssembly de Neuroscript pour compiler et exécuter Neuroscript à l'intérieur d'outils basés sur le navigateur, y compris les espaces de jeu de la documentation et les démos personnalisées.
Construire le package WASM
Depuis la racine du dépôt :
cd neuroscript-rs
wasm-pack build crates/neuroscript-wasm --target webIntégrez le package généré (neuroscript-rs/crates/neuroscript-wasm/pkg) dans votre application web.
Démarrage rapide
import init, { WasmEngine, compile_only } from "neuroscript-wasm";
await init();
compile_only("note @1 => note\n");
const engine = new WasmEngine("note @1 => note\n");
const outputs = await engine.runEvent(
{
kind: "Note",
ch: 1,
data1: 60,
data2: 100,
timestamp_ns: Date.now() * 1_000_000,
},
{ bpm: 120, beat: 4_000_000 },
Date.now() * 1_000_000
);
console.log(outputs);Surface de l'API
compile_only(source: string): voidcompile et valide la source.new WasmEngine(source: string)compile et alloue l'état.engine.runEvent(event, transport?, nowNs?)exécute un événement MIDI.engine.recompile(source: string)remplace le programme compilé.engine.resetState()efface l'état du moteur.
Formes d'événement et de transport
type MidiEvent = {
kind: "Note" | "NoteOn" | "NoteOff" | "CC" | "Clock" | "Start" | "Stop";
ch: number;
data1: number;
data2: number;
timestamp_ns: number;
};
type Transport = {
bpm?: number | null;
beat?: number | null;
};L'argument transport est optionnel. Si nowNs est omis, le moteur utilise event.timestamp_ns.
Où l'utiliser
Utilisez ces liaisons pour les espaces de jeu dans le navigateur, les exemples de documentation ou tout site nécessitant de compiler et d'exécuter Neuroscript sans backend natif.
Intégration de la documentation
Lors de la construction du site de documentation, copiez le package WASM dans docs/web/public/neuroscript-wasm afin que l'espace de jeu puisse le charger comme une ressource statique. Le Makefile inclut une cible d'aide pour cela.
