UNPKG

@csound/browser

Version:

[![npm (scoped with tag)](https://shields.shivering-isles.com/npm/v/@csound/browser/latest)](https://www.npmjs.com/package/@csound/browser) [![GitHub Workflow Status](https://shields.shivering-isles.com/github/workflow/status/csound/csound/csound_wasm)](h

90 lines (74 loc) 3.59 kB
import { freeStringPtr, string2ptr } from "../utils/string-pointers.js"; /* csound Score Handling module from <csound.h> https://csound.com/docs/api/modules.html */ /** * Sees whether Csound score events are performed or not, * independently of real-time MIDI events * @function */ export const csoundIsScorePending = (wasm) => (csound /* CsoundInst */) => wasm.exports["csoundIsScorePending"](csound); csoundIsScorePending["toString"] = () => "isScorePending = async () => Number;"; /** * Sets whether Csound score events are performed or not * (real-time events will continue to be performed). * Can be used by external software, such as a VST host, * to turn off performance of score events (while continuing to perform real-time events), * for example to mute a Csound score while working on other tracks of a piece, * or to play the Csound instruments live. * @function */ export const csoundSetScorePending = (wasm) => (csound /* CsoundInst */, pending /* number */) => wasm.exports["csoundSetScorePending"](csound, pending); csoundSetScorePending["toString"] = () => "setScorePending = async (pending) => Number;"; /** * Read, preprocess, and load a score from an ASCII string It can be called repeatedly, * with the new score events being added to the currently scheduled ones. * @function */ export const csoundReadScore = (wasm) => (csound /* CsoundInst */, score /* string */) => { const stringPtr = string2ptr(wasm, score); const result = wasm.exports["csoundReadScore"](csound, stringPtr); freeStringPtr(wasm, stringPtr); return result; }; csoundReadScore["toString"] = () => "readScore = async (score) => Number;"; /** * Returns the current score time in seconds since the beginning of performance. * @function */ export const csoundGetScoreTime = (wasm) => (csound /* CsoundInst */) => wasm.exports["csoundGetScoreTime"](csound); csoundGetScoreTime["toString"] = () => "getScoreTime = async () => Number;"; /** * Returns the score time beginning at which score events will actually immediately be performed * @function */ export const csoundGetScoreOffsetSeconds = (wasm) => (csound /* CsoundInst */) => wasm.exports["csoundGetScoreOffsetSeconds"](csound); csoundGetScoreOffsetSeconds["toString"] = () => "getScoreOffsetSeconds = async () => Number;"; /** * Csound score events prior to the specified time are not performed, * and performance begins immediately at the specified time * (real-time events will continue to be performed as they are received). * Can be used by external software, such as a VST host, to begin * score performance midway through a Csound score, * for example to repeat a loop in a sequencer, * or to synchronize other events with the Csound score. * @function */ export const csoundSetScoreOffsetSeconds = (wasm) => (csound /* CsoundInst */, time /* string */) => wasm.exports["csoundSetScoreOffsetSeconds"](csound, time); csoundSetScoreOffsetSeconds["toString"] = () => "setScoreOffsetSeconds = async () => Number;"; /** * Rewinds a compiled Csound score to the time specified with csoundObj.setScoreOffsetSeconds(). * @function */ export const csoundRewindScore = (wasm) => (csound) => wasm.exports["csoundRewindScore"](csound /* CsoundInst */); csoundRewindScore["toString"] = () => "rewindScore = async () => undefined;"; // PUBLIC void csoundSetCscoreCallback (CSOUND *, void(*cscoreCallback_)(CSOUND *)) // PUBLIC int csoundScoreSort (CSOUND *, FILE *inFile, FILE *outFile) // PUBLIC int csoundScoreExtract (CSOUND *, FILE *inFile, FILE *outFile, FILE *extractFile)