import * as L from '../lang.js'; export declare type PitchClass = string; export declare type Octave = number; export declare type Duration = { _scamperTag: 'struct'; kind: 'dur'; fields: [number, number]; }; export declare const dur: (num: number, den: number) => Duration; export declare type Note = { renderAs: 'composition'; tag: 'note'; note: number; duration: Duration; }; export declare type NoteFreq = { renderAs: 'composition'; tag: 'note-freq'; freq: number; duration: Duration; }; declare type Empty = { renderAs: 'composition'; tag: 'empty'; }; declare type Rest = { renderAs: 'composition'; tag: 'rest'; duration: Duration; }; declare type Trigger = { renderAs: 'composition'; tag: 'trigger'; fn: L.FunctionType; }; declare type Par = { renderAs: 'composition'; tag: 'par'; notes: Composition[]; }; declare type Seq = { renderAs: 'composition'; tag: 'seq'; notes: Composition[]; }; declare type Pickup = { renderAs: 'composition'; tag: 'pickup'; pickup: Composition; notes: Composition; }; declare type ModKind = Percussion | PitchBend | Tempo | Dynamics | Instrument; declare type Percussion = { _scamperTag: 'struct'; kind: 'mod'; type: 'percussion'; fields: []; }; declare type PitchBend = { _scamperTag: 'struct'; kind: 'mod'; type: 'pitchBend'; fields: [number]; }; declare type Tempo = { _scamperTag: 'struct'; kind: 'mod'; type: 'tempo'; fields: [Duration, number]; }; declare type Dynamics = { _scamperTag: 'struct'; kind: 'mod'; type: 'dynamics'; fields: [number]; }; declare type Instrument = { _scamperTag: 'struct'; kind: 'mod'; type: 'instrument'; fields: [number]; }; export declare type Mod = { renderAs: 'composition'; tag: 'mod'; note: Composition; mod: ModKind; }; export declare const mod: (mod: ModKind, note: Composition) => Mod; export declare const modPrim: L.Prim; export declare type Composition = Empty | Note | NoteFreq | Rest | Trigger | Par | Seq | Pickup | Mod; export declare const musicLib: L.Env; export declare function playComposition(env: L.Env, composition: Composition): number; export {}; //# sourceMappingURL=music.d.ts.map