New Plugin: SimSam, a simple (re)sampler based on SFZ

Is this plugin available on mod duo x mow?

No, it has not been pushed to the store.
The way it handles files makes it quite peculiar.

I might be wrong here @edwillys but this is only meant to be used with specially crafted sfz files, correct?
Would be interesting to push this as a beta plugin at least.
Are you interested on keeping up development to add file loading support?
Basically what is needed is lv2 patch parameter of type atom:path, with mod:fileTypes set as “sfz”. See mod-lv2-data/sampler.ttl at master · moddevices/mod-lv2-data · GitHub for a working example.

Got the plugin running…

With just a few tweaks I am able to make this work with v1.10, still leaving the 3 hand-picked and refined SFZ files as-is but allowing them to be uploaded by the user with the new file manager stuff.
So the plugin loads whatever possible. It is great to have the feedback on loading vs load error vs load ok. Even better would be if this is extended to display % of loading status.

Now… while I have this working on the slowest possible unit (kickstarter Duo, with nand) and the plugin actually works, it takes a looooong time.
The plugin reports

Finished loading 85 notes in 340993ms

Which is around 5 and a half minutes.
Uploading all the samples also takes a long time (it is 700Mb upload after all), and only 1 instrument fits on the kickstarter Duo. But indeed all works after everything is in place.

Compared to the most powerful MOD device that exists at the moment (Duo X production units), uploading the 700Mb pack takes around 30s, and loading the full thing in the plugin around 5. :scream: :rocket: :rocket:

Maybe worth to push as beta plugin for the community to try?

4 Likes

Clearly, Mod Devices is going to another dimension! :heart_eyes:

OH SHooots. THis is great. @falkTX whats that midi file plugin?

Yeah I recently trying sfizz. And want the function of ADSR. Although it is possible to write code on the notepad, instead of writing one by one of ADSR of sample, that function of simsam would be nice.

The one I did and pushed to the store recently. there is a whole discussion about it on the audiofile plugin thread.
requires 1.10, but already available.

We are maintaining a list of plugins that support file handling at File handling - MOD Wiki, which includes an audiofile and midifile player yes

Hello,
SimSam was written when there was still no support for file handling. The WAV files are stored in fixed locations and loaded into the plugin at will. Now, as we all know, things have improved :slight_smile:

The loading takes quite a long time as the entire WAV samples are read into RAM. Though this has this obvious memory penalty, it allowed the plugin to play in in a RPi MODEP, where reading from SD card in realtime wasn’t really working. To compensate for the long loading time, I simply deleted some samples :smiley: The 4ths and 5ths are calculated in realtime via resampling from existing ones.

The SimSam support of SFZ is limited, but is not meant to apply only to specially crafted SFZ. Instead, if need be it can be extended to whatever SFZ functionality is missing. Proper SFZ parsing is an art per se and most likely it won’t compare to existing stuff that is already available.

If there is interest here, I can bind the sfizz library now that file handling is in place. Goal would be to have it playing directly from flash as long as the file comes from the file manager, hence reducing their loading time and memory footprint to almost nothing.

4 Likes

While I understand that swapping the sfz library under the hood for a more spec-complete one would be nice, what you have already in place already works today as-is for a few sfz files.
I have been closely following sfizz development, and while it is progressing quite well, I cannot say in confidence that we will have it reliably working on the units in the short-term or middle-term.
As you have experienced with MOD-EP and sdcards, read operations can be terribly slow, so relying on disk-streaming for a realtime target is going to be difficult to achieve. Even for Duo, the mmc vs nand has quite difference disk-read performance, so the plugin will need to adjust itself during runtime. Easier said than done… :sweat_smile:

I think leaving SimSam for a couple of known, good-to-work and hand-crafted SFZ files is okay. Once sfizz stabilizes, then we can use it for more generic SFZ usage.
Since we are dealing with custom/hand-crafted SFZ files, we can make the sfz and wav files be together in the same folder, making it much easier to upload. Then all the user would have to do is to download a zip file (gitlab provides that too like github, right?), unzip the contents and upload the stuff into a specific subfolder.

btw, regarding the changes that I needed to do in order to make the plugin work for me, here is a patch

Hello,

Sure, it makes sense.

As for manually putting the files in a given folder, this would be more like a developer feature, right? We could say that if there is a new stable sample package, this would come with a plugin update and the user only needs to upgrade it.

Thanks for the patch, I will have a look and merge it accordingly. From what I saw from the surface, it was basically some path adaption for the MOD and one bug fix.

We do not have such thing in place though, and the amount of data needed for the full plugin is bigger than what some devices are even able to install anyway so we cannot tie the 2 together.
So the installation of sfz/wav files needs to be optional.
Main question is how to make this as simple as possible…

I’m working on an original soundfont and at the moment is playing well in Sfizz. I didn’t make intensive tests to see if it dies badly with a lot of poliphony etc. I kept the soundfont size not too big (160MB) so that I can use ARIA sfz opcode hint_ram_based=1 (that is recognized by Sfizz) to load all the files in ram. For a decent electric piano (better than the ones already existing in the mod store) that’s enough. If anyone is interested I can share the soundfont for helping in testing Sfizz. Pre-requisite is that you’re able to copy files on your Mod and you can install Sfizz from beta.

@falkTX sfz opcodes can map to CC some features. For example on my custom sfz file I have

    <global>
    // Lfo modulated pan & pitch
    lfo01_wave=1 // Sine waveform on lfo 1
    lfo01_freq=0.5 lfo01_freq_oncc14=20 // Lfo 1 min, max frequency [Hz] controlled by cc14
    lfo01_pan=0 lfo01_pan_oncc15=100 // Pan min, max depth [%] when modulated by lfo 1 and controlled by cc15
    lfo01_pitch=0 lfo01_pitch_oncc16=50 // Pitch min, max variation [%] when modulated by lfo 1 and controlled by cc16

I cannot hear them working. The same controls work with linuxsampler with the very same soundfont. I need to recall from the mod-host features if CC messages are “captured” and not sent to plugins. If not the case I will open an issue to Sfizz on github!

NOTE: sfizz prints by default when there are some unrecognized opcodes, that’s not the case

Thx

1 Like

the sfizz plugin in the beta section of the store is old now, you should try if the same works if you install the official binaries.
they recently released the plugin as v1.0, so they consider things to be stable enough for initial version.

mod-host does not intercept any CCs. it will intercept the midi tempo stuff, but not anything else.

Thanks, I’m running Sfizz on my custom board and I’m using version 0.5.1. I have seen now the 1.0. I’ll try it and get back

So I’m using now Sfizz 1.0. I’ve seen lfos are still unsupported Add support for LFOs · Issue #150 · sfztools/sfizz · GitHub. However I was able to cascade a few plugins in Mod to obtain the same effects.

1 Like

An audio demo of the soundfont here SoundfontTestSuitcaseMarkI by Massimo Pennazio | Free Listening on SoundCloud

4 Likes

It’s sounding really cool man!

2 Likes

Is this something you would like to have integrated into SimSam? Are the samples available somewhere?

1 Like

Sorry but I never tried SimSam, can you tell me differences or improvements over Sfizz? Why I would need to encapsulate a sample in a plugin shouldn’t they remain in a separate folder?

This is what I do on current Aida DSP OS builds: I keep the samples in a path that can be mounted on usb with mass storage upon request for file transfers. So I have all the sfz files together. Since at the moment I don’t have integrated the latest version of mod-ui which supports file explorer, I have a bash script that creates the lv2 presets for Sfizz so that all the samples on board are selectable. Problem of course is if a user add another sample of his own. For this reason I will work on integrating latest mod-ui version.

1 Like

As of now SimSam simply follows a different approach than sfizz. It comes from a time before official file handling support. I just thought you might be interested in having this integrated to SimSam as you posted in here :wink: Of course, if you share your samples they could be added in a modular approach to sfizz as you described above.

1 Like