Commit graph

674 commits

Author SHA1 Message Date
Yotam Mann
230287f813 updating docs 2019-08-27 10:02:31 -07:00
Yotam Mann
d57dd7e07a updating docs 2019-08-27 08:47:52 -07:00
Yotam Mann
3fc30c4884 Merge branch 'dev' into typescript 2019-08-26 11:05:12 -07:00
Yotam Mann
9982db3d1b adding fadein/out to noise 2019-08-19 18:50:11 -07:00
Yotam Mann
77806402b6 omiting synth options on each individual options object
instead of on the entire object which caused some issues
2019-08-14 13:16:23 -04:00
Yotam Mann
9494b570b4 clamping time to current time when not synced
correctly this time
2019-08-14 11:52:20 -04:00
Yotam Mann
68dac541dd using computed values in protected calls to _start and _stop 2019-08-14 10:44:27 -04:00
Yotam Mann
85847df8d2 removing clearing onended callback
introduces bugs when multiple oscillators are scheduled to start/stop in the future, the onended callback is not invoked
2019-08-14 10:43:16 -04:00
Yotam Mann
177e903589 logging the computed time 2019-08-14 10:02:22 -04:00
Yotam Mann
6e77fe2e35 clearing onended callback on old oscillators when restarting 2019-08-13 19:36:10 -04:00
Yotam Mann
4594855dc3 adding logging to Source 2019-08-13 19:35:40 -04:00
Yotam Mann
b58812b36a adding stop and cancelStop logging 2019-08-13 19:34:39 -04:00
Yotam Mann
4d00150b66 computing time 2019-08-13 18:35:07 -04:00
Yotam Mann
511d98564b adding some tests for full coverage 2019-08-12 09:37:48 -04:00
Yotam Mann
07cdf6840e adding onstop to noise 2019-08-11 11:42:17 -04:00
Yotam Mann
f6843947d8 adding onstop to all the sources 2019-08-10 11:51:35 -04:00
Yotam Mann
0719a8ba9d cancel stop when the ending is implicit 2019-08-09 23:35:08 -04:00
Yotam Mann
fdbf9d64bf removing 'only' from tests 2019-08-09 23:11:51 -04:00
Yotam Mann
d507188149 Player.onstop is invoked when the buffer has stopped
fixes #519
2019-08-09 23:07:09 -04:00
Yotam Mann
63d68f3446 onended callback passes in the file in the parameter 2019-08-09 23:02:28 -04:00
Yotam Mann
73dbca2e1b removing unused import 2019-08-09 23:00:51 -04:00
Yotam Mann
32d0dfea0e removing 'only' from tests 2019-08-09 20:01:02 -04:00
Yotam Mann
27e7fbcb91 source tests
testing syncing with different offsets and timings
2019-08-09 19:53:10 -04:00
Yotam Mann
25e24800d4 stop the oscillator if it's started 2019-08-08 16:32:22 -04:00
Yotam Mann
1360828a6c caching periodic wave computations
helps when creating many custom oscillators with the same phase or partials
2019-08-08 14:22:15 -04:00
Yotam Mann
4a7c8809e8 linting 2019-08-08 14:17:41 -04:00
Yotam Mann
38d6f9d242 optimization by moving child objects into constructor
means that in many cases the param won't be assigned twice
2019-08-08 14:15:56 -04:00
Yotam Mann
73bc128265 small optimization when partials list is [] 2019-08-08 13:05:34 -04:00
Yotam Mann
f7405d963a Removing disconnect on ended
not necessary and caused a lot of issues

fixes #463
2019-08-07 11:50:44 -04:00
Yotam Mann
c0a70924ad Fixing typing on Oscillator params 2019-08-06 18:24:32 -04:00
Yotam Mann
56db8b3a7a simplifying _internalChannels
channelCount/Mode/Interpretation check the input/output nodes, which removes the need for many classes to have _internalChannels
2019-08-03 12:00:14 -04:00
Yotam Mann
b52103652f doc'ing 2019-08-02 21:49:38 -04:00
Yotam Mann
4364f2f843 no longer necessary to pass in number of inputs
the count is inferred by checking the input or output node
2019-08-02 21:47:57 -04:00
Yotam Mann
52bcac2599 setting name to readonly 2019-08-02 21:09:35 -04:00
Yotam Mann
858af77521 fixing offset errors 2019-07-30 15:53:19 -04:00
Yotam Mann
6e5e8b3399 using specific types
importing them so there are not multiple import type errors
2019-07-30 15:35:27 -04:00
Yotam Mann
474ec85408 fixing default duration
made it so that the player never started when Player was synced.
2019-07-30 14:51:07 -04:00
Yotam Mann
bfc3d7ed15 toMaster() -> toDestination()
more consistent with the Web Audio API
2019-07-25 11:32:56 -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
9051687276 exporting player 2019-07-24 21:54:38 -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
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
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
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
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
cae39e7435 fixing test
something was accidentally commented out
2019-07-19 13:20:32 -04:00
Yotam Mann
b9dd8440b7 using OscillatorInterface to define all the oscilator properties 2019-07-19 12:32:17 -04:00
Yotam Mann
b36d57d5d0 deriving OmniOscillatorOptions from ConditionalOptions 2019-07-18 14:04:21 -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
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
698dee1e73 changing <pre> tags to markdown 2019-07-17 17:40:47 -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
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
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
1277564f2c making oscillator props readonly 2019-07-16 09:32:22 -04:00
Yotam Mann
990c0f56ed using type instead of string types 2019-07-15 15:37:25 -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
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
70086527ea changing OscillatorOptions -> ToneOscillatorOptions
to avoid any potential conflicts
2019-07-11 12:45:20 -04:00
Yotam Mann
219462fe9e cleaning up circular deps 2019-07-11 09:57:06 -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
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
ae2804fbc5 implement syncSignal 2019-07-10 23:33:36 -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
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
8b4f1cfa19 Global now only manages global Context
global AudioContext was moved to AudioContext.ts
2019-06-23 15:02:38 -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
tambien
bc61ddaa2b simplifying logic 2019-06-19 18:17:24 -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
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
0180922e05 linting 2019-06-19 14:24:35 -04:00
tambien
0bc349a8a2 Merge branch 'dev' into typescript 2019-06-19 13:20:23 -04:00
tambien
b138ffd833 linting 2019-06-19 10:19:39 -04:00
tambien
fee62e9173 converting noise to ts 2019-06-19 10:18:06 -04:00
tambien
63ad175b6d converting helpers to ts 2019-06-19 10:15:15 -04:00
tambien
d16786ba7d reorganizing source file locations 2019-06-19 09:54:47 -04:00
tambien
285e34c051 updaing OneShotSource and extending classes 2019-06-17 21:52:43 -04:00
tambien
f70b7daed0 ToneBufferSource as typescript 2019-06-17 21:52:23 -04:00
tambien
451307c9bc converting OscillatorNode 2019-06-17 14:03:02 -04:00
ixnv
54fa8cddb3 fix doc for FatOscillator (#496)
* fix doc for FatOscillator

seems to be copypaste from FMOscillator

* fix doc for FatOscillator
2019-06-10 15:43:40 -04:00
tboie
ec4d306751 addresses osc type from #463 (#497) 2019-06-10 15:42:45 -04:00
tambien
d40f6c35b5 use local context when creating gain 2019-05-25 15:37:56 -04:00
tambien
4e92be1639 Merge branch 'dev' of https://github.com/Tonejs/Tone.js into dev 2019-05-23 14:01:06 -04:00
tambien
730a818bcb organizing into sub folders 2019-05-23 14:00:49 -04:00
tambien
39cf110fe4 Merge branch 'dev' of https://github.com/Tonejs/Tone.js into typescript 2019-05-21 23:53:46 -04:00
Stephan Lagerwaard
01670b2644 Change const to var for ES5 compatibility (#488) 2019-05-13 09:29:41 -04:00
tambien
184102ab4c removing shims
will replace with standardized-audio-context
2019-03-25 22:58:36 -07:00
tambien
75fc8c3874 fixing docs
[skip ci]
2019-03-25 19:44:58 -07:00
tambien
3c2d1250ea passes in the player to the callback
fixes #460
2019-03-25 11:53:57 -07:00
tambien
56800fe11b Disconnecting but not disposing onend
addresses #463
2019-03-19 20:26:28 -04:00
tambien
ae8be83cc5 fixing typo
fixes #462
2019-03-14 10:29:51 -04:00
tambien
023758425b use the playbackRate when computing the offset of a synced player
fixes #349
2019-03-12 11:25:33 -04:00
tambien
a3cc8d0f60 guarding against double disposing 2019-03-08 13:01:09 -05:00
tambien
a23ba73fc4 dispose oscillator onended 2019-03-08 12:17:27 -05:00
tambien
57d30ff6d6 optimizing case of basic oscillator types
fixes #427
2019-03-08 12:17:20 -05:00
tambien
d601b4be3a dispose the buffer onended
addresses #378
2019-03-08 11:30:00 -05:00
tambien
c023181579 linting 2019-02-15 13:03:10 -05:00
tambien
cb156fc6a3 no need to test if _wave exists
should always exist
2019-02-01 11:50:15 -05:00
tambien
a9adacb794 using Tone.connect for native nodes 2019-01-28 11:55:48 -05:00
tambien
2780cac504 using Tone.connect for connections with native nodes
addresses #421
2019-01-28 11:02:15 -05:00
tambien
610b847f4d fixing docs 2019-01-27 17:14:04 -05:00
tambien
87909ca4a3 BufferSourceNode shim is no longer needed
fixed issue in Safari which was resolved
2019-01-27 13:52:23 -05:00
tambien
ed71d8141b amd to es6 import/export
no longer using AMD (require.js) style imports, and beginning to move to es6 "import/export" statements everywhere.
2019-01-27 13:05:20 -05:00
tambien
0ba72ac93a clamping start/stop time to currentTime
this way if someone passes in start(0), it will just play immediately and not break things.

addresses #424
2019-01-23 16:19:07 -05:00
tambien
ffe3d434c6 closes the stream before reopening it 2019-01-08 11:26:57 -05:00
tambien
e739c4f1f3 adding baseType to all oscillators
makes getting/setting through interface easier
2019-01-08 00:13:48 -05:00
tambien
1ca4242323 'get' does not return partials array for basic types 2018-12-28 16:00:03 -05:00
tambien
0c10c80b12 only set the stop when it's not synced
otherwise it reschedules multiple stops
2018-12-26 15:42:05 -05:00
tambien
fd62e31a94 loaded boolean indicates when GrainPlayer is loaded
consistent with Tone.Player
2018-12-23 18:13:57 -05:00
tambien
9178798993 computed duration can be longer than the buffer length
because of playback rate changes, the duration can be longer than the buffer duration.

fixes #375
2018-12-23 13:50:02 -05:00
tambien
795e0d90d7 removing position tracking from player
fixes #361
2018-12-23 13:46:52 -05:00
tambien
c20f703c40 making sure that the type is never set to custom+partialCount 2018-12-21 15:31:36 -05:00
tambien
6c748e3e9d get and set the sourceType
this allows slight decoupling from combining everything in the 'type' string
2018-12-21 15:29:08 -05:00
tambien
f199af1f31 setting gain to 0 initially keeps it from popping 2018-12-17 12:41:14 -05:00
tambien
81f6ae1144 testing that a type can be passed into the constructor as an object
and gotten with the 'get()' method
2018-12-09 20:40:46 -05:00
tambien
85a606d81d documenting partialCount
[skip ci]
2018-12-09 18:58:47 -05:00
tambien
761de621d8 adding partialCount parameter
offers alternative "non string" way to set the partials to an osc type
2018-12-09 18:45:01 -05:00
Paul Varache
cfa23cfd24 Make noiseArrays generate samples lazily (#386)
* Make noiseArrays generate samples lazily

* getter -> get

* Create noiseBuffers instead of arrays

fixes #384
2018-09-10 14:20:02 -04:00
tambien
3d1202043a all modules are relative paths
simplifies deep references to individual files
2018-08-26 22:29:17 -04:00
tambien
ca5dccf1cb extends AudioNode 2018-07-30 13:30:21 -04:00
Yotam Mann
f76beaf916 moving to updated BufferSource fade out api
Player still fades from the end
2018-06-20 15:08:16 -04:00
Yotam Mann
fec49b6936 stops clock after 1 iteration when loop = false
removing seek method. adjusts for playbackRate when scheduling grain duration
2018-06-20 14:57:42 -04:00
Yotam Mann
405a841db0 stop method is beginning of fadeOut curve instead of end
simplifies code

fixes #328
2018-06-20 14:55:43 -04:00
tambien
2d1c2dc705 no noise supression 2018-06-13 15:57:05 -04:00
Yotam Mann
26df78b0db handles start/stop/restart better in many situations
less prone to errors where the OscillatorNode is silent after starting
2018-06-12 23:48:15 -04:00
Yotam Mann
ebbb1ef8bb log and assert help in debugging classes 2018-06-12 23:47:30 -04:00
tambien
534b97bea4 removing unnecessary type from TickSignal 2018-06-05 22:56:47 -04:00
Yotam Mann
bbf2929b6f rotating the phase of the oscillator group
addresses #354
2018-05-29 10:35:12 -04:00
Yotam Mann
4cb60ca111 Merge branch 'dev' of https://github.com/Tonejs/Tone.js into dev 2018-05-28 18:06:44 -04:00
Yotam Mann
5b20f572a3 removing unused lines 2018-05-28 18:01:19 -04:00
tambien
b8c5353638 Merge branch 'dev' of https://github.com/Tonejs/Tone.js into dev 2018-05-24 16:58:21 -04:00
Yotam Mann
54276555f2 correctly restarting PulseOscillator 2018-05-20 17:36:07 -04:00
Yotam Mann
ee18f87106 assign basic oscillator type
typo!
2018-05-20 17:25:39 -04:00
Yotam Mann
a7b783b0a5 updating docs
[skip ci]
2018-05-19 15:07:58 -04:00
tambien
9b78520038 noting that Oscillator is better for most cases 2018-05-17 18:38:53 -04:00
Charles Holbrow
51ac1a2100 Sampler Instrument can play entire sample, even when pitch shifting down. (#335)
* Sampler instrument does not truncate playback when pitch shifting down

* `BufferSource.start` defaults to playing the entire buffer, respects `this.playbackRate`

Previously, the Buffer would truncate the sample when `playbackRage` is less than 1.

Within the `start` method, this commit also tightens the scope of `var computedDur`, so
that it is accessible only where it is used.
2018-04-25 14:27:50 -04:00
Yotam Mann
18fa10086d making the inner forEachBetween exclusive of the end time 2018-03-30 17:57:35 -04:00
Yotam Mann
433cd78689 fixing infinite loop when stop and start are scheduled at the same time
validating change with test
2018-03-30 13:15:53 -04:00
Yotam Mann
65f15a1ef2 restart method to all the oscillators 2018-03-06 00:02:49 -05:00
Yotam Mann
7a5b872f76 using more accurate seconds counter for syncedStop 2018-03-05 22:29:00 -05:00
Yotam Mann
8c2acd03d5 removing retrigger, maintaining array of activeSources 2018-03-05 22:26:37 -05:00
Yotam Mann
5ded029206 getSecondsAtTime returns elapsed seconds
also invoking event immediately if the window has already passed
2018-03-05 22:25:57 -05:00
Yotam Mann
103f01bdc7 getState at time, does not throw error if already stopped 2018-03-05 22:25:12 -05:00
Yotam Mann
dcd5a0d0e9 documenting getStateAtTime 2018-03-05 13:00:45 -05:00
Yotam Mann
a5503e02d2 linting 2018-03-05 12:25:33 -05:00
Yotam Mann
a80ae0656b Tone.isDefined replaces !Tone.isUndef 2018-03-05 11:32:08 -05:00
Yotam Mann
701092d6e2 Fixing documentation error
fixes #316
2018-03-05 10:31:32 -05:00
Yotam Mann
efa06f43f1 testing that the stop event is not the first event 2018-03-01 14:44:20 -05:00
Yotam Mann
3d0a8005b7 removing isPast warning
clutters up tests, rarely helpful for debugging
2018-03-01 14:38:40 -05:00
Yotam Mann
4dd5c0a464 get the playback position of the playing buffer
integrates TickSource to track position even with playbackRate changes

Fixes #292 and Fixes #307
2018-03-01 14:15:37 -05:00
Yotam Mann
d98b10d6f8 documenting oscillator node 2018-03-01 14:08:35 -05:00
Yotam Mann
23932cbfa6 can cancel scheduled stop and setTick events 2018-03-01 14:06:03 -05:00
Yotam Mann
40530e3c16 'stop' is invoked on the last scheduled stop value 2018-03-01 14:02:11 -05:00
Yotam Mann
f06516d76d TickSource handles pause events
more flexible and accurate timing calculations
2018-02-27 17:02:17 -05:00
Yotam Mann
cf138c03b4 TickSource tracks elapsed ticks can start/stop
no pause yet
2018-02-25 17:25:32 -05:00
Yotam Mann
65f166570b Sources call 'restart' method if already started when 'start' is invoked 2018-02-08 11:10:53 -05:00
Yotam Mann
5eec68f9d0 compare rendered output to previously rendered audio files 2018-02-05 13:55:37 -05:00
Yotam Mann
a99e582c3c correctly handles changing playbackRate after source is started 2018-02-05 13:54:16 -05:00
Yotam Mann
457c7b221c optimizing instrument by only turning on oscillators when active 2018-02-05 13:50:14 -05:00
Yotam Mann
2fe32576ed using OscillatorNode in Oscillator 2018-02-05 00:40:53 -05:00
Yotam Mann
0ee67d8445 proper disposal of timeout 2018-02-05 00:40:42 -05:00
Yotam Mann
f086f58c75 OscillatorNode is a fire-and-forget Oscillator 2018-02-04 22:55:19 -05:00
Yotam Mann
c004145dc0 optimizing basic waveform case 2018-02-04 11:33:54 -05:00
Yotam Mann
177130ec36 BufferSourceNode shim for OfflineAudioContext on iOS
addresses #237
2018-01-21 22:33:02 -05:00
Yotam Mann
87217d1ab4 does not invoke stop from start in case playbackRate changes
fixes #292
2018-01-17 13:18:51 -05:00
Yotam Mann
fd84c251f7 eslinting 2018-01-03 12:07:06 -05:00
Yotam Mann
dded291a25 linting 2018-01-02 10:37:27 -05:00