Unfiltered Audio Announcements

As far as I know you should not store font at all, but call APP->window->loadFont on every draw.

3 Likes

Thanks @trickyflemming for the quick fix. Working well here in Maschine and Bitwig.

I am noticing the patch triggers on load. So when a preset or daw session is opening, the sound in drum synth is triggering. I have the module set to midi in using MIDI to CV module, attaching example patch which is being loaded in the VCV VST3 or CLAP instance in the DAW.

bta.vcv (1.3 KB)

TIL! Thanks for the wisdom. Next time I’ll read the API more closely >_<

EDIT: Implemented a more robust fix. I’ll send this in to VCV. VCV just released 2.0.1 so this will go out in 2.0.2.

2 Likes

curious- what do you consider a more robust fix? I noticed I’ve got the same bug in a plugin I submitted the other week. Did a quick fix to only store the filepath at construction time, not the font handle. Font handle loaded on every frame.

Many thanks for the quick fix. Just updated through the Rack app, and now I can open previous projects. Love these modules. Looking forward to the sampler.

Cheers

1 Like

Fonts and images are cached in the graphics context. In the DAW case, the context is changed at various points (invalidating the cached item), but in standalone, the graphics context doesn’t change for the life of rack.

There is a contextChanged event if you want to actively manage things, which I’ve had to do for custom in-memory generated images. but for an asset file, you can just reload each time you need it and let Rack’s caching optimize the loading.

3 Likes

About the envelope of the Drum Synth module:

I noticed that in Battalion the envelope knobs are exponential and the envelope curve goes from inverse logarithmic to exponential, in the Rack module the knobs are linear and the curve only goes from linear to exponential.

I bought the drum synth module. And first of all: It’s really fun, well done.

Second of all. I agree with the feedback given above, the envelope knobs really really would benefit from a non-linear scaling. Of all the possible settings, the most useful 95-98% or so live in the first 2-5% of the knob range which isn’t great.

I also would strongly prefer for the phase of the sine wave components to reset on trig. On softer kick drum sounds (like the otherwise lovely pillow algo) the inconsistency of the attack clicks is especially evident. If that could be added as an option it would make some of the algos way way more useful IMO.

Great module otherwise!

@trickyflemming in Battalion I would prefer the attenuator to default to 0% when double clicked … any chance that you implement this in a future version (maybe as secondary mode selectable via menu)?

Yes, that would be a bit more convenient on all of the modules.

I vaguely remember the font cache does all the remembering, and optimization but the font handle may change between frames even though the font data remains loaded. Something to do with maybe a ring buffer LRU?

EDIT: It could not be a ring buffer, but a red/black tree node reference, or some other faster structure. I suppose LoadFont is a bit misleading. Various fonts will be in various states of load, number of glyphs rendered at sizes to pixel buffers, in colours, and orientation. Apparently the DTP gang started it all with Adobe Type 1 fonts, after a little flirting with variable render width bitmapped fonts.

EDIT 2: I wonder how much software would fail if const char* const was the type of string for the font filename was used? Like not rack from the usage, but some with dynamic font name building. The saving would save enough on a world compute grid for maybe a module, sting to unique font reference HashMap or such. :smiley: Not that much given virtual addressing, but the TLB cache saving of a rack kernel module? :smiley: … ok, that’s enough optimization ideas for today.

Bought these and they sound awesome, I just wish the panels had a smaller foot print and the controls were better laid out. A little rejig in the UI would be much appreciated !

I agree. I had been waffling over changing this in HetrickCV as well. The next build will default to 0%. On the right-click menu will be a global option to decide whether they default to 0% or 100%.

5 Likes

Thanks! Yes, the phases don’t reset if the envelope is open at all. In the Battalion plugin we have an “Always Reset” toggle to always force a hard reset on each trigger. Let me figure out the best way to add it to the panel.

3 Likes

Ah makes sense! I would be happy with a right-click menu option to change the behavior. Thx for the consideration!

It is now a panel switch for the next build. It’s one of those things you’ll want to audition frequently instead of set-and-forget.

5 Likes

Great! Thanks. <3

@trickyflemming Hi Michael Question about Attack parameter in the main Drum Synth module - attack value being increased does make wave sounding long time even despite rest envelope setting (hold\decay) stay at minimum (as by default), like attack ignoring them. Do this intended behavior ? Not critical nuanse though, but need to be sure.

1 Like

not michael obviously, but the vst has 3 stage envelopes, so attack phase can be any length before hold and decay stages

1 Like