Commit Graph
100 Commits
Author SHA1 Message Date
jensandClaude Sonnet 5 97b1c34cee Add generic headless plugin test host (Phase 1: core + audio I/O)
tools/testhost/ is a standalone CLI executable, not a JaySynth-specific
tool: it drives any VST2 plugin offline (no audio device, no GUI event
loop) via JUCE's own format-agnostic AudioPluginFormatManager /
AudioPluginInstance hosting API, so adding another format later (VST3,
LADSPA, eventually LV2) is just another addFormat() call - none of the
host logic changes.

- PluginHost: format-agnostic load/prepare/process/release, parameter
  get/set, and patch/bank state I/O, all delegating straight to
  AudioProcessor. Always queries the plugin's real input/output channel
  counts rather than assuming "0 in" (instrument) or a fixed channel
  layout - the same code path drives JaySynth (0 in/2 out, MIDI-driven)
  and a stereo/mono effect identically.
- AudioInputSource: fills the plugin's input channels with silence
  (default, correct no-op for instruments), a sine tone, white/pink
  noise, or an impulse - what makes the host equally useful for
  effect plugins, which need a real input signal to do anything.
- WavRecorder: records the plugin's actual output channel count to a
  WAV file via WavAudioFormat/AudioFormatWriter.
- main.cpp: CLI (--plugin/--patch/--param/--note/--input/--duration/
  --wav/--sampleRate/--blockSize), with basic NaN/Inf output detection.

Has its own JuceLibraryCode-equivalent package that compiles only the
module amalgams needed for hosting (not juce_audio_plugin_client,
which is the plugin-side VST entry point and would collide with this
executable's own main()), reusing the already-vendored
sdk/juce/JUCE-3.1.1 rather than a second JUCE copy - the host and any
plugin it loads are decoupled at the VST2 ABI, not the JUCE source
level, so this doesn't need to track JaySynth's own future JUCE
version bump.

Verified: builds clean (no new warnings) via
`MAKE_HOME=... make -C tools/testhost`. Smoke-tested against two very
different real plugins:
- build/linux/release/JaySynth.so (0 in/2 out, MIDI-driven): --note
  60 100 --duration 2 --wav produces correct-length, non-silent,
  NaN-free stereo audio.
- /usr/lib/vst/ZamDelay-vst.so (1 in/1 out, real third-party VST2
  effect, no MIDI): --input pink --duration 2 --wav correctly sizes
  input/output to mono and produces non-silent, NaN-free audio -
  proof the host is generic, not JaySynth-shaped.
- /usr/lib/vst/ZamEQ2-vst.so: the host's own NaN/Inf detection caught
  a real NaN in this plugin's default state on first render - exactly
  the kind of regression this tool exists to catch without a GUI.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011dhtwRLARk4eiPngcQykLJ
2026-07-27 19:09:06 +02:00
jens e9a5784ed1 refactored pacth import/export 2026-05-10 16:10:51 +02:00
jens f72a89ed61 no setCurrentProgram on getCurrentSatte 2026-05-10 13:55:47 +02:00
jens 17b12fe3f1 fix midi controller dialog 2026-05-10 13:37:38 +02:00
jens 255858cee8 - combo boxes have midi controller dialog
- reduce update of parameter sliders during Midi Controller Dialog
2026-05-10 13:08:35 +02:00
jens 15bcf87529 improved assignment of midi controllers 2026-05-10 12:11:34 +02:00
jens 31a0c4c009 fixed NRPN 2026-05-10 10:53:26 +02:00
jens 6e67193c3d - robusten and refactored NRPN
- increased number of midicontrollers from 128 to 1024
2026-05-10 10:36:24 +02:00
jens cbdb18e6ba handleController for CC and NPRN 2026-05-09 22:11:40 +02:00
jens bc2020e612 NRPN: normalized by max value 2026-05-09 22:04:21 +02:00
jens 8ce2db511b added Midi NRPN 2026-05-09 20:37:17 +02:00
jens 6be1b4a911 updated .gitignore 2026-05-09 08:37:16 +02:00
jens a8e6593eed used -pre suffix for version 2026-05-09 08:34:24 +02:00
jens c392104aec - refactored kml import/export
- added ability to import patch file with midicc defined without patch parameter
- fixed notes cut off by calling getStateInformation()
- disabled limiter
- increased version to v1.1.0-pre
2026-05-09 08:34:01 +02:00
jens 0de8c05f00 fixed behavior whenn unison and humanize is set over midi 2026-05-09 08:30:12 +02:00
jens 597c70bb53 fixed eval_blep 2026-05-09 08:29:00 +02:00
jens c7c9366dbb - refactored
- remove DC
2025-08-22 14:49:50 +02:00
jens 2ab8c68c9b m-files fixed wavwrite 2025-08-22 13:39:23 +02:00
jens 21411d2c56 m-files compile clean 2025-08-21 21:09:48 +02:00
jens 4f7803a8b4 added doc 2025-08-21 07:52:16 +02:00
jens 64c6745c76 added matlab 2025-08-21 07:27:52 +02:00
jens fd522e1b99 no SYNTH_DEBUG for release build 2025-08-18 21:55:31 +02:00
jens 7e11e3e72b fixed midi sync led 2025-08-18 21:42:19 +02:00
jens ed737f526f updated .gitignore 2025-08-18 18:35:13 +02:00
jens 83afc11612 - added run and install target 2025-08-18 18:32:08 +02:00
jens 8a81dd649e added web URL for later reference 2025-08-18 18:31:26 +02:00
jens 42e877c08d fixed includes 2025-08-18 18:30:55 +02:00
jens 1e0760e49b fixed includes 2025-08-18 18:29:25 +02:00
jens db4fdf68ff fixed MidiClock now working with ardour 2025-08-18 18:22:55 +02:00
jens 314b57b1ed fixing MidiClock (Zwischenstand #3) 2025-08-18 09:37:39 +02:00
jens a3ad0e989e fixing MidiClock (Zwischenstand #2) 2025-08-16 15:10:26 +02:00
jens 159fa60b08 fixing MidiClock (Zwischenstand) 2025-08-16 14:16:13 +02:00
jens e3fb2074f6 DSP: changed from float to double 2025-08-08 17:44:01 +02:00
jens 7fcbb9b509 Fixed code problems 2025-08-08 16:36:22 +02:00
jens 3a19db6a86 Fixed code problems 2025-08-08 16:36:09 +02:00
jens d73f172fc1 added bear target 2025-08-08 16:35:29 +02:00
jens f05e3be55f Fixed code problems 2025-08-08 16:35:04 +02:00
jens 2ec3cc9543 added run target 2025-08-08 13:54:33 +02:00
jens 0f70ea025c change submodule/make 2025-08-08 13:54:08 +02:00
jens 2ac71f33f1 added new waves 2025-08-06 22:08:46 +02:00
jens 73332a7292 refactored wavetable constants 2025-08-06 22:08:13 +02:00
jens 4bf46df821 - added 12bit wace for Microwave
- refactored
2025-08-06 21:15:12 +02:00
jens 072280c603 refactored waves 2025-08-06 07:51:29 +02:00
jens 4a4d67f5f1 - wavetable using Waldorf Microwave "wave.bin" (16bit) is broken
- wavetable uses "wave2.bin" (8bit) Waveforms
-
2025-08-05 19:36:59 +02:00
jens 12783fdfdb removed unused include 2025-08-03 20:51:34 +02:00
jens 63e1daa706 export waves to uild folder 2025-08-03 20:42:07 +02:00
jens bc8a2b5b20 cleaned up 2025-08-03 20:35:59 +02:00
jens 26c3ee4cb6 - fixed problems
- updated .gitignore
2025-08-03 17:04:57 +02:00
jens c0e651bf68 - refactored 2025-08-03 10:57:01 +02:00
jens d801ce21e8 added patch 2025-08-02 14:36:02 +02:00
jens 025818a042 [sdk/vstsdk2.4]
- refactored
- created patch
2025-08-02 14:34:53 +02:00
jens 3bda521d62 - fixed master volume
- added osc jitter to blep waveform saw, square and tri
2025-08-02 12:04:40 +02:00
jens ff6ba8a179 permit to override default make environment 2025-08-02 10:24:41 +02:00
jens 2afe0cfccc change submodule/make 2025-08-02 10:23:53 +02:00
jens e666247a45 change submodule/fir 2025-08-02 10:22:04 +02:00
jens dab1ed956f juce: use 2025-08-02 10:17:55 +02:00
jens 0dd21799f9 [VCO/Blit/Sawtooth]
- added slight random frequency deviation for more vivid sound
2025-07-31 18:15:08 +02:00
jens bcfe5e4edd fixed 2025-07-31 18:14:23 +02:00
jens 4d25a24e53 disabled limiter 2025-07-31 18:13:16 +02:00
jens 3e63bdd4ce added sounds 2025-07-31 18:01:49 +02:00
jens 465bc88e8f removed linefeed 2025-07-31 16:41:24 +02:00
jens 6e8b990391 -fixed includes 2025-07-31 16:39:38 +02:00
jens 6fc6b9f567 - added submodules 2025-07-29 20:43:25 +02:00
jens 7ef6975cb3 - adde exra sounds 2024-03-04 08:40:52 +01:00
jens 42d155fdac - compile clean for GCC 13 2024-03-04 08:34:54 +01:00
jens 10e92afcf4 - fixed updating GUI params 2023-05-04 22:14:18 +02:00
jens 63bb047c1e - fixed unisono toggle 2023-05-04 21:16:50 +02:00
jens 89502ec978 Refactored 2023-05-03 18:06:30 +02:00
jens 6bd4590a54 - added legacy (< v1.0.0) import for patches
- added legacy (< v1.0.0) import for banks
2023-05-03 17:59:08 +02:00
jens c9c06c9d97 - fixed crash on setStateInformation/setCurrentStateInformation
- fixed crash on getStateInformation/getCurrentStateInformation
2023-05-02 19:47:51 +02:00
jens 764f5fdf74 - fixed leakage during patch load
- fixed leakage during bank load
2023-05-02 18:21:12 +02:00
jens 4b73b5ba69 - put version info into Makefile 2023-05-02 18:19:48 +02:00
jens ca353251f4 - refactored XML structure
- new XML structure not compatible to old structure
2023-04-29 00:05:13 +02:00
jens 08b70cb57b - refactored XML structure
- new XML structure not compatible to old structure
2023-04-29 00:00:34 +02:00
jens c5a87ef41b Added xmb, xmp files 2023-04-28 19:49:34 +02:00
jens 92d911d9ed Remember directory 2023-04-28 15:38:29 +02:00
jens ea4397907f - added load of fxb through GUI
- added load of fxp through GUI
2023-04-28 14:08:59 +02:00
jens b4add9e530 - constify
- refactored MidiCC
- JaySynthSound is not MidiCC, but has MidiCC
- refactored xml import export for patches and banks
2023-04-28 12:32:26 +02:00
jens 5850ab5d46 - Bank/Patch load/save: Opens fileChooser on btn press and calls pluginProcessor 2023-04-28 09:47:31 +02:00
jens 45f2696b77 Added GUI buttons for bank/patch load and save 2023-04-28 08:31:59 +02:00
jens 8819167c54 Fixed waves path for linux 2023-04-28 08:30:23 +02:00
jens e247245d5f - revert removing fir 2023-04-26 22:01:57 +02:00
jens cb14eaef59 - cleaned up module Makefiles
- reduce variable settings in Makefile
2023-04-26 21:39:41 +02:00
jens 6dadebb700 - refactored sound banks and sound patches
- added Microwave raw waveforms
- added additional sound bank
2023-04-26 14:55:26 +02:00
jens 7932c098e8 - fixed uppercase in inclusion of MMReg.h
- fixed _uuidof for MinGW
2023-04-26 14:45:54 +02:00
jens b4f4b1fa66 - Refactored MAke system. Put sources into config.mk
- export variables of main Makefile
2023-04-26 10:50:12 +02:00
jens 91518b32e5 - added Makefile for windows target 2023-04-26 10:48:03 +02:00
jens 05ec69ca99 - added Make files for windows target using mingw 2023-04-26 10:47:27 +02:00
jens 51311d41c0 - deleted 2023-04-26 10:46:41 +02:00
jens 5e20cebcc6 - fixed Juce path 2023-04-21 14:50:46 +02:00
jens 3af11a3278 - added config.mk and Makefile for Jay's build system 2023-04-21 14:29:31 +02:00
jens 978c752e8b - use jsy_min/jsy_max
- fixed includes
- removed redundant MW table
- added Missing JK_MidiClock
2023-04-21 14:25:04 +02:00
jens 2fcbc59880 - Makefile now for Linux
- compile clean
2023-04-21 14:21:38 +02:00
jens 762b8f0e7d - clean working copy for leaving SVN 2022-06-28 19:04:46 +02:00
jens 62a2d47cb3 - BPM display use BPM calculation from LFO
- LFO: fixed S&H waveforms

git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@737 b431acfa-c32f-4a4a-93f1-934dc6c82436
2020-08-24 11:46:40 +00:00
jens ef6d5fdb7e - also feed Global LFO 2..4 with Midi Clock
- set parameter text for MIDISYNC_MODE

git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@736 b431acfa-c32f-4a4a-93f1-934dc6c82436
2020-08-17 20:53:43 +00:00
jens c5ba984db2 - reverted removing JK Midi Clock
git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@735 b431acfa-c32f-4a4a-93f1-934dc6c82436
2020-08-17 17:44:52 +00:00
jens e60083523d - removed JK Midi clock
git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@734 b431acfa-c32f-4a4a-93f1-934dc6c82436
2020-08-17 17:34:44 +00:00
jens 2eb2a15b18 - removed JK Midi clock
git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@733 b431acfa-c32f-4a4a-93f1-934dc6c82436
2020-08-17 17:33:44 +00:00
jens a561dbeb19 - set thread name in initializer
git-svn-id: http://moon:8086/svn/software/trunk/projects/JaySynth@732 b431acfa-c32f-4a4a-93f1-934dc6c82436
2020-08-17 12:07:25 +00:00