Skip to content

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 :

bash
cd neuroscript-rs
wasm-pack build crates/neuroscript-wasm --target web

Intégrez le package généré (neuroscript-rs/crates/neuroscript-wasm/pkg) dans votre application web.

Démarrage rapide ​

javascript
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): void compile 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 ​

ts
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.

Créé avec ❤️ pour les musiciens