aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Bump version to 17.1.0 (#116)Phil Burk2023-04-101-6/+6
| | | | | Synchronize build.gradle and JSyn.java version numbers Co-authored-by: Phil Burk <[email protected]>
* Add PlateReverb, RoomReverb and MultiTapDelay units (#115)Phil Burk2023-04-109-5/+817
| | | | | | | | | | | | | PlateReverb is a simulation of a metal plate based on all-pass delays. RoomReverb uses a MultiTapDelay for early reflections and a PlateReverb for diffusion. Add a DSP package with utility classes used to build unit generators. Add TuneReverb app with faders for experimenting and hearing reverb. Add unit tests for SimpleDelay. Co-authored-by: Phil Burk <[email protected]>
* midi: fixes for ExoSynth (#114)Phil Burk2022-08-113-45/+75
| | | | | | | | | | Combine channel and noteNumber as a tag for the VoiceAllocator to avoid collisions when the same note is played on multiple channels. Allocate more voices: numChannels * voicesPerChannel For GM2 synths, force channel 10 (9) to use preset 128. That is a sign for the synth that this is a rhythm channel.
* Remove LOGGER references and a '== Double.NaN' check (#113)Santiago Seifert2022-08-041-1/+1
| | | | LOGGER is not imported, and Double.NaN doesn't follow traditional '==' comparison rules.
* Add support for arbitrary offsets in MessageParser.parse (#112)Santiago Seifert2022-08-032-12/+37
| | | | Used for MIDI message parsing.
* WaveRecorder: fix hang in StreamingThread (#106)Phil Burk2022-01-305-29/+118
| | | | | | | | | | The read() could hang forever waiting for data when the WaveRecorder was stopped. Now it terminates the thread. Also fix bug in AudioFifo when partially full. It would not read any data! Fixes #105
* Add getUnits() method to Circuit. (#104)Phil Burk2021-10-302-0/+53
| | | Add new TestCircuit unit test.
* Remove SLF4J from tests and gradlePhil Burk2021-09-0614-103/+40
| | | | It was an unnecessary dependency.
* jsyn: remove dependency on SLF4JPhil Burk2021-09-0118-234/+70
| | | | | | It was causing too many problems and had no apparent benefit. Fixes #101
* tests: fix unit testsPhil Burk2021-08-296-14/+31
| | | | | | | | | Add missing parameters. Create PseudoRandom. Do not run test that generates the WAV files. Fix hang in TestConnections. Fixes #97
* Fix ExponentialRamp exceptionPhil Burk2021-04-111-9/+9
| | | | | | Negative input could cause a crash. Fixes #92
* Add WaveFolder unit generator.Phil Burk2020-11-242-5/+87
| | | | Fold waveforms using sin(a*x).
* Removed shadow jarRubbaBoy2020-10-301-0/+15
|
* Downgraded to Java 8RubbaBoy2020-10-304-10/+10
| | | | Includes a minor logging fix
* Restructured project, added gradle, JUnit, logger, and moreRubbaBoy2020-10-30290-301/+5068
| | | | Added Gradle (and removed ant), modernized testing via the JUnit framework, moved standalone examples from the tests directory to a separate module, removed sparsely used Java logger and replaced it with SLF4J. More work could be done, however this is a great start to greatly improving the health of the codebase.
* JSyn: fix spelling of Lisa TolentinoPhil Burk2020-10-307-7/+7
|
* jsyn: bump to build 464, version 16.8.1Phil Burk2020-07-021-2/+2
|
* jsyn: some minor improvementsPhil Burk2020-07-021-1/+1
| | | | Use final in MultiPassThrough
* jsyn docs: various small improvementsPhil Burk2020-07-027-27/+60
| | | | Update build.xml to use newer versions of javadoc
* ui: use safeRepaint()Phil Burk2019-09-151-1/+7
| | | | | To allow workaround for OpenJDK bug. https://github.com/philburk/syntona/issues/13
* JSyn: bump to build 463, version 16.8.0Phil Burk2019-03-171-5/+5
|
* MultiChannelSynthesizer: add noteOn and noteOff with timestampPhil Burk2017-07-311-1/+31
|
* MultiPassThrough: multi-channel passthroughPhil Burk2017-07-313-7/+78
|
* Ensure upper bound for argument to Thread#setPriority is less thanNathan Mulcahey2017-07-171-1/+3
| | | | Thread#MAX_PRIORITY
* AudioFifo: remove extra white spacePhil Burk2016-12-151-12/+11
|
* Filter docs, add some see links.Phil Burk2016-12-152-9/+12
|
* Fix deadlock in AudioFifo.Greg2016-12-121-23/+42
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* fix javadocsPhil Burk2016-12-033-4/+3
|
* Throttle the CPU if there are no audio devices.Phil Burk2016-12-011-0/+7
|
* Added evaluate() to FloatSample.Phil Burk2016-11-301-9/+21
|
* Cleanup EdgeDetectorPhil Burk2016-11-301-9/+4
|
* cleanup for 16.7.8, doc MultiChannelSynthesizer, add DoubleTable.length()Phil Burk2016-11-305-15/+85
|
* add isStartRequired, add GroupChannel to synthPhil Burk2016-11-2911-76/+151
|
* Merge pull request #41 from philburk/instrumentsPhil Burk2016-11-2937-216/+1385
|\ | | | | Instruments
| * Instruments: add voice operation.Phil Burk2016-10-312-16/+35
| |
| * Instruments: add better synth, pitch controlPhil Burk2016-10-2436-210/+1360
| |
* | Check for bounds when sample or envelope data is queued.Phil Burk2016-11-271-14/+18
|/ | | | | | Add unit test. Fix: #15
* Fix race condition when stopping and restarting the synthesizer.Phil Burk2016-08-093-87/+95
| | | | https://github.com/philburk/jsyn/issues/30
* Add doc target to ant build.xmlPhil Burk2016-03-2323-168/+192
| | | | Also fixed Javadoc errors.
* Setup CrossFade port so it ranges from -1 to +1.Phil Burk2016-03-231-3/+4
|
* Add clearCommandQueue() to Synthesizer.Phil Burk2015-12-143-26/+41
| | | | Also make some members final in SynthesisEngine.
* Bump build date.Phil Burk2015-11-021-7/+7
|
* Merge pull request #10 from philburk/fixfftPhil Burk2015-11-022-6/+6
|\ | | | | fix scaling in FFT
| * fix scaling in FFTPhil Burk2015-11-022-6/+6
| |
* | JavaSoundSampleLoader: remove verbose message on loadPhil Burk2015-09-141-1/+0
|/
* FilterFourPole: raise minimum frequency to prevent blowupPhil Burk2015-08-261-1/+1
| | | | Feedback was causing the filter to hit NaN.
* Experiment with BLITPhil Burk2015-08-261-2/+2
|
* Instruments: browserPhil Burk2015-04-301-7/+6
|
* Use AudioMath for pitch to frequency conversion.Phil Burk2015-04-293-41/+6
| | | | | | Fix ListDevices default. Cleanup interpolator in AutoCorrelator. Remove empty string from SubtractiveSynth library.
* Added a new BrownNoise unit generator that generatePhil Burk2015-01-315-9/+94
| | | | noise based on Brownian motion.