OhmerPrems announcements thread

…it’s not a good idea to propose (like the real hardware does) up to 32 user waveforms… :roll_eyes: :rofl:

Really, who need 32 user waveforms?

Of course I’m nearly sure they’re no event handler when saving as preset, like onPresetSave().

No, preset saving uses the same path as patch saving. But nothing prevents you from writing your own, which augments dataToJson() with some additional fields.

About the user waveforms: maybe it makes more sense to store them as plugin settings instead of per module instance. So 32 user waveforms, which are shared.

Yep I’ve considered this possibility, as shared instead per plugin instance !

:warning: EDIT: cancelled! unfortunately I can’t consider “32 shared” waveforms, because on using shared patch(es) or by using another patch(es), they’re possible conflicts between different waveforms but on the same “slot” (in this scenario, previous waveform(s) is/are lost and replaced by the new ones).

By this way, I’ve kept the Save waveforms with “Preset” toggle in context menu. Also, I’ve added a large red LED at the bottom of module, will fast blink (8 times per second!) to warn the user in case he’d like to create a preset, if at least 4 user waveforms are already loaded AND if the option is unchecked from the context menu.

The large LED:

4 user waveforms (or less) are always serialized in json (Preset warning LED stays unlit).

Perhaps I’ll must consider a loseless compression format, like FLAC, in order to be serialized with less data volume in json file…

Hello,

Definitely bad news, the user waveforms will not be embedded in json by using “Save waveforms with presets”, as suggested by Ben (stoermelder - thanks anyway to him), it’s not reliable! Sometimes (it’s random) from dataFromJson() method, some waveform(s) are missing! Definitively I hate json!!!

By this way, VCV presets can’t embed waveforms (as long as a patch storage isn’t implemented in VCV Rack’s API for presets who are using important amount of datas, or a way to differentiate a regular patch file/autosave vs. a preset file).

Saving only 4 user waveforms (as uncompressed PCM) reaches the 100 kilobytes limit for json serialization, as indicated in VCV Rack manual.

I was go back, I’ve removed the large LED concept (at the bottom of module) as I described in previous post. The idea was good (IMHO), but not viable.

User waveform files are handled by onSave() / onAdd() methods only.

Too bad!

Hello!

Today they’re good news (to change from the bad ones, recently :grin: ):

  • FM is implemented, choice from TZFM (aka Linear Through-Zero FM, as default “FM“ setting), or Phase Modulation (PM), using FM input jack (input signal must fit into -5V/+5V range, otherwise it will be clipped). FM settings is always per program.
  • Two independent LFOs (LFO 1, LFO2), frequency range 0.01Hz to 50Hz (0.01 stepping), default 2Hz, common (bipolar -5V/+5V) waveforms (SINE, TRIANGLE, SAWTOOTH, RAMP, SQUARE and RANDOM), AMP amount (amplitude of the modulation) from 0% (0% assumes the relevant LFO is turned off, it’s the default setting for LFO 2 only) to 100%. RETRIGGER may be off (free) or by incoming gate voltage (on GATE input jack) to restart LFO 1 and/or LFO 2 phases (depending their respective settings).
  • On factory default (new module, of after Initialize from right click menu), LFO 1 is always “open” as AMP 100%, SINE, 2Hz, no retrigger. LFO 2 is always “closed” (AMP 0%), but other settings are strictly identical.
  • Like FM mode (and its FM DEPTH from 0% - aka FM OFF, up to +100%), LFO 1 and LFO 2 are program-dependent, too.
  • FM LED near input jack is solid green when connected, and FM DEPTH parameter is greater than 0% .

:information_source: Program is like a synthesizer preset.

Each oscillator (A, B, C, D) can be modulated by FM input (TZFM or PM), or by any LFO (1 or 2).

This is the final version of VX expander, now it can output both LFO 1 and LFO 2 “curves” (always into -5V/+5V voltage range).

Following example, OSC A is modulated by LFO 1:

…but can be modulated by LFO 2, or by FM input jack (TZFM or PM, depending the FM setting from 3rd page of PROGRAM), or… not modulated. :wink: .

By default, each oscillator’s MOD. SOURCE is set to NONE (not modulated).

3 Likes

Few development today, but the Vektor User’s Manual is under construction: :wink:

https://github.com/DomiKamu/OhmerPrems/blob/v2/docs/modules/Vektor/Manual.md

Unlike FranKe, I’d like to provide a full (completed) user’s manual for the module release (planned for plugin v2.6.13, but no given delay at the moment, both are “in construction”, then beta-test…).

1 Like

The final joystick… exactly like WAVESTATION VST plugin by Korg :wink: A simple sphere.

The “3D sphere” effect is entirely coded in C++ (no external SVG), using a circle as “base”, then four ellipses above to “simulate” the light ray coming from top of the module (like connectors and buttons). Not ugly (I hope?), not perfect, too… must be enhanced, of course!

ADDED (one day later), perhaps a bit better… (I like it!)

1 Like

A very short Vektor demo (using 4 polyphonic voices)… 15 seconds. :wink:

Unfortunately I can’t record audio by ASIO (I’m using OBS Studio software), so I had a important latency! Sorry.

MIX ENVelope wasn’t developed when I’ve recording this intro of V.H. “Jump”.

Hello,

Some news about development in progress of the Vektor module.

Now the mix envelope is operational, but as next milestone (started tomorrow) is to implement envelope looping feature (optional feature), like “basic” mix envelope, loop feature is also customizable per program.

Some modifications was made on the lower part of module’s GUI (below A/B/C/D/MIX context buttons):

  • Added combined LED (green/red) for both X and Y inputs (left side of the module, between VEL. and V/OCT inputs). The LED is unlit/off as long as both X & Y are not connected, solid green when both are connected, or solid red when one is connected but not the other (red as “caution”). While both X & Y are connected to -5V/+5V modulation source(s), the X & Y inputs replace the physical joystick. At the moment, physical joystick or X & Y inputs values offset the mix envelope (the mix envelope is unaffected when the joystick is centered or 0V is applied on both X and Y inputs).
  • Added ENV. toggle button (just above MIX output) to enable/disable the mix envelope “on-the-fly” (always for current program, the same operation can be done.from the first page of PROGRAM context, via L5 side button and DATA ENTRY encoder).
  • The “diamond” (where the joystick is) was moved up a bit, to keep better spacings between GUI elements.
  • Added a Mix Env. STAGE LEDs group (bottom center), 5 blue LED (one per envelope point, from #0 / Start, to #4 / Release, via #3 / Sustain).

I’ve started to update all images & GIF animations for Vektor User’s Manual.

2 Likes

Hello!

The mix envelope (incl. all mix envelope loop modes) are fully operational.

However, another GUI modifications:

  • Removed the useless stage LED (bottom center of the module, below the joystick).
  • Added PROG. input jack (near VEL. input jack) to select the program via unipolar CV (+1V to +8.5V to select PROGRAM #1 to PROGRAM #16, untouched if voltage is below +1V).

:information_source: The small space below the joystick will be used for a bi-coloured orange/red “LED” (as warning when orange, or as error when red, while a relevant message is displayed for seconds).

PROG. input voltage rule:

  • 0V to +0.9999V → current program remains unchanged (as safeguard).
  • +1V to +1.4999V → PROGRAM #01 (factory is 01. BASSIST 90S).
  • +1.5V to +1.9999V → PROGRAM #2 (factory is 02. TWANG BASS).
  • +8V to +8.4999V → PROGRAM #15 (factory is 15. SLOW BELL).
  • +8.5V (and above) → PROGRAM #16 (factory is 16. INIT).

Like all lights (LED) of the Vektor module, the PROG. input jack and its LED is checked/updated every 4096 DSP frames (every 0.08s @ 48kHz sample rate).

Next milestone are custom programs, including “save as”, “open” (either via right click context menu, or by dropping .vktProg file over the OLED display).

When done and all successfully beta tested on all platforms, the Vektor module + its VX right-side expander comes to OhmerPrems plugin version 2.6.13 stable!

1 Like

Hello,

Next milestones to complete the Vektor module:

  • A orange/red large LED, below the joystick, to inform the user about a warning (orange) or error (red) condition. On error/red condition, a relevant message is displayed (until any button press to acknowledge). The unique warning situation is by using more than 4 user waveforms (important amount of datas to be json serialized, as explained in user’s manual). Possible error conditions are mostly by file operations. → OPERATIONAL.
  • PROGRAM files (save as, open) support, as .vktProgram files. → OPERATIONAL on Windows, but must be confirmed on Linux and MacOS X platforms during beta testing phase!
  • MIX ENVelope files (save as, open) support, as .vktMixEnv files. → ALSO OPERATIONAL on Windows, also must be confirmed on Linux and MacOS X platforms during beta testing phase!
  • Finished Vektor User’s Manual. → in progress…
  • Beta testing phase during a week (or two), on every platforms (Windows, MacOS X Intel & ARM, Linux), prior to be published as stable v2.6.13 (GitHub & VCV Library).

As reminder, Vektor and its VX expander will be free for everyone (license V2 keyfile is not required for these modules).

4 Likes

Hello,

This is the second expander module (also 3HP), left-side, named VK (see below, first image).

At the moment, the oscillators “sync” aren’t handled (aka “SYNC OFF”).

Hard sync or soft sync may be handled internally - via setting(s) in 4th page of any oscillator context, like this:

First setting (along L3 left-side button) for SYNC can be: OFF, HARD, or SOFT.

Second setting (along L4 button) - only if SYNC isn’t OFF - can be:

  • LOWER PITCH, will let the module’s logic to choose automatically the lowest pitched oscillator (after FM/LFO) to be the “leader” oscillator.
  • OSCILLATOR A.
  • OSCILLATOR B.
  • OSCILLATOR C.
  • OSCILLATOR D.

Of course, the VK expander - when linked to Vektor module (placed alonsgide it, left-side without space) AND one input is connected - either HARD or SOFT - will temporary disable the internal mechanism explained just above (until disconnected or unlinked expander).

This new VK expander is useless in the major situations (I guess). However, it can be used in case you’d like to “force” a hard/soft sync by external module (depending the used jack), by an incoming +1V or more voltage (recommended: +10V), whatever the position of all phases (like VCV’s WT VCO module does, in fact).

This expander was initially named VI, but really I hate this name, so I’ve renamed it to VK, instead!


About development in progress, today (Tuesday the 14th afternoon):

PROGRAMs and MIX ENVelopes can be saved to external files (then loaded, later). Like user waveform (.wav file), program (.vktProgram) file, and mixing envelope (.vktMixEnv) file, depending the module’s context - can be dragged then dropped anywhere on the Vektor module, to be imported/loaded!

The User’s Manual is near finished. Only unfinished topic is OSC SYNC settings (last topic). Then possible corrections later, as required (English faults, missings, typos, and so on).

File operations (and the modules themselves) must be validated on Linux and MacOS X (Intel, ARM) platforms, during beta test phase (my platform is Windows 10, my brother is using Windows 11 laptop).

Next milestone is “osc sync” C++ implementation.


I’m looking for serious/reliable persons who are using MacOS X (Intel & ARM, if possible) and/or Linux to participate to beta-test phase of this module (beta is planned for first week of August). OhmerPrems licenses as gift, of course! Thanks in advance.

4 Likes

Hello,

Today July 15th morning,

Finally after many tests, I revert back, I cancel the hard sync / soft sync feature I’ve explained in the previous post.

Why?

These features are very cute for basic & traditional waveform-based oscillators (like oscillators on Moog synthesizer series, and similar, in particular triangle-based waveforms), but unfortunately these techniques are not accurate for complex/custom waveforms. It works, of course, but the obtained results are simply disastrous!

Also, by checking some VST3i plugins, like Arturia Prophet VS, Korg Workstation, and Korg wavestate native (also the Victor Eurorack hardware module, manufactured by Behringer), they’re nothing about “hard sync” / “soft sync” (including “internally” vs the four embedded oscillators).

By this way, I prefer to focus mine efforts to other aspects of the Vektor module.

Thank you in advance for your understanding, and apologizes! :wink:

2 Likes

Just a thought- Have you considered using an internal phasor representation for syncing purposes, then it would make syncing much more predictable. The sync then doesn’t relate to the fairly arbitrary zero-crossings of a complex waveform, and tracks the fundamental.

BTW, I really do enjoy reading your progress on these things and learn a lot from it.

1 Like

Hello - yep of course I’ve tried a discrete phase, for syncing, but for same weird results. It’s okay when I’m using simple/basic waveforms, but horrible (either hard and soft) when I’m using complex waveforms.

I’ve noticed exactly the same fact vs. VCV WT VCO, by using a complex wavetable! Worst results are by using FM-based waveforms (such bells).

Surely the reason why digital machines (such Prophet VS, Wave PPG, Emulator II or CMI Fairlight) doesn’t use osc syncing techniques ! Also, my Korg wavestate MkII synthesizer doesn’t have syncing option, anywhere, nothing in the menus, but this new synth in the studio is mainly designed for performance (instead of sound design).

Thank you for your interest in following the progress of the development. Really appreciated, and additional source of motivation! :+1:

1 Like

Hello,

Today July 16th (Thur.), afternoon…

Another decision: I’ve removed (without any regret), the VEL. input jack.

By the way, PROG. input jack is moved left (to the place of the ‘defunct’ VEL.).

(Final Vektor layout):

Now left-side (inputs) and right-side (outputs) are… symmetrical!

The main reason to remove VEL. input: in general, velocity may affect VCA (99% of time), so the velocity (from source module) can be handled by any other third-party module IMHO, to control a VCA or VCF.

By this way, I consider VELocity input as not-essential for this quad-VCO module.

Another advantage: polyphonic C++ code is a bit streamlined.

Hello,

OhmerPrems plugin is now available as pre-release v2.6.13 BETA, from GitHub repository, for testing purposes (until published as stable release):

https://github.com/DomiKamu/OhmerPrems/releases/tag/v2.6.13

This pre-release mainly introduces Vektor, 16HP polyphonic digital quad VCO module, using Vector Synthesis (inspired by the SCI Prophet VS synthesizer & Behringer Victor Eurorack module, but with notable differences/enhancements).

The Vektor module comes with a companion, a 3HP “right-side” expander (named VX) who bring 7 extra outputs (organized into 3 sections, “blue lines” as “section separators”, for better read):

  • LFO 1 and LFO 2 on upper section.
  • Physical joystick X/Y coordinates (as -5V to +5V), on middle section.
  • Mix Envelope X/Y coordinates + dedicated gate output (while the envelope is “running”), on lower section.

User’s Manual (near finished): https://github.com/DomiKamu/OhmerPrems/blob/v2/docs/modules/Vektor/Manual.md

Vektor and VX modules are free for everyone (without any limitation/restriction, no license keyfile required). :wink:

Enjoy!