JV880/JUCE on raspberry

Hm. @ricard This is how it sounds at the north sea shore :grin::

The last B sharp has some kind of differential tones. I’m not certain whether it is aliasing since the source tone itself is not a clean sinus. There might be some othrr distortion reasons.

Recording chain is HiFiberry analog symmetrical out into

Beringer X32 into Audacity via USB.

Thorsten

Agree. Those are some nasty artefacts on the top range (or in ricards case with 48khz, quite early on).

I connected my own Zynthian and have the same issues in the mid/top end (i’m running 48khz as well)

I know for a fact that the main author of the bare metal miniJV880 uses 32khz as the setting in the ini. I haven’t tried to bump this up, but that surely would be an interesting A/B experiment with Zynthian in the opposite end.

Hi @harrylnorris :slight_smile:

My original presets inconsistencies, while trying to manually install Virtual JV on the previous 2506 iteration of Oram, were already gone, after I copied in the plugin configuration folder all the available and legally obtained expansion ROMs.

Now that with the latest Oram 2511 the JV installation process is completely automated, any residual issues with presets misaligned with the plugin’s GUI, or unavailable to load on the Zynthian, should be a thing of the past for everyone.

Therefore, you don’t need anymore to run the presets regeneration routine for Virtual JV, which I was never able to complete successfully. Anyway, make sure to have all the required fw components stored in root/.config/JV880, as specified in previous posts.

Best regards :slight_smile:

1 Like

… and now, it sounds good here too … I noted in your previous post that you mentioned that you had a buffer size of 64 samples, whereas I for some reason have 128. So I thought … could this really be the reason for the difference. So I changed the buffer size to 64, and sample rate to 48000, and lo and behold, nice clean sound all the way up (except for that high B; I should note though that in my example I went up yet another octave, where the top notes really sound strange).

I’m not sure why this is, certainly the buffer size should not have this effect on the sound. My guess, having looked through the source code for VirtualJV, is this: There is a mechanism prior to the sample rate converter which handles the fact that with a fractional sample rate ratio the number of samples needed per process call is not a whole number, so sometimes a few more and sometimes a few less samples are generated; on average, the number is correct. My guess is that for some reason, with certain ratios and buffer sizes, the algorithm fails to manage the data correctly, leading to artifacts.

I have all 26 .bin (although some are .bin and some are .BIN if that matters) in root/.config/JV880 (only). Should the they be somewhere else? I haven’t placed any other related files anywhere. Have done the ā€œsearch for enginesā€ and ā€œsearch for presetsā€ in webconf. And as I mentioned everything looks good in VNC-Engines but presets are missing in VNC-UI (forVirtualJV only). Anything that I’m missing here?

Thanks,

Harry

Hello, try using this command line:

Hello, for your information, I tested the JV880 emulator. I was experiencing a lot of xruns (audio dropouts). I noticed that the plugin uses a lot of CPU resources even when it’s not being actively used (more than 50% on a Raspberry Pi 4). Out of curiosity, I compiled a version on my computer, and it uses practically no resources at all (AMD 6600H GNU/Linux Manjaro). Then, I read the forum discussions and tried 32kHz as the sample rate for the audio interface, and that eliminated the xruns, but it still consumed the same amount of resources. Other sample rate values ​​gave disastrous results (maybe I configured the other audio interface parameters incorrectly?).

That did the trick.

Vielen Dank,

Harry

1 Like

Hi @harrylnorris,

Let me think about it: are you maybe inspecting a headless’ Zynthian user interface from an external computer (VNC-UI), while browsing at the same time its loaded processors on another VNC instance (VNC-Engines)?

I am not completely sure that this is technically viable, in the first place…

If I haven’t misunderstood your setup, which is perfectly possible, I wonder if the VNC server is capable of showing, in synced fashion, the external graphical output of a given processor (the Zynthian GUI) and simultaneously its ā€œinternalā€ native counterpart (the underlying VNC-Engine visualisation).

Cheers :slight_smile:

Using VNC UI and VNC engines simultaneously is perfectly possible.

1 Like

I’ve noted that there are a few ā€˜performance parameters’ which are accessible via CC, specifically Volume (CC 7), Pan (CC 10), Expression (CC11), Reverb on/off (CC91) and Chorus on/off (CC93). Given that a lot of sounds are drowned in reverb, it’s quite nice to be able to turn it off, and depending on the preset, Expression controls various aspects of the sound.

I’ve hacked in CC11, CC91 and CC93 into zynthian_engine_jalv.py, and they work well (not sure what happens i I save a preset though - are they saved with the preset or are they solely performance controls; haven’t tested), but I’m wondering if it were better to create a custom .ttl file in /zynthian/zynthian-data/lv2-custom, like for instance OB-Xd has?

Thinking further, in the MIDI specification for the JV-880 I can also see that all parameters are accessible via sysex, leading me to think that it may be possible to create a complete .ttl file for the Zynthian UI accessing all parameters. But is the Zynthian UI capable of sending sysex to a plugin for parameter control? I have a vague recollection of bringing this up on the subject of Osirus and the answer was ā€˜no’.

2 Likes

Hi @ricard!

The TTL is for LV2 parameters. MIDI controlled parameters can’t be specified in TTLs.
We can add customized CC parameters in the jalv engine class, as probably you have done.

Having only CC parameters is suboptimal, because they are one-way (UI => engine) and we don’t have parameter feedback, but it’s better than nothing, so please, make a PR with your mods and i would merge them.

Regarding sysex control, do you know if we would have sysex feedback? If so, we could think about deriving a specific class with a full sysex implementation. Alternately, we could improve the LV2 implementation, adding the LV2 parameters properly. This would be the best solution for sure.

Regards,

2 Likes

From what I can tell from the JV-880 MIDI specification, it’s possible to send a request command to the synth to request the value of any parameter, either as a single parameter or as a group, as well as setting parameter values. So it should definitely be possible for the Zynthian UI to query the JV-880 and get a response back with the current parameter settings.

I think as the number of emulators increase, there will be an increased benefit from having a sysex class in Zynthian for managing system exclusive based parameter communication. I agree that LV2 parameter support in the plugins would of course be best, but I also think that we need to realize that Linux is a relatively small market for plugin developers, so if we stick to our guns and say ā€œif you want smooth integration into Zynthian, you need to provide LV2 parameter supportā€, it simply won’t happen in a lot of cases. Sure, it’s a lot of work even after creating the sysex class to map up the parameters, but it’s a fairly trivial task as such, compared to, say, actively modifying plugins to provide LV2 support.

4 Likes

VirtualJV preset generation is broken on Oram2511?

Hmmm, same her with ORAM 2511: All presets are shown in VNC but nothing on Zynthian. I started /zynthian/zynthian-sys/sbin/generate_lv2_presets_VirtualJV.py manually but this won’t help also.

The new generated files are written to /zynthian/zynthian-plugins/lv2/jv880.lv2.

Anyone an idea?

have you already follow this suggestion?

This fixed the same problem on my Zynthian

1 Like
3 Likes

Thanks. Got it!

1 Like

Hello @jofemodo, and everyone else possibly concerned :slightly_smiling_face:

The configuration directory for VirtualJV, where ROM files should be placed for the plugin to work, seems to have disappeared from Oram 2025-11. It used to be:

/root/.config/JV880

Also, the location of the plugin itself appears to have been moved, from the previous:

/usr/local/lib/lv2/jv880.lv2

to a new place, in:

/zynthian/zynthian-plugins/lv2/jv880.lv2

with preset data in:

/zynthian-data/lv2-custom/jv880.lv2

Copying the firmware files to both folders does not effect any unlocking of the plugin on VNC, nor of course any listing of its presets on the Zynthian GUI, even after having searched for presets in Webconf and preemptively run on an SSH console:

regenerate_lv2_presets.sh GitHub - giulioz/jv880_juce

Am I missing something?

Thanks! Best regards

Hi folks! Any clues @jofemodo and @riban, concerning the sudden disappearance of

/root/.config/JV880

in the latest Oram stable release?

I performed a deep search of the Zynthian system drive, and there seem not to be any alternative locations for uploading the VirtualJV firmware(s), except

/usr/local/lib/lv2/jv880.lv2

and

/zynthian/zynthian-plugins/lv2/jv880.lv2

that contain the plugin components and (arguably) preset data. I am on a Pi500+ hardware.

Thanks, and have a nice day :rainbow:

I will check ASAP with a fresh burned image.
Anyway, this shouldn’t be a problem. Simply create the folder and put the ROM files inside.

And please, don’t touch the plugin directory itself, OK?

Regards,