Commit graph

2580 commits

Author SHA1 Message Date
Yotam Mann
981431f0d5 exporting loop 2019-10-15 22:42:45 -04:00
Yotam Mann
ba2af1fb03 creates a new AudioContext when Context is created
used to reuse same context.
2019-10-13 23:20:42 -04:00
Yotam Mann
fe6aea9641 polysynth always has at least one voice 2019-10-13 22:40:57 -04:00
Yotam Mann
e1a1552bcf exporting analysis classes 2019-10-13 21:11:44 -04:00
Yotam Mann
032808dd2a ensure that partialsCount is never below 0 2019-10-13 15:05:41 -04:00
Yotam Mann
3a89459916 more sensible default 2019-10-11 18:59:43 -04:00
Yotam Mann
3f53201906 noting range 2019-10-11 18:58:56 -04:00
Yotam Mann
2dab77c7a8 updating partialCount when partials is set 2019-10-09 17:32:37 -04:00
Yotam Mann
2753d3756b the partials length is controllable by the partialCount 2019-10-09 17:06:57 -04:00
Yotam Mann
54059825ae set the partials from the cache as well 2019-10-09 15:21:02 -04:00
Yotam Mann
47642ba51d using floating point comparison 2019-10-09 13:00:16 -04:00
Yotam Mann
0f9bac5101 making it possible to have a release of time 0 2019-10-09 12:54:14 -04:00
Yotam Mann
b3875697b6 fixing path 2019-10-09 12:46:00 -04:00
Yotam Mann
682d263819 Wrapping properties to be able to test range before assignment
throw errors at time of assignment
2019-10-09 12:41:51 -04:00
Yotam Mann
f753aef015 Adding range test 2019-10-09 12:38:10 -04:00
Yotam Mann
3323a7574e using the sig output instead of the destination
since some envelopes are silent
2019-10-09 10:06:17 -04:00
Yotam Mann
fc5b6f7c46 feat: Render a segment of the envelope as an array 2019-10-08 19:23:21 -04:00
Yotam Mann
9ad519ea10 feat: Get an oscillator wave as an array 2019-10-08 19:22:59 -04:00
Yotam Mann
2935f6567d exporting NoiseSynth 2019-10-07 17:02:41 -04:00
Yotam Mann
1668decf70 feat: Convolver is just a wrapper around the ConvolverNode, no longer an effect
a more basic wrapper around the ConvolverNode which unlike the Convolver effect, does not have a dry/wet knob
2019-10-07 15:37:07 -04:00
Yotam Mann
34f731bf7b testing being constructed with different voices 2019-10-07 15:01:22 -04:00
Yotam Mann
6ba7fb7fb3 including FMSynth in PolySynth 2019-10-07 13:57:09 -04:00
Yotam Mann
10469ba924 only dispose when things are in the only AudioContext
otherwise it leads to silence

addresses #551
2019-10-04 12:04:53 -04:00
Yotam Mann
467cc48c8c adding isOffline flag
helpful for some behaviors which only occur in the online AudioContext
2019-10-04 11:51:52 -04:00
Yotam Mann
889dafa45e feat: OfflineContext returns a ToneAudioBuffer
instead of an AudioBuffer
2019-10-03 18:03:21 -04:00
Yotam Mann
e98545a852 removing js file 2019-10-03 17:34:18 -04:00
Yotam Mann
70d11f4b1a Don't dispose the synth in the offline context 2019-10-03 17:34:06 -04:00
Yotam Mann
81887b91a3 refactor: initialize Context when getting destination or transport 2019-10-03 17:33:39 -04:00
Yotam Mann
11544708fc feat: OfflineContext yields thread every second of audio rendered
so that it doesn't block the thread.

fixes #436
2019-10-03 17:29:30 -04:00
Yotam Mann
92816c3bc2 increasing test threshold 2019-09-30 16:54:40 -04:00
Yotam Mann
7f090a3c4d Merge branch 'pr/546' into typescript 2019-09-30 16:48:55 -04:00
Yotam Mann
13f2a6af68 getting all tests to pass 2019-09-30 16:48:39 -04:00
Yotam Mann
f6a17b878f removing unnecessary assignment 2019-09-29 17:26:11 -04:00
Yotam Mann
a2153571c2 types: correcting typing 2019-09-29 17:25:55 -04:00
Yotam Mann
04405afd84 feat: Adding triggerRelease to PluckSynth
works by ramping the resonance down over the 'release' duration
2019-09-29 17:25:31 -04:00
Yotam Mann
18b90a00a2 changing var name and using 'swappable' property 2019-09-29 13:05:51 -04:00
Yotam Mann
c155d716ac removing logging 2019-09-29 13:05:25 -04:00
Yotam Mann
1a2d82f33b only mark certain Params as swappable 2019-09-29 12:20:54 -04:00
Yotam Mann
5f41b0bc76 assert that there is a device 2019-09-29 10:35:46 -04:00
Yotam Mann
b379a20b6d Using GainNode instead of gain
fixes #299
2019-09-29 10:30:57 -04:00
Yotam Mann
410098c075 removing old js file 2019-09-29 10:25:47 -04:00
Yotam Mann
13f08f8dc7 clarifying docs 2019-09-29 10:19:56 -04:00
Yotam Mann
f86f940987 adding categories 2019-09-29 10:19:35 -04:00
Yotam Mann
eb7b14fdc8 fixing docs 2019-09-29 10:19:08 -04:00
Yotam Mann
d88de11cfe converting Follower to typescript 2019-09-27 18:22:11 -04:00
Yotam Mann
7c3582bea3 refactor: implementing FeedbackCombFilter with AudioWorkletNode
handles sub 128 sample feedback
2019-09-27 17:58:04 -04:00
Yotam Mann
4eb05a1ec0 using promise response instead of done() 2019-09-27 17:57:19 -04:00
Yotam Mann
726fb26f80 exporting comb filters 2019-09-27 17:55:31 -04:00
Yotam Mann
2ee8cb1a52 feat: Wrapper around the AudioWorkletNode 2019-09-27 17:55:09 -04:00
Yotam Mann
23ca0f9688 feat: Can set the parameter after constructing Param
used in the new ToneAudioWorklet node
2019-09-27 17:53:42 -04:00
Yotam Mann
f7bdd7528f feat: adding AudioWorkletNode constructors to Context 2019-09-27 17:52:37 -04:00
Yotam Mann
9eb395509c style: using javascript string template interpreter for vscode 2019-09-27 17:50:49 -04:00
Jacob Clarke
420a3cd0e7 Added FMSynth and test 2019-09-27 23:36:26 +10:00
Yotam Mann
ce93214e43 using OnePoleFilter in LowpassCombFilter and PluckSynth
means an API change since dampening is no longer a signal rate parameter
2019-09-24 22:41:58 -04:00
Yotam Mann
52c0b7d56f adding OnePoleFilter
does a single pole highpass and lowpass

addresses #531
2019-09-24 22:08:50 -04:00
Yotam Mann
ed367e0f9b adding nominal range to properties 2019-09-24 17:21:59 -04:00
Yotam Mann
df24096376 filter rolloff enum 2019-09-24 17:18:52 -04:00
Yotam Mann
f2285a12b6 setting min and max range for properties 2019-09-24 17:12:46 -04:00
Yotam Mann
732efd563f can pass in min and max values into constructor 2019-09-24 17:12:12 -04:00
Yotam Mann
a08af1a39c createIIR takes either number[] of float32array 2019-09-23 10:00:43 -04:00
Yotam Mann
fdcda13e32 adding pluck synth to export 2019-09-21 13:10:25 -04:00
Yotam Mann
03aa301c75 adding filter rolloff type 2019-09-21 13:10:19 -04:00
Yotam Mann
70df9df641 fixing type for ratio 2019-09-21 13:09:06 -04:00
Yotam Mann
ec3c1381c5 removing unused stuff 2019-09-20 20:04:45 -04:00
Yotam Mann
0ffc5d65da deleting old js files 2019-09-20 18:51:51 -04:00
Yotam Mann
4d5b63d97e adding categories for docs 2019-09-20 18:51:45 -04:00
Yotam Mann
1dd208c1ea converting UserMedia to ts 2019-09-20 18:51:17 -04:00
Yotam Mann
a68dea0a02 adding createMediaStreamSource
should create BaseContext class to better handle this case
2019-09-20 18:50:22 -04:00
Yotam Mann
d612d9a793 using const instead of var 2019-09-20 17:56:21 -04:00
Yotam Mann
2365894608 Merge branch 'pr/543' into typescript 2019-09-20 17:55:50 -04:00
Yotam Mann
2b86adafb2 small linting and docing 2019-09-20 17:55:36 -04:00
Yotam Mann
f8e7a81490 linting 2019-09-20 17:50:14 -04:00
Yotam Mann
dd22e298e5 exporting debug 2019-09-20 17:49:54 -04:00
Yotam Mann
26855a9398 using the clocks ticks instead of tracking offset
addresses #544
2019-09-20 17:46:30 -04:00
Yotam Mann
72b9604d8e using epsilon floating point comparisons 2019-09-20 17:45:22 -04:00
Yotam Mann
c35666c6fa moving epsilon comparisons to it's own file 2019-09-20 17:44:55 -04:00
Yotam Mann
9625492b2f including GrainPlayer in export 2019-09-20 11:06:40 -04:00
Yotam Mann
82ae4930af adding some additional coverage tests 2019-09-20 10:11:03 -04:00
Yotam Mann
be634eb093 running all logging and warning through Logger object
makes it possible to implement a Logger interface to visualize logging.
2019-09-20 00:31:43 -04:00
Yotam Mann
4be7043bea testing matching within small epsilon 2019-09-20 00:19:38 -04:00
Yotam Mann
f1a0990ee9 comparisons all done within some small epsilon
fixes floating point errors
fixes #422
2019-09-20 00:19:19 -04:00
Yotam Mann
315070afca implemented the TODO feature
removing comment
2019-09-20 00:18:02 -04:00
Yotam Mann
df35666759 simplifying time math
since the time is already computed into seconds
2019-09-20 00:17:28 -04:00
Yotam Mann
0e0073b75b adding logging for restart 2019-09-20 00:16:45 -04:00
Yotam Mann
3f6bcd9438 undoing additional lookAhead
turns out to not be necessary
2019-09-20 00:16:03 -04:00
Filipe Herculano
090177efdd update Pow to extend SignalOperator instead 2019-09-19 20:49:02 -04:00
Yotam Mann
70efec4637 add an additional lookAhead to the onended callback
this fixes an issue where the source was scheduled to stop in the time between the current time and the lookAhead time.

fixes #422
2019-09-19 18:22:44 -04:00
Yotam Mann
1426da90c4 adding restart method
with test
2019-09-19 17:09:30 -04:00
Yotam Mann
be4bf84369 inforce increase in time 2019-09-19 16:56:48 -04:00
Yotam Mann
3ab260de90 import transport for the side effects 2019-09-19 16:55:57 -04:00
Yotam Mann
5d128470c5 convert GrainPlayer to typescript 2019-09-19 16:55:46 -04:00
Yotam Mann
ace049a9a2 render just the clock portion without the audio 2019-09-19 16:55:09 -04:00
Yotam Mann
7a85c4b68a some debugging 2019-09-19 16:53:53 -04:00
Yotam Mann
38ef65fcb2 TimelineValue holds a single schedulable value
get/set based on time.
2019-09-18 11:15:10 -04:00
Yotam Mann
cf957ff37e Looping is a schedulable parameter
fixes #448
2019-09-17 19:33:41 -04:00
Yotam Mann
4c9e6cbd4e testing the interval 2019-09-17 15:34:40 -04:00
Yotam Mann
abc6ef0e2b removing old classes 2019-09-17 14:46:35 -04:00
Yotam Mann
e44005138d quote props only when needed 2019-09-17 14:46:26 -04:00
Yotam Mann
64189a8685 converting Loop to typescript 2019-09-17 14:45:58 -04:00
Yotam Mann
1709f46d83 testing progress when not looping 2019-09-17 14:18:05 -04:00