Low hanging fruit - small things to improve Zynthian

Not half as much as @riban & @jofe . . .

You do realise there is no shortage of soup round here….?

In fact we have to get rid of it . . .

3 Likes

More fruit … is this a bug or a feature? If bug I can try to fix it.

This now updates dynamically.

I don’t think it is too bad but we should ensure best accessiblity.

I think you requested that but is it significantly beneficial? We don’t want to flood the menu and it is in control view that you can access from the options menu.

There are several ways to access control view. It was added here to offer a workflow based around this view and faster access when editing chains, but other options to edit the chain feel more relevant to this view, like add, remove, move processors, etc.

1 Like

I’ll add a bug report as well, but I can already say that toggling the bypass control throws this message:


Mar 20 13:24:51 hannes-zynthian startx[1981]: DEBUG:zynthian_engine_jalv.proc_poll_parse_line: LOG MVerb-01 > error: unknown control `bypass'

Have you performed and manual operations, e.g. updates or installs? We use a patched version of jalv that adds the bypass control if it is missing.

What would be a manual update? I frequently update from ssh cli with the respective py command, other than that: no, especially not for jalv.

I got jalv v 1.6.9 running, don’t know if that helps.

Seems there is not bypass control:

(venv) root@hannes-zynthian:~# jalv -t urn:juce:TalReverb3
Plugin:       urn:juce:TalReverb3
JACK Name:    Tal-Reverb-III
Sample rate:  48000 Hz
Block length: 128 frames
MIDI buffers: 32768 bytes
Comm buffers: 524288 bytes
Update rate:  30.0 Hz
Scale factor: 1.0

#CTR> 0#dry=0.500000
#CTR> 5#high_shelf_gain=0.248000
#CTR> 4#low_shelf_gain=0.756000
error: Preset control `lv2_freewheel': doesn't exist!
#CTR> 8#power=1.000000
#CTR> 3#pre_delay=0.000000
#CTR> 2#room_size=0.340000
#CTR> 6#stereo=1.000000
#CTR> 7#stereo_input=1.000000
error: Preset control `unused': doesn't exist!
#CTR> 1#wet=0.266000
CLI thread created successfully

This might work.

Does bypass show if you type bypass into the running jalv console?

controls
#CTR> 0#dry=0.500000
#CTR> 1#wet=0.266000
#CTR> 2#room_size=0.340000
#CTR> 3#pre_delay=0.000000
#CTR> 4#low_shelf_gain=0.756000
#CTR> 5#high_shelf_gain=0.248000
#CTR> 6#stereo=1.000000
#CTR> 7#stereo_input=1.000000
#CTR> 8#power=1.000000
bypass=0
(venv) root@hannes-zynthian:~# jalv -t urn:juce:TalReverb3
Plugin:       urn:juce:TalReverb3
JACK Name:    Tal-Reverb-III
Sample rate:  48000 Hz
Block length: 128 frames
MIDI buffers: 32768 bytes
Comm buffers: 524288 bytes
Update rate:  30.0 Hz
Scale factor: 1.0

#CTR> 0#dry=0.500000
#CTR> 5#high_shelf_gain=0.248000
#CTR> 4#low_shelf_gain=0.756000
error: Preset control `lv2_freewheel': doesn't exist!
#CTR> 8#power=1.000000
#CTR> 3#pre_delay=0.000000
#CTR> 2#room_size=0.340000
#CTR> 6#stereo=1.000000
#CTR> 7#stereo_input=1.000000
error: Preset control `unused': doesn't exist!
#CTR> 1#wet=0.266000
CLI thread created successfully
>
bypass
error: invalid command (try `help')
bypass=0
error: unknown control `bypass'

Run this:

$ZYNTHIAN_RECIPE_DIR/install_lv2_jalv_alone.sh

Regards

Thanks, I just performed this (before I read your message, so hopefully this wasn’t damaging) and it works now:


(venv) root@hannes-zynthian:/zynthian/zynthian-sys/scripts/recipes# sh install_lv2_jalv.sh
Cloning into 'suil'...
remote: Enumerating objects: 2752, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 2752 (delta 10), reused 18 (delta 4), pack-reused 2717 (from 1)
Receiving objects: 100% (2752/2752), 6.49 MiB | 2.62 MiB/s, done.
Resolving deltas: 100% (1699/1699), done.
The Meson build system
Version: 1.5.1
Source dir: /zynthian/zynthian-sw/suil
Build dir: /zynthian/zynthian-sw/suil/build
Build type: native build
Project name: suil
Project version: 0.10.26
C compiler for the host machine: cc (gcc 12.2.0 "cc (Debian 12.2.0-14+deb12u1) 12.2.0")
C linker for the host machine: cc ld.bfd 2.40
C++ compiler for the host machine: c++ (gcc 12.2.0 "c++ (Debian 12.2.0-14+deb12u1) 12.2.0")
C++ linker for the host machine: c++ ld.bfd 2.40
Host machine cpu family: aarch64
Host machine cpu: aarch64
Compiler for C supports link arguments -Wl,-z,nodelete: YES
Compiler for C++ supports link arguments -Wl,-z,nodelete: YES
Library dl found: YES
Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1
Run-time dependency lv2 found: YES 1.18.11
Run-time dependency x11 found: YES 1.8.4
Run-time dependency gtk+-2.0 found: YES 2.24.33
Run-time dependency gtk+-x11-2.0 found: YES 2.24.33
Run-time dependency gtk+-3.0 found: YES 3.24.38
Run-time dependency gtk+-x11-3.0 found: YES 3.24.38
Run-time dependency qt5widgets found: YES 5.15.8
Found CMake: /usr/bin/cmake (3.25.1)
Run-time dependency qt5x11extras found: NO (tried pkgconfig and cmake)
Run-time dependency qt6widgets found: NO (tried pkgconfig and cmake)
Program doxygen found: YES (/usr/bin/doxygen)
Program sphinx-build found: NO
Build targets in project: 5

suil 0.10.26

  Components
    Documentation : NO

  Directories
    Install prefix: /usr/local
    Headers       : /usr/local/include
    Libraries     : /usr/local/lib/aarch64-linux-gnu

Found ninja-1.11.1.git.kitware.jobserver-1 at /zynthian/venv/bin/ninja
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /zynthian/venv/bin/ninja
[14/14] Linking target libsuil_x11_in_gtk3.so
ninja: Entering directory `/zynthian/zynthian-sw/suil/build'
ninja: no work to do.
Installing libsuil-0.so.0.10.26 to /usr/local/lib/aarch64-linux-gnu
Installing libsuil_x11.so to /usr/local/lib/aarch64-linux-gnu/suil-0
Installing libsuil_x11_in_gtk2.so to /usr/local/lib/aarch64-linux-gnu/suil-0
Installing libsuil_x11_in_gtk3.so to /usr/local/lib/aarch64-linux-gnu/suil-0
Installing /zynthian/zynthian-sw/suil/include/suil/suil.h to /usr/local/include/suil-0/suil
Installing /zynthian/zynthian-sw/suil/build/meson-private/suil-0.pc to /usr/local/lib/aarch64-linux-gnu/pkgconfig
Installing symlink pointing to libsuil-0.so.0.10.26 to /usr/local/lib/aarch64-linux-gnu/libsuil-0.so.0
Installing symlink pointing to libsuil-0.so.0 to /usr/local/lib/aarch64-linux-gnu/libsuil-0.so
Cloning into 'jalv'...
remote: Enumerating objects: 4203, done.
remote: Counting objects: 100% (218/218), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 4203 (delta 187), reused 176 (delta 176), pack-reused 3985 (from 2)
Receiving objects: 100% (4203/4203), 5.99 MiB | 2.66 MiB/s, done.
Resolving deltas: 100% (2961/2961), done.
The Meson build system
Version: 1.5.1
Source dir: /zynthian/zynthian-sw/jalv
Build dir: /zynthian/zynthian-sw/jalv/build
Build type: native build
Project name: jalv
Project version: 1.6.9
C compiler for the host machine: cc (gcc 12.2.0 "cc (Debian 12.2.0-14+deb12u1) 12.2.0")
C linker for the host machine: cc ld.bfd 2.40
C++ compiler for the host machine: c++ (gcc 12.2.0 "c++ (Debian 12.2.0-14+deb12u1) 12.2.0")
C++ linker for the host machine: c++ ld.bfd 2.40
Host machine cpu family: aarch64
Host machine cpu: aarch64
Library m found: YES
Run-time dependency threads found: YES
Found pkg-config: YES (/usr/bin/pkg-config) 1.8.1
Run-time dependency zix-0 found: YES 0.5.0
Run-time dependency serd-0 found: YES 0.32.3
Run-time dependency sord-0 found: YES 0.16.17
Run-time dependency lv2 found: YES 1.18.11
Run-time dependency sratom-0 found: YES 0.6.17
Run-time dependency lilv-0 found: YES 0.24.25
Run-time dependency suil-0 found: YES 0.10.26
Found CMake: /usr/bin/cmake (3.25.1)
Run-time dependency portaudio-2.0 found: NO (tried pkgconfig and cmake)
Run-time dependency jack found: YES 1.9.21
Checking if "fileno" compiles: YES
Checking if "isatty" compiles: YES
Checking if "mlock" compiles: YES
Checking if "posix_memalign" compiles: YES
Checking if "sigaction" compiles: YES
Checking if "jack_metadata" compiles: YES
Checking if "jack_port_type_get_buffer_size" compiles: YES
Run-time dependency gdk-3.0 found: YES 3.24.38
Run-time dependency gtk+-3.0 found: YES 3.24.38
Configuring jalv.desktop using configuration
Run-time dependency qt5widgets found: YES 5.15.8
Program moc-qt5 found: NO
Program moc found: YES (/usr/bin/moc)
Build targets in project: 6

jalv 1.6.9

    Install prefix: /usr/local
    Executables   : /usr/local/bin
    Man pages     : /usr/local/share/man
    Backend       : jack

Found ninja-1.11.1.git.kitware.jobserver-1 at /zynthian/venv/bin/ninja
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /zynthian/venv/bin/ninja -j 3
[44/44] Linking target jalv.qt5
ninja: Entering directory `/zynthian/zynthian-sw/jalv/build'
ninja: no work to do.
Installing jalv.so to /usr/local/lib/aarch64-linux-gnu/jack
Installing jalv to /usr/local/bin
Installing jalv.gtk3 to /usr/local/bin
Installing jalv.qt5 to /usr/local/bin
Installing /zynthian/zynthian-sw/jalv/doc/jalv.1 to /usr/local/share/man/man1
Installing /zynthian/zynthian-sw/jalv/doc/jalv.gtk3.1 to /usr/local/share/man/man1
Installing /zynthian/zynthian-sw/jalv/doc/jalv.qt5.1 to /usr/local/share/man/man1
Installing /zynthian/zynthian-sw/jalv/build/jalv.desktop to /usr/local/share/applications
(venv) root@hannes-zynthian:/zynthian/zynthian-sys/scripts/recipes# jalv -t urn:juce:TalReverb3
Plugin:       urn:juce:TalReverb3
JACK Name:    Tal-Reverb-III
Sample rate:  48000 Hz
Block length: 128 frames
MIDI buffers: 32768 bytes
Comm buffers: 524288 bytes
Update rate:  30.0 Hz
Scale factor: 1.0

#CTR> 0#dry=0.500000
#CTR> 5#high_shelf_gain=0.248000
#CTR> 4#low_shelf_gain=0.756000
error: Preset control `lv2_freewheel': doesn't exist!
#CTR> 8#power=1.000000
#CTR> 3#pre_delay=0.000000
#CTR> 2#room_size=0.340000
#CTR> 6#stereo=1.000000
#CTR> 7#stereo_input=1.000000
error: Preset control `unused': doesn't exist!
#CTR> 1#wet=0.266000
CLI thread created successfully
>
bypass=0

Do you have any idea why it was not done in any other past update? I.e.: is there a way to test if necessary scripts were not performed in the past?

Yes, i’ve an idea :wink:
The update system must be improved, but we have limited resources.
Zynthian is a complex beast.

Regards,

1 Like

Hello

I see many pull requests get picked up quickly.

The webconf PRs had some low hanging fruit at

https://github.com/zynthian/zynthian-webconf/pulls

Regards

I have plucked the low-hanging PRs. I left the ones I couldn’t reach!

2 Likes

Splendid, thanks!

I think we could be more consistent in menus where you could add something. E.g. with the zs3 and snapshot menu, at the top there is the option to ‘save as new zs3’ and the like. But in the preset menu you have to bold-press to get there. This is inconsistent (and one of the cases where bold push is less obvious, and feels dangerous: if not held long enough the preset in focus will be loaded instead).

I think we should have the option for saving as new preset in your face as a menu item.

Can’t think right now of other similar places, but there might be.

2 Likes

There is the little detail (devil is always in the details) that preset lists are long and you could have selected preset 76, for instance. Do you want to scroll up 76 positions to reach the “save preset” option or do you prefer to bold push current preset? Or perhaps you have a better proposal…

Regards

1 Like

Good point. Still, I think I’d prefer that over the implicit and - in this setting - scary bold press.

How about encoder 3 to reach the next submenu, analogous to what it does with the new chain control side pane you get when short-pressing encoder 4 in control view (how is this called?).

Just thought of another little devil: the ’save as’ option makes no sense when adding an instrument. The ‘scan for new presets’ would however, but I do not know whether this would pose a problem within that flow.

1 Like

This is currently used to toggle favorites view. I mean, if you have preset favorites for the engine, you can access/exit the favorites list by short-pushing knob#3. I could change it, but i’m pretty sure some users wouldn’t agree on removing this function from short+knob#3. We have little options for the V4 interface & workflows :wink:

Regards,

Could you elaborate a little bit? I don’t fully understand what you mean … a list of steps may be useful in these cases :wink:

Regads,