rescript-tone 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +175 -0
  2. package/package.json +44 -0
  3. package/src/ToneJs.res +64 -0
  4. package/src/ToneJs.res.js +150 -0
  5. package/src/ToneJs_AMSynth.res +34 -0
  6. package/src/ToneJs_AudioNode.res +20 -0
  7. package/src/ToneJs_AutoFilter.res +33 -0
  8. package/src/ToneJs_AutoPanner.res +26 -0
  9. package/src/ToneJs_AutoWah.res +31 -0
  10. package/src/ToneJs_BitCrusher.res +20 -0
  11. package/src/ToneJs_Channel.res +33 -0
  12. package/src/ToneJs_Chebyshev.res +24 -0
  13. package/src/ToneJs_Chorus.res +37 -0
  14. package/src/ToneJs_Compressor.res +28 -0
  15. package/src/ToneJs_Context.res +21 -0
  16. package/src/ToneJs_CrossFade.res +20 -0
  17. package/src/ToneJs_Destination.res +12 -0
  18. package/src/ToneJs_Distortion.res +24 -0
  19. package/src/ToneJs_EQ3.res +25 -0
  20. package/src/ToneJs_Event.res +28 -0
  21. package/src/ToneJs_FMSynth.res +35 -0
  22. package/src/ToneJs_FeedbackDelay.res +24 -0
  23. package/src/ToneJs_Filter.res +46 -0
  24. package/src/ToneJs_Freeverb.res +21 -0
  25. package/src/ToneJs_FrequencyShifter.res +19 -0
  26. package/src/ToneJs_Gain.res +19 -0
  27. package/src/ToneJs_Gate.res +21 -0
  28. package/src/ToneJs_JCReverb.res +19 -0
  29. package/src/ToneJs_Limiter.res +19 -0
  30. package/src/ToneJs_Loop.res +39 -0
  31. package/src/ToneJs_MonoSynth.res +33 -0
  32. package/src/ToneJs_Noise.res +38 -0
  33. package/src/ToneJs_Oscillator.res +44 -0
  34. package/src/ToneJs_Panner.res +19 -0
  35. package/src/ToneJs_Param.res +24 -0
  36. package/src/ToneJs_Part.res +36 -0
  37. package/src/ToneJs_Phaser.res +28 -0
  38. package/src/ToneJs_PingPongDelay.res +24 -0
  39. package/src/ToneJs_PitchShift.res +27 -0
  40. package/src/ToneJs_Player.res +60 -0
  41. package/src/ToneJs_PolySynth.res +37 -0
  42. package/src/ToneJs_Reverb.res +26 -0
  43. package/src/ToneJs_Sequence.res +35 -0
  44. package/src/ToneJs_Signal.res +47 -0
  45. package/src/ToneJs_StereoWidener.res +19 -0
  46. package/src/ToneJs_Synth.res +35 -0
  47. package/src/ToneJs_Tone.res +12 -0
  48. package/src/ToneJs_Transport.res +67 -0
  49. package/src/ToneJs_Tremolo.res +31 -0
  50. package/src/ToneJs_Types.res +94 -0
  51. package/src/ToneJs_Vibrato.res +25 -0
  52. package/src/ToneJs_Volume.res +21 -0
@@ -0,0 +1,28 @@
1
+ // Bindings for Tone.Compressor
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ threshold?: decibels,
8
+ ratio?: positive,
9
+ attack?: time,
10
+ release?: time,
11
+ knee?: decibels,
12
+ }
13
+
14
+ @module("tone") @new external make: unit => t = "Compressor"
15
+ @module("tone") @new external makeWithThreshold: decibels => t = "Compressor"
16
+ @module("tone") @new external makeWithThresholdRatio: (decibels, positive) => t = "Compressor"
17
+ @module("tone") @new external makeWithOptions: options => t = "Compressor"
18
+
19
+ @get external threshold: t => ToneJs_Param.t = "threshold"
20
+ @get external ratio: t => ToneJs_Param.t = "ratio"
21
+ @get external attack: t => ToneJs_Param.t = "attack"
22
+ @get external release: t => ToneJs_Param.t = "release"
23
+ @get external knee: t => ToneJs_Param.t = "knee"
24
+ @get external reduction: t => decibels = "reduction"
25
+
26
+ @send external dispose: t => t = "dispose"
27
+
28
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,21 @@
1
+ // Bindings for Tone.js Context
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ @send external now: t => seconds = "now"
7
+ @send external immediate: t => seconds = "immediate"
8
+ @send external resume: t => promise<unit> = "resume"
9
+ @send external close: t => promise<unit> = "close"
10
+ @send external dispose: t => t = "dispose"
11
+
12
+ @get external currentTime: t => seconds = "currentTime"
13
+ @get external state: t => string = "state"
14
+ @get external sampleRate: t => float = "sampleRate"
15
+ @get external lookAhead: t => seconds = "lookAhead"
16
+ @set external setLookAhead: (t, seconds) => unit = "lookAhead"
17
+
18
+ @send external setTimeout: (t, unit => unit, seconds) => int = "setTimeout"
19
+ @send external clearTimeout: (t, int) => t = "clearTimeout"
20
+ @send external setInterval: (t, unit => unit, seconds) => int = "setInterval"
21
+ @send external clearInterval: (t, int) => t = "clearInterval"
@@ -0,0 +1,20 @@
1
+ // Bindings for Tone.CrossFade
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ fade?: normalRange,
8
+ }
9
+
10
+ @module("tone") @new external make: unit => t = "CrossFade"
11
+ @module("tone") @new external makeWithFade: normalRange => t = "CrossFade"
12
+ @module("tone") @new external makeWithOptions: options => t = "CrossFade"
13
+
14
+ @get external fade: t => ToneJs_Param.t = "fade"
15
+ @get external a: t => ToneJs_Gain.t = "a"
16
+ @get external b: t => ToneJs_Gain.t = "b"
17
+
18
+ @send external dispose: t => t = "dispose"
19
+
20
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,12 @@
1
+ // Bindings for Tone.js Destination - the master output
2
+
3
+ type t
4
+
5
+ @get external volume: t => ToneJs_Param.t = "volume"
6
+ @get external mute: t => bool = "mute"
7
+ @set external setMute: (t, bool) => unit = "mute"
8
+ @get external maxChannelCount: t => int = "maxChannelCount"
9
+ @send external dispose: t => t = "dispose"
10
+
11
+ // Destination is also an AudioNode, so it can be connected to
12
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,24 @@
1
+ // Bindings for Tone.Distortion
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ distortion?: float,
8
+ oversample?: oversampleType,
9
+ wet?: normalRange,
10
+ }
11
+
12
+ @module("tone") @new external make: unit => t = "Distortion"
13
+ @module("tone") @new external makeWithAmount: float => t = "Distortion"
14
+ @module("tone") @new external makeWithOptions: options => t = "Distortion"
15
+
16
+ @get external distortion: t => float = "distortion"
17
+ @set external setDistortion: (t, float) => unit = "distortion"
18
+ @get external oversample: t => oversampleType = "oversample"
19
+ @set external setOversample: (t, oversampleType) => unit = "oversample"
20
+ @get external wet: t => ToneJs_Param.t = "wet"
21
+
22
+ @send external dispose: t => t = "dispose"
23
+
24
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,25 @@
1
+ // Bindings for Tone.EQ3 - 3-band equalizer
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ low?: decibels,
8
+ mid?: decibels,
9
+ high?: decibels,
10
+ lowFrequency?: frequency,
11
+ highFrequency?: frequency,
12
+ }
13
+
14
+ @module("tone") @new external make: unit => t = "EQ3"
15
+ @module("tone") @new external makeWithOptions: options => t = "EQ3"
16
+
17
+ @get external low: t => ToneJs_Param.t = "low"
18
+ @get external mid: t => ToneJs_Param.t = "mid"
19
+ @get external high: t => ToneJs_Param.t = "high"
20
+ @get external lowFrequency: t => ToneJs_Param.t = "lowFrequency"
21
+ @get external highFrequency: t => ToneJs_Param.t = "highFrequency"
22
+
23
+ @send external dispose: t => t = "dispose"
24
+
25
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,28 @@
1
+ // Bindings for Tone.ToneEvent - schedulable event
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ @module("tone") @new external make: ((seconds, 'a) => unit, 'a) => t = "ToneEvent"
7
+
8
+ @send external start: (t, ~time: transportTime=?) => t = "start"
9
+ @send external stop: (t, ~time: transportTime=?) => t = "stop"
10
+ @send external cancel: (t, ~time: transportTime=?) => t = "cancel"
11
+ @send external dispose: t => t = "dispose"
12
+
13
+ @get external state: t => basicPlaybackState = "state"
14
+ @get external progress: t => normalRange = "progress"
15
+ @get external loop: t => bool = "loop"
16
+ @set external setLoop: (t, bool) => unit = "loop"
17
+ @get external loopEnd: t => time = "loopEnd"
18
+ @set external setLoopEnd: (t, time) => unit = "loopEnd"
19
+ @get external loopStart: t => time = "loopStart"
20
+ @set external setLoopStart: (t, time) => unit = "loopStart"
21
+ @get external playbackRate: t => positive = "playbackRate"
22
+ @set external setPlaybackRate: (t, positive) => unit = "playbackRate"
23
+ @get external probability: t => normalRange = "probability"
24
+ @set external setProbability: (t, normalRange) => unit = "probability"
25
+ @get external mute: t => bool = "mute"
26
+ @set external setMute: (t, bool) => unit = "mute"
27
+ @get external humanize: t => bool = "humanize"
28
+ @set external setHumanize: (t, bool) => unit = "humanize"
@@ -0,0 +1,35 @@
1
+ // Bindings for Tone.FMSynth - FM synthesis
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ harmonicity?: positive,
8
+ modulationIndex?: positive,
9
+ oscillator?: oscillatorOptions,
10
+ modulation?: oscillatorOptions,
11
+ envelope?: envelopeOptions,
12
+ modulationEnvelope?: envelopeOptions,
13
+ volume?: decibels,
14
+ }
15
+
16
+ @module("tone") @new external make: unit => t = "FMSynth"
17
+ @module("tone") @new external makeWithOptions: options => t = "FMSynth"
18
+
19
+ @send external triggerAttack: (t, frequency) => t = "triggerAttack"
20
+ @send external triggerAttackAt: (t, frequency, ~time: time=?) => t = "triggerAttack"
21
+ @send external triggerAttackAtVel: (t, frequency, ~time: time=?, ~velocity: normalRange=?) => t = "triggerAttack"
22
+ @send external triggerRelease: (t, ~time: time=?) => t = "triggerRelease"
23
+ @send external triggerAttackRelease: (t, frequency, time) => t = "triggerAttackRelease"
24
+ @send external triggerAttackReleaseAt: (t, frequency, time, ~time: time=?) => t = "triggerAttackRelease"
25
+ @send external triggerAttackReleaseAtVel: (t, frequency, time, ~time: time=?, ~velocity: normalRange=?) => t = "triggerAttackRelease"
26
+
27
+ @get external volume: t => ToneJs_Param.t = "volume"
28
+ @get external frequency: t => ToneJs_Param.t = "frequency"
29
+ @get external detune: t => ToneJs_Param.t = "detune"
30
+
31
+ @send external dispose: t => t = "dispose"
32
+ @send external sync: t => t = "sync"
33
+ @send external unsync: t => t = "unsync"
34
+
35
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,24 @@
1
+ // Bindings for Tone.FeedbackDelay
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ delayTime?: time,
8
+ maxDelay?: time,
9
+ feedback?: normalRange,
10
+ wet?: normalRange,
11
+ }
12
+
13
+ @module("tone") @new external make: unit => t = "FeedbackDelay"
14
+ @module("tone") @new external makeWithTime: time => t = "FeedbackDelay"
15
+ @module("tone") @new external makeWithTimeFeedback: (time, normalRange) => t = "FeedbackDelay"
16
+ @module("tone") @new external makeWithOptions: options => t = "FeedbackDelay"
17
+
18
+ @get external delayTime: t => ToneJs_Param.t = "delayTime"
19
+ @get external feedback: t => ToneJs_Param.t = "feedback"
20
+ @get external wet: t => ToneJs_Param.t = "wet"
21
+
22
+ @send external dispose: t => t = "dispose"
23
+
24
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,46 @@
1
+ // Bindings for Tone.Filter
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type filterType =
7
+ | @as("lowpass") Lowpass
8
+ | @as("highpass") Highpass
9
+ | @as("bandpass") Bandpass
10
+ | @as("lowshelf") Lowshelf
11
+ | @as("highshelf") Highshelf
12
+ | @as("notch") Notch
13
+ | @as("allpass") Allpass
14
+ | @as("peaking") Peaking
15
+
16
+ type rolloff =
17
+ | @as(-12) R12
18
+ | @as(-24) R24
19
+ | @as(-48) R48
20
+ | @as(-96) R96
21
+
22
+ type options = {
23
+ frequency?: frequency,
24
+ \"type"?: filterType,
25
+ rolloff?: rolloff,
26
+ q?: positive,
27
+ gain?: float,
28
+ }
29
+
30
+ @module("tone") @new external make: unit => t = "Filter"
31
+ @module("tone") @new external makeWithFreq: frequency => t = "Filter"
32
+ @module("tone") @new external makeWithOptions: options => t = "Filter"
33
+
34
+ @get external frequency: t => ToneJs_Param.t = "frequency"
35
+ @get external q: t => ToneJs_Param.t = "Q"
36
+ @get external gain: t => ToneJs_Param.t = "gain"
37
+ @get external detune: t => ToneJs_Param.t = "detune"
38
+ @get external getType: t => filterType = "type"
39
+ @set external setType: (t, filterType) => unit = "type"
40
+ @get external rolloff: t => rolloff = "rolloff"
41
+ @set external setRolloff: (t, rolloff) => unit = "rolloff"
42
+
43
+ @send external getFrequencyResponse: (t, int) => array<float> = "getFrequencyResponse"
44
+ @send external dispose: t => t = "dispose"
45
+
46
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,21 @@
1
+ // Bindings for Tone.Freeverb
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ roomSize?: normalRange,
8
+ dampening?: frequency,
9
+ wet?: normalRange,
10
+ }
11
+
12
+ @module("tone") @new external make: unit => t = "Freeverb"
13
+ @module("tone") @new external makeWithOptions: options => t = "Freeverb"
14
+
15
+ @get external roomSize: t => ToneJs_Param.t = "roomSize"
16
+ @get external dampening: t => ToneJs_Param.t = "dampening"
17
+ @get external wet: t => ToneJs_Param.t = "wet"
18
+
19
+ @send external dispose: t => t = "dispose"
20
+
21
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,19 @@
1
+ // Bindings for Tone.FrequencyShifter
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ frequency?: frequency,
8
+ wet?: normalRange,
9
+ }
10
+
11
+ @module("tone") @new external make: unit => t = "FrequencyShifter"
12
+ @module("tone") @new external makeWithOptions: options => t = "FrequencyShifter"
13
+
14
+ @get external frequency: t => ToneJs_Param.t = "frequency"
15
+ @get external wet: t => ToneJs_Param.t = "wet"
16
+
17
+ @send external dispose: t => t = "dispose"
18
+
19
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,19 @@
1
+ // Bindings for Tone.Gain
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ gain?: gainFactor,
8
+ units?: string,
9
+ }
10
+
11
+ @module("tone") @new external make: unit => t = "Gain"
12
+ @module("tone") @new external makeWithGain: gainFactor => t = "Gain"
13
+ @module("tone") @new external makeWithOptions: options => t = "Gain"
14
+
15
+ @get external gain: t => ToneJs_Param.t = "gain"
16
+
17
+ @send external dispose: t => t = "dispose"
18
+
19
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,21 @@
1
+ // Bindings for Tone.Gate - noise gate
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ threshold?: decibels,
8
+ smoothing?: time,
9
+ }
10
+
11
+ @module("tone") @new external make: unit => t = "Gate"
12
+ @module("tone") @new external makeWithThreshold: decibels => t = "Gate"
13
+ @module("tone") @new external makeWithOptions: options => t = "Gate"
14
+
15
+ @get external threshold: t => ToneJs_Param.t = "threshold"
16
+ @get external smoothing: t => time = "smoothing"
17
+ @set external setSmoothing: (t, time) => unit = "smoothing"
18
+
19
+ @send external dispose: t => t = "dispose"
20
+
21
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,19 @@
1
+ // Bindings for Tone.JCReverb
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ roomSize?: normalRange,
8
+ wet?: normalRange,
9
+ }
10
+
11
+ @module("tone") @new external make: unit => t = "JCReverb"
12
+ @module("tone") @new external makeWithOptions: options => t = "JCReverb"
13
+
14
+ @get external roomSize: t => ToneJs_Param.t = "roomSize"
15
+ @get external wet: t => ToneJs_Param.t = "wet"
16
+
17
+ @send external dispose: t => t = "dispose"
18
+
19
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,19 @@
1
+ // Bindings for Tone.Limiter
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ threshold?: decibels,
8
+ }
9
+
10
+ @module("tone") @new external make: unit => t = "Limiter"
11
+ @module("tone") @new external makeWithThreshold: decibels => t = "Limiter"
12
+ @module("tone") @new external makeWithOptions: options => t = "Limiter"
13
+
14
+ @get external threshold: t => ToneJs_Param.t = "threshold"
15
+ @get external reduction: t => decibels = "reduction"
16
+
17
+ @send external dispose: t => t = "dispose"
18
+
19
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,39 @@
1
+ // Bindings for Tone.Loop - looping callback
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ callback?: seconds => unit,
8
+ interval?: time,
9
+ playbackRate?: positive,
10
+ iterations?: int,
11
+ probability?: normalRange,
12
+ mute?: bool,
13
+ humanize?: bool,
14
+ }
15
+
16
+ @module("tone") @new external make: (seconds => unit, time) => t = "Loop"
17
+ @module("tone") @new external makeWithOptions: options => t = "Loop"
18
+
19
+ @send external start: (t, ~time: transportTime=?) => t = "start"
20
+ @send external stop: (t, ~time: transportTime=?) => t = "stop"
21
+ @send external cancel: (t, ~time: transportTime=?) => t = "cancel"
22
+ @send external dispose: t => t = "dispose"
23
+
24
+ @get external state: t => basicPlaybackState = "state"
25
+ @get external progress: t => normalRange = "progress"
26
+ @get external interval: t => time = "interval"
27
+ @set external setInterval: (t, time) => unit = "interval"
28
+ @get external playbackRate: t => positive = "playbackRate"
29
+ @set external setPlaybackRate: (t, positive) => unit = "playbackRate"
30
+ @get external humanize: t => bool = "humanize"
31
+ @set external setHumanize: (t, bool) => unit = "humanize"
32
+ @get external probability: t => normalRange = "probability"
33
+ @set external setProbability: (t, normalRange) => unit = "probability"
34
+ @get external mute: t => bool = "mute"
35
+ @set external setMute: (t, bool) => unit = "mute"
36
+ @get external iterations: t => int = "iterations"
37
+ @set external setIterations: (t, int) => unit = "iterations"
38
+ @get external callback: t => seconds => unit = "callback"
39
+ @set external setCallback: (t, seconds => unit) => unit = "callback"
@@ -0,0 +1,33 @@
1
+ // Bindings for Tone.MonoSynth - monophonic synthesizer
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ oscillator?: oscillatorOptions,
8
+ envelope?: envelopeOptions,
9
+ filterEnvelope?: filterEnvelopeOptions,
10
+ filter?: filterOptions,
11
+ volume?: decibels,
12
+ }
13
+
14
+ @module("tone") @new external make: unit => t = "MonoSynth"
15
+ @module("tone") @new external makeWithOptions: options => t = "MonoSynth"
16
+
17
+ @send external triggerAttack: (t, frequency) => t = "triggerAttack"
18
+ @send external triggerAttackAt: (t, frequency, ~time: time=?) => t = "triggerAttack"
19
+ @send external triggerAttackAtVel: (t, frequency, ~time: time=?, ~velocity: normalRange=?) => t = "triggerAttack"
20
+ @send external triggerRelease: (t, ~time: time=?) => t = "triggerRelease"
21
+ @send external triggerAttackRelease: (t, frequency, time) => t = "triggerAttackRelease"
22
+ @send external triggerAttackReleaseAt: (t, frequency, time, ~time: time=?) => t = "triggerAttackRelease"
23
+ @send external triggerAttackReleaseAtVel: (t, frequency, time, ~time: time=?, ~velocity: normalRange=?) => t = "triggerAttackRelease"
24
+
25
+ @get external volume: t => ToneJs_Param.t = "volume"
26
+ @get external frequency: t => ToneJs_Param.t = "frequency"
27
+ @get external detune: t => ToneJs_Param.t = "detune"
28
+
29
+ @send external dispose: t => t = "dispose"
30
+ @send external sync: t => t = "sync"
31
+ @send external unsync: t => t = "unsync"
32
+
33
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,38 @@
1
+ // Bindings for Tone.Noise - noise generator
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ \"type"?: noiseType,
8
+ playbackRate?: positive,
9
+ fadeIn?: time,
10
+ fadeOut?: time,
11
+ volume?: decibels,
12
+ }
13
+
14
+ @module("tone") @new external make: noiseType => t = "Noise"
15
+ @module("tone") @new external makeWithOptions: options => t = "Noise"
16
+
17
+ // Source lifecycle
18
+ @send external start: (t, ~time: time=?) => t = "start"
19
+ @send external stop: (t, ~time: time=?) => t = "stop"
20
+ @send external restart: (t, ~time: time=?) => t = "restart"
21
+ @send external dispose: t => t = "dispose"
22
+
23
+ // Properties
24
+ @get external volume: t => ToneJs_Param.t = "volume"
25
+ @get external getType: t => noiseType = "type"
26
+ @set external setType: (t, noiseType) => unit = "type"
27
+ @get external playbackRate: t => positive = "playbackRate"
28
+ @set external setPlaybackRate: (t, positive) => unit = "playbackRate"
29
+ @get external fadeIn: t => time = "fadeIn"
30
+ @set external setFadeIn: (t, time) => unit = "fadeIn"
31
+ @get external fadeOut: t => time = "fadeOut"
32
+ @set external setFadeOut: (t, time) => unit = "fadeOut"
33
+
34
+ // Sync
35
+ @send external sync: t => t = "sync"
36
+ @send external unsync: t => t = "unsync"
37
+
38
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,44 @@
1
+ // Bindings for Tone.Oscillator
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ frequency?: frequency,
8
+ \"type"?: oscillatorType,
9
+ detune?: cents,
10
+ phase?: degrees,
11
+ volume?: decibels,
12
+ }
13
+
14
+ @module("tone") @new external make: unit => t = "Oscillator"
15
+ @module("tone") @new external makeWithOptions: options => t = "Oscillator"
16
+ @module("tone") @new external makeWithFreq: (frequency, oscillatorType) => t = "Oscillator"
17
+
18
+ // Source lifecycle
19
+ @send external start: (t, ~time: time=?) => t = "start"
20
+ @send external stop: (t, ~time: time=?) => t = "stop"
21
+ @send external restart: (t, ~time: time=?) => t = "restart"
22
+ @send external dispose: t => t = "dispose"
23
+
24
+ // Properties
25
+ @get external frequency: t => ToneJs_Param.t = "frequency"
26
+ @get external detune: t => ToneJs_Param.t = "detune"
27
+ @get external volume: t => ToneJs_Param.t = "volume"
28
+
29
+ @get external getType: t => oscillatorType = "type"
30
+ @set external setType: (t, oscillatorType) => unit = "type"
31
+ @get external phase: t => degrees = "phase"
32
+ @set external setPhase: (t, degrees) => unit = "phase"
33
+ @get external partialCount: t => int = "partialCount"
34
+ @set external setPartialCount: (t, int) => unit = "partialCount"
35
+ @get external partials: t => array<float> = "partials"
36
+ @set external setPartials: (t, array<float>) => unit = "partials"
37
+
38
+ // Sync
39
+ @send external syncFrequency: t => t = "syncFrequency"
40
+ @send external unsyncFrequency: t => t = "unsyncFrequency"
41
+ @send external sync: t => t = "sync"
42
+ @send external unsync: t => t = "unsync"
43
+
44
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,19 @@
1
+ // Bindings for Tone.Panner
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ type options = {
7
+ pan?: audioRange,
8
+ channelCount?: int,
9
+ }
10
+
11
+ @module("tone") @new external make: unit => t = "Panner"
12
+ @module("tone") @new external makeWithPan: audioRange => t = "Panner"
13
+ @module("tone") @new external makeWithOptions: options => t = "Panner"
14
+
15
+ @get external pan: t => ToneJs_Param.t = "pan"
16
+
17
+ @send external dispose: t => t = "dispose"
18
+
19
+ external asAudioNode: t => ToneJs_AudioNode.t = "%identity"
@@ -0,0 +1,24 @@
1
+ // Bindings for Tone.js Param - used for automatable parameters
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ @get external getValue: t => float = "value"
7
+ @set external setValue: (t, float) => unit = "value"
8
+
9
+ @send external setValueAtTime: (t, float, time) => t = "setValueAtTime"
10
+ @send external getValueAtTime: (t, time) => float = "getValueAtTime"
11
+ @send external linearRampToValueAtTime: (t, float, time) => t = "linearRampToValueAtTime"
12
+ @send external exponentialRampToValueAtTime: (t, float, time) => t = "exponentialRampToValueAtTime"
13
+ @send external linearRampTo: (t, float, time) => t = "linearRampTo"
14
+ @send external linearRampToFrom: (t, float, time, ~startTime: time=?) => t = "linearRampTo"
15
+ @send external exponentialRampTo: (t, float, time) => t = "exponentialRampTo"
16
+ @send external exponentialRampToFrom: (t, float, time, ~startTime: time=?) => t = "exponentialRampTo"
17
+ @send external targetRampTo: (t, float, time) => t = "targetRampTo"
18
+ @send external targetRampToFrom: (t, float, time, ~startTime: time=?) => t = "targetRampTo"
19
+ @send external rampTo: (t, float, time) => t = "rampTo"
20
+ @send external rampToFrom: (t, float, time, ~startTime: time=?) => t = "rampTo"
21
+ @send external setRampPoint: (t, time) => t = "setRampPoint"
22
+ @send external setTargetAtTime: (t, float, time, float) => t = "setTargetAtTime"
23
+ @send external cancelScheduledValues: (t, time) => t = "cancelScheduledValues"
24
+ @send external cancelAndHoldAtTime: (t, time) => t = "cancelAndHoldAtTime"
@@ -0,0 +1,36 @@
1
+ // Bindings for Tone.Part - a collection of events on a timeline
2
+ open ToneJs_Types
3
+
4
+ type t
5
+
6
+ @module("tone") @new external make: ((seconds, 'a) => unit, array<'a>) => t = "Part"
7
+
8
+ @send external start: (t, ~time: transportTime=?) => t = "start"
9
+ @send external startWithOffset: (t, ~time: transportTime=?, ~offset: time=?) => t = "start"
10
+ @send external stop: (t, ~time: transportTime=?) => t = "stop"
11
+ @send external cancel: (t, ~time: transportTime=?) => t = "cancel"
12
+ @send external clear: t => t = "clear"
13
+ @send external dispose: t => t = "dispose"
14
+
15
+ @send external add: (t, time, 'a) => t = "add"
16
+ @send external remove: (t, time, 'a) => t = "remove"
17
+ @send external at: (t, time) => Null.t<ToneJs_Event.t> = "at"
18
+
19
+ @get external state: t => basicPlaybackState = "state"
20
+ @get external progress: t => normalRange = "progress"
21
+ @get external length: t => int = "length"
22
+ @get external loop: t => bool = "loop"
23
+ @set external setLoop: (t, bool) => unit = "loop"
24
+ @set external setLoopCount: (t, int) => unit = "loop"
25
+ @get external loopEnd: t => time = "loopEnd"
26
+ @set external setLoopEnd: (t, time) => unit = "loopEnd"
27
+ @get external loopStart: t => time = "loopStart"
28
+ @set external setLoopStart: (t, time) => unit = "loopStart"
29
+ @get external playbackRate: t => positive = "playbackRate"
30
+ @set external setPlaybackRate: (t, positive) => unit = "playbackRate"
31
+ @get external probability: t => normalRange = "probability"
32
+ @set external setProbability: (t, normalRange) => unit = "probability"
33
+ @get external mute: t => bool = "mute"
34
+ @set external setMute: (t, bool) => unit = "mute"
35
+ @get external humanize: t => bool = "humanize"
36
+ @set external setHumanize: (t, bool) => unit = "humanize"