DSP563XX emulation plugins

Thank you for bringing this to Zynthian.
Tried the procedure, make huge sound.
When I click Webconf->Software->Engines->“Search for Presets”->OK, the following error shows up on a white screen:

Configuring engines failed: 'Node' object has no attribute 'split'

Hi @Aethermind ,
I don’t mind at all. Perhaps this file will be easier to work with. It is also AI generated and may have errors.
OsTirus.py (6.6 KB)

Hi @ronsum,

Thank you :slight_smile:. The file in python is definitely useful, since I am already working with a py dictionary in the Idle IDE :+1:

@jofemodo
When loading a Osirus preset with Zynthian, the naming of Roms are changed from loading a preset from VNC.
For example: Haunted JS appears in Rom C on the Zynthian, while it appears in Bank F in the VNC gui.
Loading or changing a preset on either screen reflects the change onto the other, just Bank/Rom names are mismatched.

Hi @dsp56300 !

It seems there is some “string sanitize” issues in preset generation.
For instance, i found this:

rdfs:label "S@y “TI” " ;

in the preset “OsTIrus_TI2_Rom_S.lv2/S_y__TI___.ttl”

or this:

dfs:label " !“U”! CC" ;

in “OsTIrus_TI2_Rom_P.lv2/___U____CC.ttl”

etc.

This cause the TTL parse to fail.

Thanks!

I just fixed this bug. Please update and test.

Anyway, you should not need to click “search for presets”. This is done automatically when uploading a ROM file.

Regards,

1 Like
  • Loading presets on zynthian-UI should be reflected in the Osirus native GUI (VNC).
  • In the other hand, loading presets from Osirus native GUI (VNC) wont be reflected in zynthian UI.

This is the expected behavior.

It seems you have some “chaotic” behavior with your presets. I would recommend to delete all the Osirus/OsTIrus LV2 presets from

/zynthian/zynthian-my-data/presets/lv2

and uploading your ROM file again.

Then restart the zynthian UI (or reboot your zynthian) and try to create a chain from scratch.

Regards,

2 Likes

Done. Error persists.

Done the ROM upload, mismatch persists.
Changing the preset in VNC changes the sound.
all normal.
The naming of the Roms and Banks is mismatched between VNC UI and Zynthian UI

edit: running now an image restore of a known-good-point…10 minutes penalty+ edititing zynthian_wsleds_base.py to remove the glaring blue flash at boot and multitiouch.py to remove the forced rotation of touch… chattr +i

edit2: Ok. That did the trick. Restored to 20241023, Vangelis, did all updates and the ROMs and my modifications, no errors, everything works.

Big Thank You for adding this wonderful synths to Zynthian.

Really @jofemodo :star2:

I just added the config file for OsTIrus. It’s fully MIDI mapped now. Update and emjoy!

It would be nice to have the config for Osirus too, don’t you think?

BTW, the final config file format looks like this:

ctrls = [
    # Column 1 - Oscillator 1
    ['Osc1 Waveform', 17, 0],
    ['Osc1 Pulsewidth', 18, 0],
    ['Osc1 Wave Select', 19, 0],
    ['Osc1 Semitone', 20, 0],
    ['Osc1 Key Tracking', 21, 0],

    # Column 1 - Oscillator 2
    ['Osc2 Waveform', 22, 0],
    ['Osc2 Pulsewidth', 23, 0],
    ['Osc2 Wave Select', 24, 0],
    ['Osc2 Semitone', 25, 0],
    ['Osc2 Detune', 26, 0],
    ['Osc2 FM Amount', 27, 0],
    ['Osc2 Osc Sync', 28, 0],
    ['Osc2 Filter Env', 29, 0],
    ['Osc2 Key Tracking', 31, 0],

    # Column 1 - Oscillator Global
    ['Oscillator Balance', 33, 0],
    ['Subosc Volume', 34, 0],
    ['Subosc Shape', 35, 0],
    ['Main Volume', 36, 0],
    ['Noise Volume', 37, 0],
    ['Ring Mod Volume', 38, 0],
    ['Noise Color', 39, 0],

    # Column 2 - Filter 1
    ['Filter1 Cutoff', 40, 0],
    ['Filter1 Resonance', 42, 0],
    ['Filter1 Env Amount', 44, 0],
    ['Filter1 Key Tracking', 46, 0],
    ['Filter1 Mode', 51, 0],

    # Column 2 - Filter 2
    ['Filter2 Cutoff', 41, 0],
    ['Filter2 Resonance', 43, 0],
    ['Filter2 Env Amount', 45, 0],
    ['Filter2 Key Tracking', 47, 0],
    ['Filter2 Mode', 52, 0],

    # Column 2 - Filter Global
    ['Filter Balance', 48, 0],
    ['Filter Routing', 53, 0],
    ['Saturation Curve', 49, 0],
    ['FM > Filter Env', 30, 0],

    # Column 2 - Filter Envelope
    ['Filter Env Attack', 54, 0],
    ['Filter Env Decay', 55, 0],
    ['Filter Env Sustain', 56, 0],
    ['Filter Env Sustain Time', 57, 0],
    ['Filter Env Release', 58, 0],

    # Column 3 - Amp Envelope
    ['Amp Env Attack', 59, 0],
    ['Amp Env Decay', 60, 0],
    ['Amp Env Sustain', 61, 0],
    ['Amp Env Sustain Time', 62, 0],
    ['Amp Env Release', 63, 0],

    # Column 3 - Voice / Pitch
    ['Portamento Time', 5, 0],
    ['Transpose', 93, 0],
    ['Keyboard Mode', 94, 0],
    ['Unison Mode', 97, 0],
    ['Unison Detune', 98, 0],
    ['Unison Spread', 99, 0],
    ['Unison LFO Phase', 109, 0],

    # Column 3 - Global Mixer
    ['Part Volume', 7, 0],
    ['Part Balance', 8, 0],
    ['Part Pan', 10, 0],
    ['Patch Volume', 91, 0],
    ['Input Mode', 101, 0],
    ['Input Select', 102, 0],

    # Column 4 - LFO Settings
    ['LFO1 Rate', 67, 0],
    ['LFO1 Shape', 68, 0],
    ['LFO1 Envelope Mode', 69, 0],
    ['LFO1 LFO Mode', 70, 0],
    ['LFO1 Symmetry', 71, 0],
    ['LFO1 Key Tracking', 72, 0],
    ['LFO1 Key Trigger', 73, 0],

    ['LFO2 Rate', 79, 0],
    ['LFO2 Shape', 80, 0],
    ['LFO2 Envelope Mode', 81, 0],
    ['LFO2 LFO Mode', 82, 0],
    ['LFO2 Symmetry', 83, 0],
    ['LFO2 Key Tracking', 84, 0],
    ['LFO2 Key Trigger', 85, 0],

    # Column 4 - LFO Routing
    ['LFO1 > Osc1', 74, 0],
    ['LFO1 > Osc2', 75, 0],
    ['LFO1 > Pulsewidth', 76, 0],
    ['LFO1 > Resonance', 77, 0],
    ['LFO1 > Filter Gain', 78, 0],
    ['LFO2 > Osc Shape', 86, 0],
    ['LFO2 > FM Amount', 87, 0],
    ['LFO2 > Filter1 Cutoff', 88, 0],
    ['LFO2 > Filter2 Cutoff', 89, 0],
    ['LFO2 > Pan', 90, 0],

    # Column 5 - Chorus
    ['Chorus Mix', 105, 0],
    ['Chorus Rate', 106, 0],
    ['Chorus Depth', 107, 0],
    ['Chorus Delay', 108, 0],
    ['Chorus Feedback', 109, 0],
    ['Chorus LFO Shape', 110, 0],

    # Column 5 - Delay
    ['Delay Time', 114, 0],
    ['Delay Feedback', 115, 0],
    ['Delay Rate', 116, 0],
    ['Delay Depth', 117, 0],
    ['Delay LFO Shape', 118, 0],
    ['Delay Color', 119, 0],

    # Column 5 - Reverb
    ['Reverb Decay Time', 116, 0],
    ['Reverb Room Size', 117, 0],
    ['Reverb Damping', 118, 0],

    # Column 5 - Effects Global
    ['Delay/Reverb Mode', 112, 0],
    ['Effect Send', 113, 0]
]

ctrl_screens = [
    ['Global Mixer (1)', ['Part Volume', 'Part Balance', 'Part Pan', 'Patch Volume']],
    ['Global Mixer (2)', ['Input Mode', 'Input Select']],

    ['Osc1 Settings', ['Osc1 Waveform', 'Osc1 Pulsewidth', 'Osc1 Wave Select', 'Osc1 Semitone']],
    ['Osc1 Key Tracking', ['Osc1 Key Tracking']],

    ['Osc2 Settings (1)', ['Osc2 Waveform', 'Osc2 Pulsewidth', 'Osc2 Wave Select', 'Osc2 Semitone']],
    ['Osc2 Settings (2)', ['Osc2 Detune', 'Osc2 FM Amount', 'Osc2 Osc Sync', 'Osc2 Filter Env']],
    ['Osc2 Key Tracking', ['Osc2 Key Tracking']],

    ['Osc Global (1)', ['Oscillator Balance', 'Subosc Volume', 'Subosc Shape', 'Main Volume']],
    ['Osc Global (2)', ['Noise Volume', 'Ring Mod Volume', 'Noise Color']],

    ['Filter1 Settings', ['Filter1 Cutoff', 'Filter1 Resonance', 'Filter1 Env Amount', 'Filter1 Mode']],
    ['Filter1 Key Tracking', ['Filter1 Key Tracking']],

    ['Filter2 Settins', ['Filter2 Cutoff', 'Filter2 Resonance', 'Filter2 Env Amount', 'Filter2 Mode']],
    ['Filter2 Key Tracking', ['Filter2 Key Tracking']],

    ['Filter Global', ['Filter Balance', 'Filter Routing', 'Saturation Curve', 'FM > Filter Env']],

    ['Filter Env (1)', ['Filter Env Attack', 'Filter Env Decay', 'Filter Env Sustain', 'Filter Env Sustain Time']],
    ['Filter Env (2)', ['Filter Env Release']],

    ['Amp Env (1)', ['Amp Env Attack', 'Amp Env Decay', 'Amp Env Sustain', 'Amp Env Sustain Time']],
    ['Amp Env (2)', ['Amp Env Release']],

    ['Voice Pitch (1)', ['Portamento Time', 'Transpose', 'Keyboard Mode', 'Unison Mode']],
    ['Voice Pitch (2)', ['Unison Detune', 'Unison Spread', 'Unison LFO Phase']],

    ['LFO1 (1)', ['LFO1 Rate', 'LFO1 Shape', 'LFO1 Envelope Mode', 'LFO1 LFO Mode']],
    ['LFO1 (2)', ['LFO1 Symmetry', 'LFO1 Key Tracking', 'LFO1 Key Trigger']],

    ['LFO2 (1)', ['LFO2 Rate', 'LFO2 Shape', 'LFO2 Envelope Mode', 'LFO2 LFO Mode']],
    ['LFO2 (2)', ['LFO2 Symmetry', 'LFO2 Key Tracking', 'LFO2 Key Trigger']],

    ['LFO Routing (1)', ['LFO1 > Osc1', 'LFO1 > Osc2', 'LFO1 > Pulsewidth', 'LFO1 > Resonance']],
    ['LFO Routing (2)', ['LFO1 > Filter Gain', 'LFO2 > Osc Shape', 'LFO2 > FM Amount', 'LFO2 > Filter1 Cutoff']],
    ['LFO Routing (3)', ['LFO2 > Filter2 Cutoff', 'LFO2 > Pan']],

    ['FX Chorus (1)', ['Chorus Mix', 'Chorus Rate', 'Chorus Depth', 'Chorus Delay']],
    ['FX Chorus (2)', ['Chorus Feedback', 'Chorus LFO Shape']],
    ['FX Delay (1)', ['Delay Time', 'Delay Feedback', 'Delay Rate', 'Delay Depth']],
    ['FX Delay (2)', ['Delay LFO Shape', 'Delay Color']],
    ['FX Reverb', ['Reverb Decay Time', 'Reverb Room Size', 'Reverb Damping']],
    ['FX Global', ['Delay/Reverb Mode', 'Effect Send']]
]

Regards,

2 Likes

Oh dang :slight_smile: This will sound totally crazy, but yeah, in my case i had he audio-hat (and my effiort) actually hitting my rPI4 unit (my rPI5 was doing docker services and i was (un)happily unaware of it). I’ll try it out on a proper rPI 5 unit. Sorry about this (but my high praise still goes out to you for making it possible) :slight_smile:

yes, please :pray:

A notice on overclocking the Pi 5 8GB:

Without overclocking, I can safely layer two instances of OsTIrus playing nice presets in a mix together, no VNC active, not getting XRuns, nor crackles. This alone uses almost 4GB of memory :face_with_open_eyes_and_hand_over_mouth: but makes a huge fat sound and temperature stays below 42°C.

With medium overclocking, I can not play the same snapshot without often getting XRun and intermittent crackling noise. Temperture stays below 45°C

With high overclocking, OsTIrus does not play, only red XRun, then lock-up. Temperature stays well below 50°C.

The EEPROM has bootloader_version 2024/11/05 12:38:12 with NUMA and optimal timings, so these have to be degraded by overclocking. Performance gain of 18% of this config can anyway not be safely achieved with overclocking.

So, overclocking makes no sense with my Pi 5. Did you get different results?

You could do it, @fussl . It 's no something difficult, just boring. :smile:

My Ui Log .
think this is of interest:

Nov 14 07:44:24 zynthian startx[2307]: File “/zynthian/zynthian-ui/zyngui/zynthian_gui_control.py”, line 92, in build_view
Nov 14 07:44:24 zynthian startx[2307]: super().build_view()
Nov 14 07:44:24 zynthian startx[2307]: File “/zynthian/zynthian-ui/zyngui/zynthian_gui_selector.py”, line 176, in build_view
Nov 14 07:44:24 zynthian startx[2307]: self.fill_list()
Nov 14 07:44:24 zynthian startx[2307]: File “/zynthian/zynthian-ui/zyngui/zynthian_gui_control.py”, line 172, in fill_list
Nov 14 07:44:24 zynthian startx[2307]: (screen_list[cscr][0].group_symbol, i, cscr, processor, j))
Nov 14 07:44:24 zynthian startx[2307]: ~~~~~~~~~~~~~~~~~^^^
Nov 14 07:44:24 zynthian startx[2307]: IndexError: list index out of range
Nov 14 07:44:27 zynthian startx[2307]: DEBUG:zynthian_gui.zynswitch_short: Short Switch 27
Nov 14 07:44:27 zynthian startx[2307]: DEBUG:zynthian_gui.callable_ui_action: CUIA ‘V5_ZYNPOT_SWITCH’ => [3, ‘S’]
Nov 14 07:44:27 zynthian startx[2307]: DEBUG:zynthian_gui.zynswitch_short: Short Switch 3
Nov 14 07:44:27 zynthian startx[2307]: INFO:zynthian_processor.set_preset: Preset selected: Alead BC (4)
Nov 14 07:44:27 zynthian startx[2307]: WARNING:zynthian_autoconnect.cb_jack_xrun: Jack Audio XRUN! =>count: 39, delay: 119.0us
ui log (16.6 KB)

Update: with the last update from yesterday it works now.

Two things are still wrong with my Zynthian Osirus/Ostirus configuration.

-Osirus did not create any presets during firmware upload

-Ostirus crashes (to see in the VNC) when loading presets that were saved in the Zynthian-ui. (e.g.Singlemode - Multimode) .
This is not a problem in the Osirus plug-in.

To control osirus I cloned the ctrlinfo_OstIrus.py and renamed it.
Most of the parameters work with the same Midi CC.
You just have to adapt it to the Osirus.

Hey, amazing @jofemodo!

I was well in the process of doing it myself, with the @ransom’s AI generated model, but you fast “outcoded” me! :wink:

At this point, I would like to import your CC controllers py dictionary, posted here, in my two Pi5 Zynthians equipped with OsTIrus.
Since they are both on Oram stable 2409, and would prefer to leave them this way for the time being, I wonder what config file I should modify or integrate with the controls dictionary.

You mentioned:

/zynthian-ui/zyngine/zynthian_engine_jalv.py

If this is the file to edit, I have not been able to find it in the Zynthian OS directories tree, but maybe it is just me not looking in the right place.

Best regards :rainbow:

You should change to vangelis to have the changes you need to load the controller dicts, sorry.

Regards,

Ah, right… I will test it then on the V4, as soon as I have switched it to Vangelis (although purely on a GUI functions level, because I know that the Virus emulators will cause xruns on Pi4).

Regards

Osirus and Ostirus are disabled for pi4. They are disabled because the binary is compiled with pi5 optimizatios and It doesn’t run.

Regards

2 Likes