Commit graph

2279 commits

Author SHA1 Message Date
Yotam Mann
d9eae0123f removing window reference 2019-07-26 11:50:59 -04:00
Yotam Mann
4a266742af making Event and Part values generic
gives better typing in the callback function
2019-07-26 11:50:29 -04:00
Yotam Mann
dd14e412ae return context immediately
don't wait for the buffer promise to finish because the context will be set wrong for that entire time
2019-07-26 11:45:11 -04:00
Yotam Mann
61fe1a6a0d fixing initialization case 2019-07-25 18:32:58 -04:00
Yotam Mann
7a099b2310 handling case where window is not defined
either because it's loaded in node.js or because of the context that the script is loaded in
2019-07-25 18:28:17 -04:00
Yotam Mann
cd73792659 indicating that version is string when output for typescript 2019-07-25 18:26:03 -04:00
Yotam Mann
69c6238d4c Adding some ASCII art 2019-07-25 15:14:54 -04:00
Yotam Mann
e3f5940afd only relative imports 2019-07-25 13:32:34 -04:00
Yotam Mann
aaa0ba2b69 updating tests and thresholds 2019-07-25 13:17:21 -04:00
Yotam Mann
86bef350e2 adding note on name change 2019-07-25 13:10:52 -04:00
Yotam Mann
bfc3d7ed15 toMaster() -> toDestination()
more consistent with the Web Audio API
2019-07-25 11:32:56 -04:00
Yotam Mann
9a49c873df exporting modules from main entry 2019-07-25 11:29:36 -04:00
Yotam Mann
4a93121e40 doc'ing 2019-07-25 11:19:53 -04:00
Yotam Mann
68b557f441 additional FeedbackDelay tests 2019-07-25 11:17:11 -04:00
Yotam Mann
e2de5a8955 typing 2019-07-25 10:46:49 -04:00
Yotam Mann
c5505cb4dc doc'ing 2019-07-25 10:46:34 -04:00
Yotam Mann
40727ee650 converting FeedbackDelay to ts 2019-07-25 10:46:28 -04:00
Yotam Mann
3e6484eef6 converting Merge to ts 2019-07-25 10:45:27 -04:00
Yotam Mann
cbae25a15c remove Array.prototype.reverse.call, use .reverse() instead 2019-07-25 10:45:02 -04:00
Yotam Mann
111ecc1396 delayTime is in Time instead of seconds 2019-07-25 10:44:32 -04:00
Yotam Mann
ef19d2e6e8 input and output are no longer arrays
simplifies connect/disconnect logic greatly. Simplifies API to just have clearly named inputs/outputs instead of overloading input/output connect numbers
2019-07-25 10:43:47 -04:00
Yotam Mann
386d96360e adding some ascii art to better explain 2019-07-25 09:08:47 -04:00
Yotam Mann
9788bcc847 optimizing slice implementation
no longer requires iteration over the arrays
2019-07-25 09:08:34 -04:00
Yotam Mann
1874662060 converting Convolver to ts 2019-07-25 00:10:46 -04:00
Yotam Mann
923940576c abstract classes must take the options object
no passing in individual parameters. This simplifies the code a little
2019-07-24 23:33:31 -04:00
Yotam Mann
2f7d4111ee convert CrossFade to ts
now uses StereoPannerNode
2019-07-24 23:18:09 -04:00
Yotam Mann
e53dfa162f convert subtract to ts 2019-07-24 23:17:47 -04:00
Yotam Mann
b5186053fc updating docs 2019-07-24 23:17:18 -04:00
Yotam Mann
2602d4d397 convert Negate to ts 2019-07-24 23:16:58 -04:00
Yotam Mann
76fe32a25b convert GainToAudio to ts 2019-07-24 23:16:45 -04:00
Yotam Mann
57af70c921 make constantSource accessible from within the class 2019-07-24 23:16:35 -04:00
Yotam Mann
f383ca7387 exporting events 2019-07-24 21:54:57 -04:00
Yotam Mann
9051687276 exporting player 2019-07-24 21:54:38 -04:00
Yotam Mann
10cd309a12 exporting events 2019-07-24 21:54:26 -04:00
Yotam Mann
14cd707855 can use an object as a value
no longer gets copied over
2019-07-24 21:53:56 -04:00
Yotam Mann
7c4196a589 converting Sequence to ts 2019-07-24 21:53:35 -04:00
Yotam Mann
ba77fa509e changing removeAll -> clear 2019-07-24 20:02:56 -04:00
Yotam Mann
5fcb7df3cc Revert "getFrom is like getAfter, but also includes the event at the given time"
This reverts commit b4b924f2e0.
2019-07-24 19:54:57 -04:00
Yotam Mann
4858251ba6 Revert "small optimization reducing the number of cancelScheduledValues calls"
This reverts commit 37a62137fa.
2019-07-24 19:54:50 -04:00
Yotam Mann
37a62137fa small optimization reducing the number of cancelScheduledValues calls
first check if there are any more values which are scheduled
2019-07-24 19:50:49 -04:00
Yotam Mann
b4b924f2e0 getFrom is like getAfter, but also includes the event at the given time 2019-07-24 19:49:31 -04:00
Yotam Mann
b858f03040 disconnecting the oscillator on dispose 2019-07-24 19:30:53 -04:00
Yotam Mann
97002d776f using already computed fadeOut time 2019-07-24 19:30:31 -04:00
Yotam Mann
fa95e74ab9 removing the disconnect onended
causes glitches and clicks. might be because the frequency.disconnect is not fully implemented
2019-07-24 19:28:39 -04:00
Yotam Mann
934ab5d77f clearer error messages
catch the error before it becomes "the value is non-finite". show the original value
2019-07-24 09:30:58 -04:00
Yotam Mann
6362f00e58 checking both time and value arguments 2019-07-23 17:46:13 -04:00
Yotam Mann
6cb6472f46 if object key is 'value' just copy it over
deep merging was causing some errors with ToneEvent
2019-07-23 17:09:11 -04:00
Yotam Mann
3c0953b3a4 adding more detailed error handling
addresses #515
2019-07-23 17:08:48 -04:00
Yotam Mann
e9f68103de need to fix this, skipping test for now
the issue is that merge creates a new object
2019-07-23 15:18:23 -04:00
Yotam Mann
659e5e62ea converting Part to ts 2019-07-23 15:17:45 -04:00
Yotam Mann
61a02e6633 toTicks can take a class as well 2019-07-23 15:17:11 -04:00
Yotam Mann
1c8210fb25 using Set instead of array 2019-07-23 13:47:36 -04:00
Yotam Mann
53df0f3caa differentiating between BasicPlaybackState and PlaybackState
PlaybackState includes "paused"
2019-07-23 13:43:35 -04:00
Yotam Mann
9306e5188c adding additional option to StateTimeline.add
enables more strict typing of returned object
2019-07-23 13:43:11 -04:00
Yotam Mann
f6f2e78574 convert Event to typescript 2019-07-23 13:15:04 -04:00
Yotam Mann
2978244fd5 interval can also be a time class 2019-07-23 13:12:27 -04:00
Yotam Mann
027bffc10e check if the attribute exists and is not falsy 2019-07-23 13:11:01 -04:00
Yotam Mann
ffad8c1475 confirm that an instance was disposed
implement Tone.prototype.dispose which flips a boolean wasDisposed.
2019-07-23 12:11:57 -04:00
Yotam Mann
07bd1d6867 updating docs 2019-07-23 11:48:26 -04:00
Yotam Mann
23bbbcb887 moving onended functionality to OneShotSource class 2019-07-23 11:47:32 -04:00
Yotam Mann
126b4a3226 updating typing 2019-07-23 11:46:08 -04:00
Yotam Mann
cd968292d4 correcting docs 2019-07-23 11:28:33 -04:00
Yotam Mann
7e65d90ec9 dont remove primitive types from 'get' response 2019-07-23 11:28:22 -04:00
Yotam Mann
c31aa5fa77 converting Player to ts 2019-07-23 11:27:55 -04:00
Yotam Mann
1f4fcbf996 removing need for time to be clamped to currentTime
when player is synced, this is necessary
2019-07-23 11:27:43 -04:00
Yotam Mann
5a8ee37c77 adding implicit end attribute to StateTimeline
used when the ending is impilcitly scheduled as in Player
2019-07-23 11:26:41 -04:00
Yotam Mann
a820e5bee5 implementing debug 2019-07-23 11:24:38 -04:00
Yotam Mann
63cce0d48a converting Sampler to ts 2019-07-22 16:18:16 -04:00
Yotam Mann
622b547e32 time is optional in toSeconds 2019-07-22 16:18:01 -04:00
Yotam Mann
5a2e6ee714 moved some setup to parent class 2019-07-22 16:17:49 -04:00
Yotam Mann
8fcff92e39 time is optional 2019-07-22 16:17:03 -04:00
Yotam Mann
4540533727 one shot source sets up fadeIn/Out and curve 2019-07-22 16:16:54 -04:00
Yotam Mann
329ef50e45 Time is optional 2019-07-22 16:16:29 -04:00
Yotam Mann
9f14b53d26 moving input definition to Instrument 2019-07-22 16:16:13 -04:00
Yotam Mann
9e8ffa3dd0 optionsFromArguments can accept an object
uses 4th parameter to know which options should be an object
2019-07-22 16:15:55 -04:00
Yotam Mann
ca43351e92 convert ToneAudioBuffers to ts 2019-07-22 12:29:50 -04:00
Yotam Mann
cd0ab3ae10 only relative paths 2019-07-19 13:26:38 -04:00
Yotam Mann
45622f1418 omit context from child classes 2019-07-19 13:21:02 -04:00
Yotam Mann
cae39e7435 fixing test
something was accidentally commented out
2019-07-19 13:20:32 -04:00
Yotam Mann
6e8cb73ca3 type coersion 2019-07-19 12:32:55 -04:00
Yotam Mann
c56798ebf4 takes a string array instead of object 2019-07-19 12:32:42 -04:00
Yotam Mann
b9dd8440b7 using OscillatorInterface to define all the oscilator properties 2019-07-19 12:32:17 -04:00
Yotam Mann
f8d845cede return from 'get' should be serializable 2019-07-19 11:09:28 -04:00
Yotam Mann
60736135f3 updating docs 2019-07-18 14:57:13 -04:00
Yotam Mann
e2d505c6fd only relative paths 2019-07-18 14:54:20 -04:00
Yotam Mann
b3ab8e88ff exporting instruments 2019-07-18 14:48:02 -04:00
Yotam Mann
f69666fe07 converting Synth to typescript 2019-07-18 14:07:25 -04:00
Yotam Mann
9306f9e797 RecursivePartial is useful for nested properties 2019-07-18 14:06:53 -04:00
Yotam Mann
c39dacf22d adding name prop 2019-07-18 14:06:32 -04:00
Yotam Mann
72d4b80f97 fixing typo 2019-07-18 14:06:20 -04:00
Yotam Mann
3efd706458 omiting defaults from object
useful for removing redundant properties in get/set
2019-07-18 14:06:10 -04:00
Yotam Mann
8b501cca7e only using the attributes which are available in getDefaults() 2019-07-18 14:05:42 -04:00
Yotam Mann
b36d57d5d0 deriving OmniOscillatorOptions from ConditionalOptions 2019-07-18 14:04:21 -04:00
Yotam Mann
7f47b50917 converting AmplitudeEnvelope to ts 2019-07-18 11:24:32 -04:00
Yotam Mann
6f040c3d2c checking that harmonicity is undefined when not set to AM or FM osc 2019-07-18 11:24:20 -04:00
Yotam Mann
c1ade5494a using connectSignal method internally 2019-07-18 11:23:45 -04:00
Yotam Mann
11a353a117 linting 2019-07-18 10:21:42 -04:00
Yotam Mann
ea21746bc3 removing console 2019-07-18 10:21:34 -04:00
Yotam Mann
9d131effb1 converting Envelope to ts 2019-07-18 10:21:27 -04:00
Yotam Mann
698dee1e73 changing <pre> tags to markdown 2019-07-17 17:40:47 -04:00
Yotam Mann
71e9176eba moving common implementation to one spot 2019-07-17 13:46:48 -04:00
Yotam Mann
5d36e4a523 only use relative imports 2019-07-17 13:12:21 -04:00
Yotam Mann
70e945396d adding Omni to source export 2019-07-17 12:56:44 -04:00
Yotam Mann
0101edf173 converting OmniOscillator to ts 2019-07-17 12:55:34 -04:00
Yotam Mann
e7b898eb1a souce has 1 output 2019-07-17 12:54:42 -04:00
Yotam Mann
11aed433d7 don't try to set an undefined attribute 2019-07-17 12:54:25 -04:00
Yotam Mann
58bf79a872 increasing comparison threshold 2019-07-16 17:15:55 -04:00
Yotam Mann
7c6a873121 adding oscillator types 2019-07-16 17:10:47 -04:00
Yotam Mann
38d1197359 converting PWMOscillator to typescript 2019-07-16 17:10:07 -04:00
Yotam Mann
6bd5a0d45b updating docs 2019-07-16 17:09:54 -04:00
Yotam Mann
ad7d928be8 adding some doc image 2019-07-16 16:47:07 -04:00
Yotam Mann
f13336bcaa converting FatOscillator to ts 2019-07-16 16:30:09 -04:00
Yotam Mann
8c3c2fe9d1 removing old type classes 2019-07-16 16:05:58 -04:00
Yotam Mann
b339dee564 converting FMOscillator to typescript 2019-07-16 16:05:48 -04:00
Yotam Mann
e2ede8e8cc marking signal value to readonly 2019-07-16 16:05:38 -04:00
Yotam Mann
e0a83ef8cd removing old js files 2019-07-16 15:44:43 -04:00
Yotam Mann
45a254f7e6 setting unused method to abstract
should be implemented by extending classes
2019-07-16 15:44:36 -04:00
Yotam Mann
7f17209530 tear down created classes on context close 2019-07-16 15:41:59 -04:00
Yotam Mann
4c4db4b614 fully converting all Time classes to ts 2019-07-16 15:29:34 -04:00
Yotam Mann
4e11f13336 adding midi to frequency conversion 2019-07-16 09:32:36 -04:00
Yotam Mann
1277564f2c making oscillator props readonly 2019-07-16 09:32:22 -04:00
Yotam Mann
47d991f09c fixing type error
introduced while testing some things out
2019-07-15 15:39:47 -04:00
Yotam Mann
990c0f56ed using type instead of string types 2019-07-15 15:37:25 -04:00
Yotam Mann
d0b73ded77 WaveShaper doesn't need to use SignalOptions
uses ToneAudioNodeOptions instead
2019-07-15 15:10:11 -04:00
Yotam Mann
f553fc3b63 surrounding diagram with pre tags 2019-07-15 12:33:40 -04:00
Yotam Mann
7c2e675c52 fixing typo and allowing for extended oscillator types 2019-07-15 12:33:31 -04:00
Yotam Mann
3b22baea67 updating doc diagram 2019-07-15 12:32:48 -04:00
Yotam Mann
4fc334c9c7 converting PulseOscillator to typescript 2019-07-15 12:22:55 -04:00
Yotam Mann
ada1423bd4 Merge branch 'dev' into typescript 2019-07-15 09:46:22 -04:00
Yotam Mann
ab9b363965 converting AMOscillator to ts 2019-07-15 09:46:10 -04:00
Yotam Mann
b8f0d1d576 exporting OscillatorInterface
to make sure that all oscillators have the same interface
2019-07-15 09:45:56 -04:00
Yotam Mann
1ba36bde6a connectSeries uses the ToneAudioNode's connect method
this is necessary when connecting from a signal since there is additional logic in it's connect method
2019-07-15 09:45:05 -04:00
Yotam Mann
80e5da5bd4 making paths relative 2019-07-11 17:33:04 -04:00
Yotam Mann
7388548e9d also set signal value for AudioParamsq
accidentally removed this
2019-07-11 17:32:57 -04:00
Yotam Mann
e328619fb4 converting Abs to ts 2019-07-11 17:20:11 -04:00
Yotam Mann
95bc7bed7e linting 2019-07-11 17:15:00 -04:00
Yotam Mann
71729c0827 Signal doesn't overwrite the output if not set to 'override' 2019-07-11 17:14:23 -04:00
Yotam Mann
d6143a0e60 adding new base class for some signals
replaces SignalBase
2019-07-11 17:13:58 -04:00
Yotam Mann
182d1040db converting WaveShaper to ts 2019-07-11 17:13:43 -04:00
Yotam Mann
117b4667d4 fixing test 2019-07-11 17:13:11 -04:00
Yotam Mann
d5014d36a8 convert to ts 2019-07-11 17:11:29 -04:00
Yotam Mann
8e551ff755 convert to ts 2019-07-11 17:11:17 -04:00
Yotam Mann
8a9c8f2edf convert to ts 2019-07-11 17:11:07 -04:00
Yotam Mann
70086527ea changing OscillatorOptions -> ToneOscillatorOptions
to avoid any potential conflicts
2019-07-11 12:45:20 -04:00
Yotam Mann
b41646a0ee elaborating on lookAhead 2019-07-11 11:13:23 -04:00
Yotam Mann
b58577ed5e working on exported Tone object
for global build
2019-07-11 11:05:03 -04:00
Yotam Mann
219462fe9e cleaning up circular deps 2019-07-11 09:57:06 -04:00
Yotam Mann
c658980915 removing circular dependencies in types 2019-07-11 09:21:12 -04:00
Yotam Mann
bf214dc106 removing call to super.dispose() 2019-07-11 00:37:25 -04:00
Yotam Mann
f48696a69e Revert "every class calls super.dispose()"
This reverts commit 60a63cacf8.
2019-07-11 00:36:16 -04:00
Yotam Mann
a8e8f53aab using relative paths 2019-07-11 00:14:53 -04:00
Yotam Mann
60a63cacf8 every class calls super.dispose()
makes sure that things don't get disposed twice, which seems to be a common source of issues
2019-07-10 23:35:29 -04:00
Yotam Mann
fde2ff65eb testing TickSignal outputs a signal 2019-07-10 23:33:58 -04:00
Yotam Mann
ae2804fbc5 implement syncSignal 2019-07-10 23:33:36 -04:00
Yotam Mann
a94a99c94e TickSignal outputs a signal 2019-07-10 23:33:12 -04:00
Jared Ellison
6eaa8328cb Update JSDoc for loop property of Tone.Part and Tone.Event 2019-07-08 13:43:04 -04:00
Jared Ellison
a3d4cd2007 Refactor _rescheduleEvents to prevent repeating events when loop = 1 2019-07-05 10:57:39 -04:00
tambien
1c3461b924 fixing chain behavior 2019-06-24 14:35:32 -04:00
tambien
7687ae512e moving some config into the constructor
since multiband split was not yet declared, some of the properties were undefined
2019-06-24 14:35:25 -04:00
tambien
96628e0984 ensuring context is passed to subclasses 2019-06-24 14:34:17 -04:00
tambien
2e177c4ed0 adding multiband split tests 2019-06-24 14:33:54 -04:00
tambien
db35b3ae3a linting 2019-06-24 13:41:38 -04:00
Yotam Mann
02cfefa7ef
Merge branch 'typescript' into fix-typescript-linting 2019-06-24 13:33:18 -04:00
Yotam Mann
f3076e206f
Merge pull request #504 from garrensmith/eq3-multiband
convert multibandsplit and eq3 to typescript
2019-06-24 13:28:45 -04:00
tambien
2f9ef33984 adding index files for each of the directories 2019-06-24 13:25:48 -04:00
tambien
d53cf17c8a needed to pass compiler 2019-06-23 15:04:13 -04:00
tambien
f7033143fc no longer necessary 2019-06-23 15:04:01 -04:00
tambien
74671b0bda transport is no longer possibly undefined
since Context requires initialization step
2019-06-23 15:03:54 -04:00
tambien
62b4b47fd1 prefering toDestination over toMaster
more consistent with Web Audio API
2019-06-23 15:03:31 -04:00
tambien
b276320393 Destination (Master) typescripting 2019-06-23 15:03:04 -04:00
tambien
8b4f1cfa19 Global now only manages global Context
global AudioContext was moved to AudioContext.ts
2019-06-23 15:02:38 -04:00
tambien
8fd8d95a48 transport and destination created in separate initialization step 2019-06-23 14:59:27 -04:00
tambien
de6b91c9d0 using global AudioContext created on init 2019-06-23 14:58:57 -04:00
tambien
a887660792 updating docs 2019-06-23 14:48:21 -04:00
tambien
017f866ee3 options does not require keys if empty 2019-06-23 14:47:44 -04:00
tambien
0194826467 moving initial AudioContext to separate file 2019-06-23 14:47:21 -04:00
tambien
8602ae13db first node was connected to itself 2019-06-23 14:46:59 -04:00
Garren Smith
efbd3c7f5f Fix linting issues
Also add in no-unused-expression-chai rule so that chai works with
tslint.
2019-06-23 12:53:57 +02:00
Garren Smith
ac627ab332 convert multibandsplit and eq3 to typescript 2019-06-23 11:36:42 +02:00
tambien
eef868e8a1 matching functionality to Filter.js 2019-06-21 14:42:50 -04:00
Yotam Mann
5f6f6f9e0a
[wip] convert Filter to .ts (#503)
* Convert filter.js to typescript

* remove unneeded imports in tests
2019-06-21 14:09:49 -04:00
Garren Smith
d215e01914 remove unneeded imports in tests 2019-06-21 19:32:06 +02:00
Garren Smith
30425572c9 Convert filter.js to typescript 2019-06-21 19:29:46 +02:00
tambien
bc61ddaa2b simplifying logic 2019-06-19 18:17:24 -04:00
tambien
f14add5519 adding a short timeout bc Canary is running out of contexts 2019-06-19 17:33:00 -04:00
tambien
5896a7ca9c Update BufferSource.test.ts 2019-06-19 17:30:31 -04:00
tambien
c8396d38eb waiting for promise to resolve before starting test 2019-06-19 17:20:59 -04:00
tambien
5472ca1dcc offset does not default to 0 2019-06-19 17:20:20 -04:00
tambien
d2b7562021 waiting for promise to resolve before starting next test 2019-06-19 17:20:12 -04:00
tambien
10eec904f7 making sure the context is an AudioContext before calling resume 2019-06-19 16:21:03 -04:00
tambien
4c68c6f2fa correcting typedef 2019-06-19 16:20:44 -04:00
tambien
9e229146c0 converting Oscillator to ts 2019-06-19 15:53:14 -04:00
tambien
4e54763db1 accepts an options template 2019-06-19 15:53:00 -04:00
tambien
e87d723ec8 cancelStop does not need to be private 2019-06-19 15:52:47 -04:00
tambien
fc773ccfb5 pass in the options
so that 'get' knows what it's output is
2019-06-19 15:52:38 -04:00
tambien
5f99bdbdf0 value can be any 2019-06-19 15:52:24 -04:00
tambien
ab5184f9a6 adding Radians 2019-06-19 15:52:16 -04:00
tambien
0180922e05 linting 2019-06-19 14:24:35 -04:00
tambien
ef55dc9bb8 Create Analyser.test.ts 2019-06-19 14:24:30 -04:00
tambien
0bc349a8a2 Merge branch 'dev' into typescript 2019-06-19 13:20:23 -04:00