From aecdb062f8b437031af95635aebb3d25362a0da2 Mon Sep 17 00:00:00 2001 From: Christopher Arndt Date: Mon, 26 Jan 2026 22:27:46 +0100 Subject: [PATCH 1/5] feat: add example patch 'Cringe Synth' built around Surge XT Twist oscillator Signed-off-by: Christopher Arndt --- .../examples/SpotlightKid_-_Cringe-Synth.vcv | 2114 +++++++++++++++++ 1 file changed, 2114 insertions(+) create mode 100644 patches/examples/SpotlightKid_-_Cringe-Synth.vcv diff --git a/patches/examples/SpotlightKid_-_Cringe-Synth.vcv b/patches/examples/SpotlightKid_-_Cringe-Synth.vcv new file mode 100644 index 0000000..fa5a0d6 --- /dev/null +++ b/patches/examples/SpotlightKid_-_Cringe-Synth.vcv @@ -0,0 +1,2114 @@ +{ + "version": "2.4.1", + "path": "SpotlightKid_-_Cringe-Synth.vcv", + "zoom": 1.0, + "gridOffset": [ + 2.798046827316284, + -0.03702713921666145 + ], + "modules": [ + { + "id": 2799203590388841, + "plugin": "Cardinal", + "model": "TextEditor", + "version": "2.0", + "params": [], + "leftModuleId": 7835847246020659, + "data": { + "filepath": "", + "lang": "None", + "etext": "# Cringe - A polyphonic macro-ocillator Synth\n\n(inspired by \"Arturia Minifreak\" and\n\"Behringer Grind\")\n\n* Surge XT Twist macro oscillator\n (based on \"Mutable Instruments Plaits\")\n* Macro oscillator into Surge XT filter,\n into Surge XT EG/VCA\n* Chorus, delay and reverb\n* Notes can be triggered via MIDI.\n* Modwheel controls vibrato.\n* MIDI CCs are mapped to the most important\n parameters:\n \n * Oszillator params 1-4\n * Filter cutoff, resonance, drive, env amount\n * Envelope attack, decay, sustain, release\n\n\n\n\n", + "width": 27 + }, + "pos": [ + 76, + 0 + ] + }, + { + "id": 6686738058731514, + "plugin": "SurgeXTRack", + "model": "SurgeXTQuadLFO", + "version": "2.0", + "params": [ + { + "value": 0.5813294649124146, + "id": 0 + }, + { + "value": 0.38461539149284363, + "id": 1 + }, + { + "value": 0.38461539149284363, + "id": 2 + }, + { + "value": 0.38461539149284363, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": 0.0, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 1.0, + "id": 12 + }, + { + "value": 1.0, + "id": 13 + }, + { + "value": 1.0, + "id": 14 + }, + { + "value": 1.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + } + ], + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "clockStyle": 0, + "forcePolyphony": -1 + } + }, + "pos": [ + 40, + 1 + ] + }, + { + "id": 2284558036713263, + "plugin": "Befaco", + "model": "Atte", + "version": "2.0", + "params": [ + { + "value": 1.2077964584022993e-7, + "id": 0 + }, + { + "value": 0.5275605320930481, + "id": 1 + }, + { + "value": 1.0, + "id": 2 + }, + { + "value": 1.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + } + ], + "data": { + "normalledVoltageIdx": 2 + }, + "pos": [ + 28, + 1 + ] + }, + { + "id": 3851544056860100, + "plugin": "SurgeXTRack", + "model": "SurgeXTOSCTwist", + "version": "2.0", + "params": [ + { + "value": -2.0, + "id": 0 + }, + { + "value": 0.004999999888241291, + "id": 1 + }, + { + "value": 0.7480300068855286, + "id": 2 + }, + { + "value": 0.28346529603004456, + "id": 3 + }, + { + "value": 0.7244109511375427, + "id": 4 + }, + { + "value": 1.1943727429297724e-7, + "id": 5 + }, + { + "value": 1.0, + "id": 6 + }, + { + "value": 0.693000078201294, + "id": 7 + }, + { + "value": 0.012000009417533875, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 1.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 1.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 1.0, + "id": 50 + } + ], + "rightModuleId": 8399478428125930, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "paramNatural": [ + { + "index": 0, + "valtype": 0, + "val_i": 0 + }, + { + "index": 1, + "valtype": 2, + "val_f": 0.49606001377105713 + }, + { + "index": 2, + "valtype": 2, + "val_f": -0.4330694079399109 + }, + { + "index": 3, + "valtype": 2, + "val_f": 0.44882190227508545 + }, + { + "index": 4, + "valtype": 2, + "val_f": -0.9999997615814209 + }, + { + "index": 5, + "valtype": 2, + "val_f": 1.0 + }, + { + "index": 6, + "valtype": 2, + "val_f": 0.693000078201294 + } + ], + "halfbandM": 6, + "halfbandSteep": true, + "doDCBlock": true, + "displayPolyChannel": 0 + } + }, + "pos": [ + 4, + 0 + ] + }, + { + "id": 8399478428125930, + "plugin": "SurgeXTRack", + "model": "SurgeXTVCF", + "version": "2.0", + "params": [ + { + "value": -0.8504011631011963, + "id": 0 + }, + { + "value": 0.015748150646686554, + "id": 1 + }, + { + "value": 1.2440974712371826, + "id": 2 + }, + { + "value": 1.0, + "id": 3 + }, + { + "value": 1.0, + "id": 4 + }, + { + "value": 0.9380000829696655, + "id": 5 + }, + { + "value": 0.0, + "id": 6 + }, + { + "value": 0.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 2.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + } + ], + "leftModuleId": 3851544056860100, + "rightModuleId": 2029604380744860, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "displayPolyChannel": 0 + } + }, + "pos": [ + 16, + 0 + ] + }, + { + "id": 2029604380744860, + "plugin": "SurgeXTRack", + "model": "SurgeXTEGxVCA", + "version": "2.0", + "params": [ + { + "value": 1.0025711059570312, + "id": 0 + }, + { + "value": 0.0, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 1.200857013827772e-7, + "id": 3 + }, + { + "value": 0.6141747236251831, + "id": 4 + }, + { + "value": 1.1983998149389663e-7, + "id": 5 + }, + { + "value": 0.4803157150745392, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + }, + { + "value": 1.0, + "id": 8 + }, + { + "value": 1.0, + "id": 9 + }, + { + "value": 1.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + } + ], + "leftModuleId": 8399478428125930, + "rightModuleId": 5435983300881264, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "clockStyle": 0 + } + }, + "pos": [ + 28, + 0 + ] + }, + { + "id": 5435983300881264, + "plugin": "SurgeXTRack", + "model": "SurgeXTFXChorus", + "version": "2.0", + "params": [ + { + "value": 0.5607175230979919, + "id": 0 + }, + { + "value": 0.5821687579154968, + "id": 1 + }, + { + "value": 0.05000000074505806, + "id": 2 + }, + { + "value": 0.07999999821186066, + "id": 3 + }, + { + "value": 0.2769230902194977, + "id": 4 + }, + { + "value": 1.0, + "id": 5 + }, + { + "value": 0.08871415257453918, + "id": 6 + }, + { + "value": 1.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 0.0, + "id": 57 + }, + { + "value": 0.0, + "id": 58 + }, + { + "value": 0.0, + "id": 59 + }, + { + "value": 1.0, + "id": 60 + }, + { + "value": 1.0, + "id": 61 + } + ], + "leftModuleId": 2029604380744860, + "rightModuleId": 4677901538619524, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "loadedPreset": 11, + "presetName": "Soft", + "presetIsDirty": true, + "clockStyle": 0, + "polyphonicMode": false, + "paramNatural": [ + { + "index": 0, + "valtype": 2, + "val_f": -6.5142598152160645 + }, + { + "index": 1, + "valtype": 2, + "val_f": 2.314700126647949 + }, + { + "index": 2, + "valtype": 2, + "val_f": 0.05000000074505806 + }, + { + "index": 3, + "valtype": 2, + "val_f": 0.07999999821186066 + }, + { + "index": 4, + "valtype": 2, + "val_f": -24.0 + }, + { + "index": 5, + "valtype": 2, + "val_f": 70.0 + }, + { + "index": 6, + "valtype": 2, + "val_f": 0.08871415257453918 + }, + { + "index": 7, + "valtype": 2, + "val_f": 24.0 + }, + { + "index": 8, + "valtype": 0, + "val_i": 0 + }, + { + "index": 9, + "valtype": 0, + "val_i": 0 + }, + { + "index": 10, + "valtype": 0, + "val_i": 0 + }, + { + "index": 11, + "valtype": 0, + "val_i": 0 + } + ] + } + }, + "pos": [ + 40, + 0 + ] + }, + { + "id": 4677901538619524, + "plugin": "SurgeXTRack", + "model": "SurgeXTDelay", + "version": "2.0", + "params": [ + { + "value": -0.8456680178642273, + "id": 0 + }, + { + "value": -0.7816022634506226, + "id": 1 + }, + { + "value": 0.0, + "id": 2 + }, + { + "value": 0.5, + "id": 3 + }, + { + "value": 0.0, + "id": 4 + }, + { + "value": -60.0, + "id": 5 + }, + { + "value": 70.0, + "id": 6 + }, + { + "value": 2.0, + "id": 7 + }, + { + "value": 0.0, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.0, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 3.0, + "id": 50 + } + ], + "leftModuleId": 5435983300881264, + "rightModuleId": 7835847246020659, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "clockStyle": 0 + } + }, + "pos": [ + 52, + 0 + ] + }, + { + "id": 7835847246020659, + "plugin": "SurgeXTRack", + "model": "SurgeXTFXReverb", + "version": "2.0", + "params": [ + { + "value": 0.19752730429172516, + "id": 0 + }, + { + "value": 0.6650000214576721, + "id": 1 + }, + { + "value": 0.23214100301265717, + "id": 2 + }, + { + "value": 0.40044617652893066, + "id": 3 + }, + { + "value": 0.2785710096359253, + "id": 4 + }, + { + "value": 0.4517306089401245, + "id": 5 + }, + { + "value": 0.4615384638309479, + "id": 6 + }, + { + "value": 0.5, + "id": 7 + }, + { + "value": 0.7460850477218628, + "id": 8 + }, + { + "value": 0.0, + "id": 9 + }, + { + "value": 0.5, + "id": 10 + }, + { + "value": 0.0, + "id": 11 + }, + { + "value": 0.0, + "id": 12 + }, + { + "value": 0.0, + "id": 13 + }, + { + "value": 0.0, + "id": 14 + }, + { + "value": 0.0, + "id": 15 + }, + { + "value": 0.0, + "id": 16 + }, + { + "value": 0.0, + "id": 17 + }, + { + "value": 0.0, + "id": 18 + }, + { + "value": 0.0, + "id": 19 + }, + { + "value": 0.0, + "id": 20 + }, + { + "value": 0.0, + "id": 21 + }, + { + "value": 0.0, + "id": 22 + }, + { + "value": 0.0, + "id": 23 + }, + { + "value": 0.0, + "id": 24 + }, + { + "value": 0.0, + "id": 25 + }, + { + "value": 0.0, + "id": 26 + }, + { + "value": 0.0, + "id": 27 + }, + { + "value": 0.0, + "id": 28 + }, + { + "value": 0.0, + "id": 29 + }, + { + "value": 0.0, + "id": 30 + }, + { + "value": 0.0, + "id": 31 + }, + { + "value": 0.0, + "id": 32 + }, + { + "value": 0.0, + "id": 33 + }, + { + "value": 0.0, + "id": 34 + }, + { + "value": 0.0, + "id": 35 + }, + { + "value": 0.0, + "id": 36 + }, + { + "value": 0.0, + "id": 37 + }, + { + "value": 0.0, + "id": 38 + }, + { + "value": 0.0, + "id": 39 + }, + { + "value": 0.0, + "id": 40 + }, + { + "value": 0.0, + "id": 41 + }, + { + "value": 0.0, + "id": 42 + }, + { + "value": 0.0, + "id": 43 + }, + { + "value": 0.0, + "id": 44 + }, + { + "value": 0.0, + "id": 45 + }, + { + "value": 0.0, + "id": 46 + }, + { + "value": 0.0, + "id": 47 + }, + { + "value": 0.0, + "id": 48 + }, + { + "value": 0.0, + "id": 49 + }, + { + "value": 0.0, + "id": 50 + }, + { + "value": 0.0, + "id": 51 + }, + { + "value": 0.0, + "id": 52 + }, + { + "value": 0.0, + "id": 53 + }, + { + "value": 0.0, + "id": 54 + }, + { + "value": 0.0, + "id": 55 + }, + { + "value": 0.0, + "id": 56 + }, + { + "value": 0.0, + "id": 57 + }, + { + "value": 0.0, + "id": 58 + }, + { + "value": 0.0, + "id": 59 + }, + { + "value": 1.0, + "id": 60 + }, + { + "value": 1.0, + "id": 61 + } + ], + "leftModuleId": 4677901538619524, + "rightModuleId": 2799203590388841, + "data": { + "xtshared": { + "streamingVersion": 1, + "buildInfo": "os:linux surge:git-no-commit buildtime=Jun 27 2025 10:36:53", + "isCoupledToGlobalStyle": true, + "localStyle": 10001, + "localDisplayRegionColor": 900001, + "localModulationColor": 900005, + "localControlValueColor": 900001, + "localPowerButtonColor": 900003 + }, + "modulespecific": { + "loadedPreset": 13, + "presetName": "Room", + "presetIsDirty": true, + "polyphonicMode": false, + "paramNatural": [ + { + "index": 0, + "valtype": 2, + "val_f": -5.432145118713379 + }, + { + "index": 1, + "valtype": 0, + "val_i": 2 + }, + { + "index": 2, + "valtype": 2, + "val_f": 0.23214100301265717 + }, + { + "index": 3, + "valtype": 2, + "val_f": 0.004461765289306641 + }, + { + "index": 4, + "valtype": 2, + "val_f": 0.2785710096359253 + }, + { + "index": 5, + "valtype": 2, + "val_f": -1.2750205993652344 + }, + { + "index": 6, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 7, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 8, + "valtype": 2, + "val_f": 36.991058349609375 + }, + { + "index": 9, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 10, + "valtype": 2, + "val_f": 0.0 + }, + { + "index": 11, + "valtype": 0, + "val_i": 0 + } + ] + } + }, + "pos": [ + 64, + 0 + ] + }, + { + "id": 2, + "plugin": "Cardinal", + "model": "HostMIDI", + "version": "2.0", + "params": [], + "data": { + "pwRange": 2.0, + "smooth": false, + "forceGateGaps": false, + "channels": 8, + "polyMode": 0, + "lastPitch": 8192, + "lastMod": 0, + "inputChannel": 0, + "outputChannel": 0 + }, + "pos": [ + 16, + 1 + ] + }, + { + "id": 5386134664554238, + "plugin": "Cardinal", + "model": "HostMIDIMap", + "version": "2.0", + "params": [], + "data": { + "maps": [ + { + "cc": 37, + "moduleId": 3851544056860100, + "paramId": 2 + }, + { + "cc": 38, + "moduleId": 3851544056860100, + "paramId": 3 + }, + { + "cc": 39, + "moduleId": 3851544056860100, + "paramId": 4 + }, + { + "cc": 40, + "moduleId": 3851544056860100, + "paramId": 5 + }, + { + "cc": 33, + "moduleId": 2029604380744860, + "paramId": 3 + }, + { + "cc": 34, + "moduleId": 2029604380744860, + "paramId": 4 + }, + { + "cc": 35, + "moduleId": 2029604380744860, + "paramId": 5 + }, + { + "cc": 36, + "moduleId": 2029604380744860, + "paramId": 6 + }, + { + "cc": 62, + "moduleId": 8399478428125930, + "paramId": 0 + }, + { + "cc": 63, + "moduleId": 8399478428125930, + "paramId": 1 + }, + { + "cc": 75, + "moduleId": 8399478428125930, + "paramId": 2 + }, + { + "cc": 1, + "moduleId": 2284558036713263, + "paramId": 0 + }, + { + "cc": 76, + "moduleId": 2284558036713263, + "paramId": 1 + }, + { + "cc": -1, + "moduleId": -1, + "paramId": 0 + } + ], + "smooth": true, + "channel": 0 + }, + "pos": [ + 4, + 1 + ] + }, + { + "id": 6151661423319598, + "plugin": "Cardinal", + "model": "HostAudio2", + "version": "2.0", + "params": [ + { + "value": 1.0, + "id": 0 + } + ], + "data": { + "dcFilter": true + }, + "pos": [ + 68, + 1 + ] + } + ], + "cables": [ + { + "id": 4870882873778933, + "outputModuleId": 2, + "outputId": 0, + "inputModuleId": 3851544056860100, + "inputId": 0, + "color": "#e8ff52" + }, + { + "id": 2579627869165631, + "outputModuleId": 8399478428125930, + "outputId": 0, + "inputModuleId": 2029604380744860, + "inputId": 0, + "color": "#ff5252" + }, + { + "id": 962456096359109, + "outputModuleId": 8399478428125930, + "outputId": 1, + "inputModuleId": 2029604380744860, + "inputId": 1, + "color": "#ff9352" + }, + { + "id": 2222999430484636, + "outputModuleId": 4677901538619524, + "outputId": 0, + "inputModuleId": 7835847246020659, + "inputId": 0, + "color": "#52ff7d" + }, + { + "id": 6472190894340858, + "outputModuleId": 4677901538619524, + "outputId": 1, + "inputModuleId": 7835847246020659, + "inputId": 1, + "color": "#52ffbe" + }, + { + "id": 4851926975624854, + "outputModuleId": 5435983300881264, + "outputId": 0, + "inputModuleId": 4677901538619524, + "inputId": 0, + "color": "#52ffff" + }, + { + "id": 1131323874335431, + "outputModuleId": 5435983300881264, + "outputId": 1, + "inputModuleId": 4677901538619524, + "inputId": 1, + "color": "#52beff" + }, + { + "id": 378399834714435, + "outputModuleId": 2, + "outputId": 1, + "inputModuleId": 2029604380744860, + "inputId": 2, + "color": "#e8ff52" + }, + { + "id": 5460605340883330, + "outputModuleId": 6686738058731514, + "outputId": 0, + "inputModuleId": 2284558036713263, + "inputId": 0, + "color": "#ff5293" + }, + { + "id": 4133716265410150, + "outputModuleId": 2284558036713263, + "outputId": 0, + "inputModuleId": 3851544056860100, + "inputId": 2, + "color": "#ff5252" + }, + { + "id": 1320773246873342, + "outputModuleId": 2029604380744860, + "outputId": 0, + "inputModuleId": 5435983300881264, + "inputId": 0, + "color": "#ff9352" + }, + { + "id": 3376170110142204, + "outputModuleId": 2029604380744860, + "outputId": 1, + "inputModuleId": 5435983300881264, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 3429691906124004, + "outputModuleId": 2029604380744860, + "outputId": 2, + "inputModuleId": 2284558036713263, + "inputId": 1, + "color": "#e8ff52" + }, + { + "id": 291747936352326, + "outputModuleId": 2284558036713263, + "outputId": 1, + "inputModuleId": 8399478428125930, + "inputId": 2, + "color": "#a8ff52" + }, + { + "id": 7571876195938815, + "outputModuleId": 3851544056860100, + "outputId": 0, + "inputModuleId": 8399478428125930, + "inputId": 0, + "color": "#67ff52" + }, + { + "id": 1260042254448408, + "outputModuleId": 3851544056860100, + "outputId": 0, + "inputModuleId": 8399478428125930, + "inputId": 1, + "color": "#52ff7d" + }, + { + "id": 5302575887902969, + "outputModuleId": 2, + "outputId": 1, + "inputModuleId": 3851544056860100, + "inputId": 1, + "color": "#ffd452" + }, + { + "id": 7099271353973173, + "outputModuleId": 7835847246020659, + "outputId": 0, + "inputModuleId": 6151661423319598, + "inputId": 0, + "color": "#ff5252" + }, + { + "id": 7428242121207301, + "outputModuleId": 7835847246020659, + "outputId": 1, + "inputModuleId": 6151661423319598, + "inputId": 1, + "color": "#ffd452" + } + ] +} From 7b60e3945c69a5111f37b6ec7d60a7e5e63d83e8 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 30 Jan 2026 23:31:51 +0100 Subject: [PATCH 2/5] Sign and Notarize macOS builds Signed-off-by: falkTX --- .github/workflows/build.yml | 7 ++++++ dpf | 2 +- utils/create-macos-installer.sh | 41 +++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1dd648..57369d4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -202,6 +202,13 @@ jobs: - name: Build macOS (packaging) if: steps.cache.outputs.cache-hit == 'true' shell: bash + env: + MACOS_APP_CERTIFICATE: ${{ secrets.MACOS_APP_CERTIFICATE }} + MACOS_INSTALLER_CERTIFICATE: ${{ secrets.MACOS_INSTALLER_CERTIFICATE }} + MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} + MACOS_NOTARIZATION_USER: ${{ secrets.MACOS_NOTARIZATION_USER }} + MACOS_NOTARIZATION_PASS: ${{ secrets.MACOS_NOTARIZATION_PASS }} + MACOS_NOTARIZATION_TEAM: ${{ secrets.MACOS_NOTARIZATION_TEAM }} run: | source deps/PawPaw/local.env macos-universal-10.15 ./utils/create-macos-installer.sh diff --git a/dpf b/dpf index d38701a..5b32b1c 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit d38701abff789f44f2f483a6360416a9adbcc8f9 +Subproject commit 5b32b1cac430e3038319e46c9e10f459e95ca598 diff --git a/utils/create-macos-installer.sh b/utils/create-macos-installer.sh index c88d2d1..c8d4880 100755 --- a/utils/create-macos-installer.sh +++ b/utils/create-macos-installer.sh @@ -26,10 +26,34 @@ rm -rf vst2/*.vst/Contents/Resources rm -rf vst3/*.vst3/Contents/Resources rm -rf clap/*.clap/Contents/Resources +if [ -n "${MACOS_APP_CERTIFICATE}" ] && [ -n "${MACOS_INSTALLER_CERTIFICATE}" ] && [ -n "${MACOS_CERTIFICATE_PASSWORD}" ]; then + security create-keychain -p "" $(pwd)/keychain.db + security unlock-keychain -p "" $(pwd)/keychain.db + echo -n "${MACOS_APP_CERTIFICATE}" | base64 --decode -o cert.p12 + security import cert.p12 -P "${MACOS_CERTIFICATE_PASSWORD}" -A -t cert -f pkcs12 -k $(pwd)/keychain.db + echo -n "${MACOS_INSTALLER_CERTIFICATE}" | base64 --decode -o cert.p12 + security import cert.p12 -P "${MACOS_CERTIFICATE_PASSWORD}" -A -t cert -f pkcs12 -k $(pwd)/keychain.db + rm cert.p12 + security list-keychain -d user -s $(pwd)/keychain.db + + MACOS_APP_DEV_ID="$(security find-identity -v $(pwd)/keychain.db | grep 'Developer ID Application:' | head -n 1 | cut -d' ' -f 5-99 | sed 's/\"//g')" + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime au/*.component + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime clap/*.clap + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime jack/*.app + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime native/*.app + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime vst2/*.vst + codesign -s "${MACOS_APP_DEV_ID}" --deep --force --verbose --option=runtime vst3/*.vst3 + codesign -s "${MACOS_APP_DEV_ID}" --force --verbose --option=runtime lv2/*.lv2/*.dylib + + MACOS_INSTALLER_DEV_ID="$(security find-identity -v $(pwd)/keychain.db | grep 'Developer ID Installer:' | head -n 1 | cut -d' ' -f 5-99 | sed 's/\"//g')" + PKG_SIGN_ARGS=(--sign "${MACOS_INSTALLER_DEV_ID}") +fi + pkgbuild \ --identifier "studio.kx.distrho.cardinal.resources" \ --install-location "/Library/Application Support/Cardinal/" \ --root "${PWD}/res/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-resources.pkg pkgbuild \ @@ -37,6 +61,7 @@ pkgbuild \ --component-plist "../utils/macOS/Build_JACK.plist" \ --install-location "/Applications/" \ --root "${PWD}/jack/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-jack.pkg pkgbuild \ @@ -44,36 +69,42 @@ pkgbuild \ --component-plist "../utils/macOS/Build_Native.plist" \ --install-location "/Applications/" \ --root "${PWD}/native/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-native.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.components" \ --install-location "/Library/Audio/Plug-Ins/Components/" \ --root "${PWD}/au/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-components.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.lv2bundles" \ --install-location "/Library/Audio/Plug-Ins/LV2/" \ --root "${PWD}/lv2/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-lv2bundles.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.vst2bundles" \ --install-location "/Library/Audio/Plug-Ins/VST/" \ --root "${PWD}/vst2/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-vst2bundles.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.vst3bundles" \ --install-location "/Library/Audio/Plug-Ins/VST3/" \ --root "${PWD}/vst3/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-vst3bundles.pkg pkgbuild \ --identifier "studio.kx.distrho.plugins.cardinal.clapbundles" \ --install-location "/Library/Audio/Plug-Ins/CLAP/" \ --root "${PWD}/clap/" \ + "${PKG_SIGN_ARGS[@]}" \ ../dpf-cardinal-clapbundles.pkg cd .. @@ -86,4 +117,14 @@ productbuild \ --identifier "studio.kx.distrho.cardinal" \ --package-path "${PWD}" \ --version 0 \ + "${PKG_SIGN_ARGS[@]}" \ Cardinal-macOS.pkg + +if [ -n "${MACOS_NOTARIZATION_USER}" ] && [ -n "${MACOS_NOTARIZATION_PASS}" ] && [ -n "${MACOS_NOTARIZATION_TEAM}" ]; then + xcrun notarytool submit Cardinal-macOS.pkg \ + --apple-id ${MACOS_NOTARIZATION_USER} \ + --password ${MACOS_NOTARIZATION_PASS} \ + --team-id ${MACOS_NOTARIZATION_TEAM} \ + --wait + xcrun stapler staple Cardinal-macOS.pkg +fi From bb8449282e9a3e801ad9e32d46dc32c9e0d945ad Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 31 Jan 2026 10:15:47 +0100 Subject: [PATCH 3/5] Correct documentation for host time bpm port Signed-off-by: falkTX --- docs/CARDINAL-MODULES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CARDINAL-MODULES.md b/docs/CARDINAL-MODULES.md index cfc231e..cd97036 100644 --- a/docs/CARDINAL-MODULES.md +++ b/docs/CARDINAL-MODULES.md @@ -194,7 +194,7 @@ The meaning of the outputs is: - Step: Trigger for step change - Bar Phase: 0-10v smooth ramp for the bar position (with bar division being a right-click option) - Beat Phase: 0-10v smooth ramp for the beat position -- BPM: Volts per Beat per Second, as supported by Impromptu Clocked/Clkd and ZZC Clock +- BPM: Beats per minute in [Rack standard](https://vcvrack.com/manual/VoltageStandards#Pitch-and-Frequencies), supported by Impromptu Clocked/Clkd and ZZC Clock ## Extra modules From 8eb21b4f76f9dca5609022a59486b0efefcc4343 Mon Sep 17 00:00:00 2001 From: luzpaz Date: Sat, 31 Jan 2026 16:27:19 +0000 Subject: [PATCH 4/5] Fix various doc and source comment typos Fixes a variety of user- and dev-facing typos. --- docs/DIFFERENCES.md | 4 ++-- docs/LICENSES.md | 2 +- docs/OVERVIEW.md | 2 +- plugins/Cardinal/src/AudioFile.cpp | 2 +- plugins/Cardinal/src/Carla.cpp | 4 ++-- plugins/Cardinal/src/Ildaeil.cpp | 4 ++-- plugins/Cardinal/src/TextEditor.cpp | 2 +- src/CardinalX11WindowIcon.cpp | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/DIFFERENCES.md b/docs/DIFFERENCES.md index adbc4b8..539f637 100644 --- a/docs/DIFFERENCES.md +++ b/docs/DIFFERENCES.md @@ -10,7 +10,7 @@ Also, the official plugin works pretty much like the free standalone where you l This is intentionally not allowed/enabled in Cardinal, as the target is to make a self-contained plugin binary. Online access is also not allowed. -Bellow follows a list of features comparing the official plugin to Cardinal. +Below follows a list of features comparing the official plugin to Cardinal. | Feature | Rack Pro | Cardinal | Additional notes | |--------------------------------|---------------------------|---------------------------------|------------------| @@ -36,7 +36,7 @@ Bellow follows a list of features comparing the official plugin to Cardinal. | FX plugin variant | 16 ins, 16 outs | 2 ins, 2 outs | | | Raw-CV plugin variant | Unsupported | 8 audio IO + 10 CV IO | Available in JACK, LV2 and VST3 formats, not possible in AU and VST2 | | Arbitrary parameter automation | Yes | No (*) | Static 24 automatable params, use Host Params/Map modules to map them to module parameters | -| Integrated plugin host | No, Host payed separately | Yes, using Carla or Ildaeil | | +| Integrated plugin host | No, Host paid separately | Yes, using Carla or Ildaeil | | | Host sync/timing | Using MIDI signals | Using dedicated module | | | Linux/X11 event handling | Runs on 2nd thread | Runs on main/GUI thread | | | v1 module compatibility | No | No, but with less restrictions | Module widgets can load resources at any point | diff --git a/docs/LICENSES.md b/docs/LICENSES.md index b659fa7..1a024a2 100644 --- a/docs/LICENSES.md +++ b/docs/LICENSES.md @@ -99,7 +99,7 @@ Below follows a list of all code licenses used in Cardinal and linked submodules ## ARTWORK / PANEL LICENSES -Bellow follows a list of all licenses related to **artwork and module panels**, sorted by file name. +Below follows a list of all licenses related to **artwork and module panels**, sorted by file name. Licenses were retrieved from the official project's LICENSE, README or related files. When * is used, it is meant as wildcard of all files, with potential exceptions mentioned afterwards. When a license is uncertain, ??? is used. diff --git a/docs/OVERVIEW.md b/docs/OVERVIEW.md index f1a702f..69d1c45 100644 --- a/docs/OVERVIEW.md +++ b/docs/OVERVIEW.md @@ -45,7 +45,7 @@ Implementing new plugin formats will be done here. This directory contains special header files needed to build the original Rack code as required by Cardinal. These headers are included before the official Rack ones, allowing us to override some implementation details. -Additionally a few compatiblity headers are present, helping compile the code for more targets than officially supported in Rack. +Additionally a few compatibility headers are present, helping compile the code for more targets than officially supported in Rack. ## lv2export diff --git a/plugins/Cardinal/src/AudioFile.cpp b/plugins/Cardinal/src/AudioFile.cpp index 53e8933..82ed656 100644 --- a/plugins/Cardinal/src/AudioFile.cpp +++ b/plugins/Cardinal/src/AudioFile.cpp @@ -201,7 +201,7 @@ struct CarlaInternalPluginModule : Module, Runner { { switch (opcode) { - // cannnot be supported + // cannot be supported case NATIVE_HOST_OPCODE_HOST_IDLE: break; // other stuff diff --git a/plugins/Cardinal/src/Carla.cpp b/plugins/Cardinal/src/Carla.cpp index bf51a29..072c4ca 100644 --- a/plugins/Cardinal/src/Carla.cpp +++ b/plugins/Cardinal/src/Carla.cpp @@ -27,7 +27,7 @@ #include "water/xml/XmlDocument.h" #ifndef CARDINAL_SYSDEPS -// private method that takes ownership, we can use it to avoid superfulous allocations +// private method that takes ownership, we can use it to avoid superfluous allocations extern "C" { json_t *jsonp_stringn_nocheck_own(const char* value, size_t len); } @@ -244,7 +244,7 @@ struct CarlaModule : Module { { switch (opcode) { - // cannnot be supported + // cannot be supported case NATIVE_HOST_OPCODE_HOST_IDLE: break; // other stuff diff --git a/plugins/Cardinal/src/Ildaeil.cpp b/plugins/Cardinal/src/Ildaeil.cpp index 98f568e..05b3750 100644 --- a/plugins/Cardinal/src/Ildaeil.cpp +++ b/plugins/Cardinal/src/Ildaeil.cpp @@ -52,7 +52,7 @@ #include #ifndef CARDINAL_SYSDEPS -// private method that takes ownership, we can use it to avoid superfulous allocations +// private method that takes ownership, we can use it to avoid superfluous allocations extern "C" { json_t *jsonp_stringn_nocheck_own(const char* value, size_t len); } @@ -575,7 +575,7 @@ struct IldaeilModule : Module { { switch (opcode) { - // cannnot be supported? + // cannot be supported? case NATIVE_HOST_OPCODE_HOST_IDLE: break; // other stuff diff --git a/plugins/Cardinal/src/TextEditor.cpp b/plugins/Cardinal/src/TextEditor.cpp index 5fa67ed..04228c5 100644 --- a/plugins/Cardinal/src/TextEditor.cpp +++ b/plugins/Cardinal/src/TextEditor.cpp @@ -85,7 +85,7 @@ struct TextEditorModule : Module { { file.clear(); - // Rack Core Notes compatiblity + // Rack Core Notes compatibility if (json_t* const textJ = json_object_get(rootJ, "text")) { text = json_string_value(textJ); diff --git a/src/CardinalX11WindowIcon.cpp b/src/CardinalX11WindowIcon.cpp index d7d3fe3..7ddba29 100644 --- a/src/CardinalX11WindowIcon.cpp +++ b/src/CardinalX11WindowIcon.cpp @@ -1214,7 +1214,7 @@ static constexpr const unsigned long sCardinalX11Icon[] = { static constexpr const uint32_t sCardinalX11IconSize = 2 + 16 * 16 + 2 + 48 * 48 + 2 + 128 * 128; -// declaration first, ensuring extern/visiblity status is respected +// declaration first, ensuring extern/visibility status is respected extern const unsigned long* gCardinalX11Icon; // definition afterwards From 462a5196638c5563dba15e891f3698c99ed16b05 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 1 Feb 2026 11:34:16 +0100 Subject: [PATCH 5/5] Remove global override of "yellow" Signed-off-by: falkTX --- src/Makefile | 2 ++ .../componentlibrary.hpp => src/custom/Browser.cpp | 13 +++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) rename include/componentlibrary.hpp => src/custom/Browser.cpp (80%) diff --git a/src/Makefile b/src/Makefile index 8799bff..440fcf4 100644 --- a/src/Makefile +++ b/src/Makefile @@ -33,6 +33,7 @@ BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal RACK_FILES += AsyncDialog.cpp RACK_FILES += CardinalModuleWidget.cpp +RACK_FILES += custom/Browser.cpp RACK_FILES += custom/asset.cpp RACK_FILES += custom/dep.cpp RACK_FILES += custom/library.cpp @@ -68,6 +69,7 @@ IGNORED_FILES += Rack/src/plugin.cpp IGNORED_FILES += Rack/src/rtaudio.cpp IGNORED_FILES += Rack/src/rtmidi.cpp IGNORED_FILES += Rack/src/app/AudioDisplay.cpp +IGNORED_FILES += Rack/src/app/Browser.cpp IGNORED_FILES += Rack/src/app/MenuBar.cpp IGNORED_FILES += Rack/src/app/MidiDisplay.cpp IGNORED_FILES += Rack/src/app/ModuleWidget.cpp diff --git a/include/componentlibrary.hpp b/src/custom/Browser.cpp similarity index 80% rename from include/componentlibrary.hpp rename to src/custom/Browser.cpp index 5b0705f..ef9a335 100644 --- a/include/componentlibrary.hpp +++ b/src/custom/Browser.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Cardinal Plugin - * Copyright (C) 2021-2022 Filipe Coelho + * Copyright (C) 2021-2026 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -15,17 +15,14 @@ * For a full copy of the GNU General Public License see the LICENSE file. */ -#pragma once - +// little hack to force browser yellow color to cardinal red #define SCHEME_YELLOW SCHEME_YELLOW_OldVCV -#include_next "componentlibrary.hpp" +#include "componentlibrary.hpp" #undef SCHEME_YELLOW - namespace rack { namespace componentlibrary { - -// Yellow? What's that? static const NVGcolor SCHEME_YELLOW = nvgRGBf(0.76f, 0.11f, 0.22f); - } } + +#include "../src/app/Browser.cpp"