Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | AudioFifo: remove extra white space | Phil Burk | 2016-12-15 | 1 | -3/+3 |
| | |||||
* | Fix deadlock in AudioFifo. | Greg | 2016-12-12 | 1 | -0/+31 |
| | | | | | | | | | | | | | | | | | | | | | | | | The deadlock scenario is the following: 1) AudioFifo is used with wait on write and read 2) Producer Thread calls write(). The buffer is full, then it gets into the while(available() == buffer.length) loop 3) a context switch happens right there, BEFORE readSemaphore.wait() 4) Consumer Thread calls read() multiple times until it depletes the buffer, then ends up in writeSemaphore.wait() 5) context switch back to the Producer Thread, which now calls readSemaphore.wait() Deadlock: the buffer is empty, and nobody is going to signal the producer that there is availability. This can be reproduced with a simple stress test. I added the stress test which is simply a copy of an existing one, with a very large value for the chunk variable. The race condition is more likely to be hit when the buffer is small, but I have hit it in "production" with 32K buffers, while generating large files (a few hundred megabytes). I am not sure the performance implications of the change, as my use cases are non-realtime. Still, all the tests pass. | ||||
* | Added evaluate() to FloatSample. | Phil Burk | 2016-11-30 | 1 | -28/+6 |
| | |||||
* | FloatWaveShaper: example program | Phil Burk | 2016-11-30 | 1 | -0/+134 |
| | | | | FIXME need better solution, add evaluate to FloatSample() | ||||
* | Turn down example FM carrier | Phil Burk | 2016-11-30 | 1 | -4/+4 |
| | |||||
* | cleanup for 16.7.8, doc MultiChannelSynthesizer, add DoubleTable.length() | Phil Burk | 2016-11-30 | 1 | -0/+98 |
| | |||||
* | add isStartRequired, add GroupChannel to synth | Phil Burk | 2016-11-29 | 2 | -13/+7 |
| | |||||
* | Merge pull request #41 from philburk/instruments | Phil Burk | 2016-11-29 | 7 | -127/+384 |
|\ | | | | | Instruments | ||||
| * | Instruments: add better synth, pitch control | Phil Burk | 2016-10-24 | 7 | -127/+384 |
| | | |||||
* | | Check for bounds when sample or envelope data is queued. | Phil Burk | 2016-11-27 | 1 | -3/+36 |
|/ | | | | | | Add unit test. Fix: #15 | ||||
* | Use sine waves as default in PlayGrains example. | Phil Burk | 2016-03-23 | 1 | -4/+4 |
| | |||||
* | Add clearCommandQueue() to Synthesizer. | Phil Burk | 2015-12-14 | 1 | -2/+35 |
| | | | | Also make some members final in SynthesisEngine. | ||||
* | Bump build date. | Phil Burk | 2015-11-02 | 1 | -3/+5 |
| | |||||
* | fix scaling in FFT | Phil Burk | 2015-11-02 | 1 | -18/+127 |
| | |||||
* | Use AudioMath for pitch to frequency conversion. | Phil Burk | 2015-04-29 | 3 | -16/+50 |
| | | | | | | Fix ListDevices default. Cleanup interpolator in AutoCorrelator. Remove empty string from SubtractiveSynth library. | ||||
* | Added a new BrownNoise unit generator that generate | Phil Burk | 2015-01-31 | 2 | -6/+9 |
| | | | | noise based on Brownian motion. | ||||
* | Initial commit of code. | Phil Burk | 2014-12-30 | 68 | -0/+9074 |