SFZ format documentation

Sampler and Sampling discussion (techniques, tips and tricks, etc.)
KVRian
980 posts since 25 Feb, 2008 from Sydney, Australia

Post Sat Aug 04, 2018 7:31 am

Ah I see... I'm not a real drummer, and the "group" "off_by" and "off_mode" Opcode's will get a standard hihat to open/pedal/close and choke....

If I actually -played- a kit, I'd probably want more :)

Anyway, it seems that Bassmidi isn't responding to some CC messages, such as cutoff/res ... Does it even have a filter?

I'd really like to see a list of supported Opcode's for this thing.

Edit: it seems that the tone knob -is- the filter cutoff... When I send a cutoff cc to bassmidi, the tone knob moves accordingly, and the audio responds accordingly....

So all it needs is ahdsr, and reamidi control has exactly 5 slots for that :)

Still, it would be nice to have those on the bassmidi GUI, as well.
Prestissimo in Moto Perpetuo

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Sun Aug 05, 2018 2:42 am

OK, so I'll document the SFZ 2 stuff next. And if somebody wants to test exactly which opcodes Bassmidi supports and doesn't (and also maybe do the same for Zampler), PM me and I'll see if I can get you some test SFZ scenarios.
pljones wrote:Begs the question of whether you assume everyone reading the guide will understand the format of a MIDI event, too...
Yeah, this is why I've added some explanations about what certain real-life musical scenarios or uses some opcodes would have in language that's hopefully easier for musicians, like explaining the difference between doing dynamic layers by xfin/xfout vs. by velocity, and also doing the guides that explain how certain opcodes would apply to drums, or to a flute. Maybe it's not quite enough to be clearly and easily understandable for somebody new, but I think it's a step in the direction of friendliness.

KVRian
975 posts since 10 Jan, 2007 from London

Post Sun Aug 05, 2018 3:42 am

From http://www.un4seen.com/doc/#bassmidi/BA ... tInit.html
SFZ support
The following SFZ opcodes are supported: ampeg_attack, ampeg_decay, ampeg_delay, ampeg_hold, ampeg_release, ampeg_sustain, ampeg_vel2attack, ampeg_vel2decay, amplfo_delay/fillfo_delay/pitchlfo_delay, amplfo_depth, amplfo_freq/fillfo_freq/pitchlfo_freq, amp_veltrack, cutoff, default_path, effect1, effect2, end, fileg_attack/pitcheg_attack, fileg_decay/pitcheg_decay, fileg_delay/pitcheg_delay, fileg_depth, fileg_hold/pitcheg_hold, fileg_release/pitcheg_release, fileg_sustain/pitcheg_sustain, fileg_vel2depth, fillfo_depth, fil_veltrack, group, hicc1, hicc64, hikey, hirand, hivel, key, locc1, locc64, lokey, loop_end, loop_mode, loop_start, lorand, lovel, offset, off_by, off_mode, pan, pitcheg_depth, pitchlfo_depth, pitch_keycenter, pitch_keytrack, pitch_veltrack, resonance, sample, seq_length, seq_position, transpose, tune, volume. The fil_type opcode is also supported, but only to confirm that a low pass filter is wanted (the filter will be disabled otherwise). The combined EG and LFO entries in the opcode list reflect that there is a shared EG for pitch/filter and a shared LFO for amplitude/pitch/filter, as is the case in SF2.

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Sun Aug 05, 2018 4:26 am

Oh, thanks, that will save a lot of testing effort. Do you know what effect1 and effect2 do there?

KVRian
975 posts since 10 Jan, 2007 from London

Post Sun Aug 05, 2018 4:56 am

Hi DSmolken, sorry I'm just a 'user' rather than an 'expert' so don't really know what's going on under the hood. It might be worth you contacting the falcosoft guy. The message board on his site has been set to read only (because of spam) but you can message him on his facebook page or try the direct email link from his home page. He'd probably be interested in what you are doing here.

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Sun Aug 05, 2018 5:26 am

The list you provided is 99% of what I want to know, but yeah, it might be worth contacting him to let him know that we're pushing SFZ forward and that Bassmidi is popular for this.

User avatar
KVRAF
6779 posts since 8 Feb, 2003 from London, UK

Post Sun Aug 05, 2018 1:00 pm

Effect 1 in sfz is Reverb. CC12 controls the reverb size, CC91 controls the send amount.
Effect 2 in sfz is Chorus. CC93 controls the send amount.

Dunno what anyone else uses them for, very likely the same for compatibility.

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Tue Aug 07, 2018 10:03 am

Updated Bassmidi link, added info on the opcodes it supports, and started filling out the SFZ 2 opcodes. It won't happen too fast, but I figure I'll have all the SFZ 2 stuff and ARIA extensions documented by sometime in September or maybe October.

Then I'm planning to document pljones' hi-hat muting method (and also adapt that to separate multi-mic samples), different vibrato emulations for strings and saxes and guitars, and brushed snare stirs the way I did them in Swirly Drums. Maybe also making a basic subtractive synth out of either "real instrument" samples or oscillator samples or actual synthesis - sort of the String Cyborgs thing.

User avatar
KVRAF
6779 posts since 8 Feb, 2003 from London, UK

Post Tue Aug 07, 2018 1:17 pm

You know about sample=*sine, etc in Aria Engine? I can't remember David's document site had them or if they got onto sfzformat.com.

User avatar
KVRAF
2979 posts since 19 Apr, 2002 from Utah

Post Tue Aug 07, 2018 3:00 pm

This site will be really useful!!! Thank you!!
C/R, dongles & other intrusive copy protection equals less-control & more-hassle for consumers. Company gone-can’t authorize. Limit to # of auths. Instability-ie PACE. Forced internet auths. THE HONEST ARE HASSLED, NOT THE PIRATES.

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Tue Aug 07, 2018 9:41 pm

pljones wrote:You know about sample=*sine, etc in Aria Engine? I can't remember David's document site had them or if they got onto sfzformat.com.
Yes! I've used *noise, *silence and *sine, and it is documented somewhere I can't find right now. But all the waves supported by Aria are listed, I know I've look at that a few days ago.

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Thu Aug 23, 2018 4:33 am

Making progress on this. I think the site's quite usable now. There are less than two dozen Latin placeholder pages left, which are mostly obscure opcodes I'll have to actually test to describe. There's also some stuff that needs to be corrected or explained in more details, and some more ARIA extensions to add and document, but it's getting close to the point where the opcodes are there, and I can get back to making guides on how to do stuff like vibrato and hi-hat muting.

So let's say the site's not ready for release yet, but there's enough there for a public beta.

User avatar
KVRAF
6779 posts since 8 Feb, 2003 from London, UK

Post Thu Aug 23, 2018 11:01 am

Lorem+ipsum+dolor+sit+amet only gets 10 hits!

pitch_transpose - um, alias for transpose?

volume_veltrack - now, "volume" adjusts the playback level by "a fixed amount in decibels" - I'd guess this applies a multiplier to that "fixed" amount, so probably a float 0.0 to 1.0. (Was this something I asked for at some point..?)

sustain_sw / sostenuto_sw / sustain_cc / sostenuto_cc - no idea but I'd guess they're hacks put in at some point... The latter two sound like they bind a CC number, with the former two being "sw" opcodes (region selection) for when those CC's are "on" (>= 64) or "off" (i.e. syntax completely different from other sw_X opcodes with non-standard semantics, too). I'm not sure whether there's additional (UI?) functionality that using lo/hiccX wouldn't have, of course...

From my "beta/unofficial" SFZ 1.0 section:
delay_beats
The (float) value represents the number of beats to delay the trigger point for the layer (assuming there's some way of detecting a host tempo).

Start loccX/start hiccX - I'm guessing "start" is an alias for "offset", so these would be adjusting the sample start position.

Stop loccX/stop hiccX - I'm guessing "stop" is an alias for "end", so these would be adjusting the sample end position.

Stop beats - I'm guessing this is (based on above stop = end):
The (float) value represents the number of beats to delay the end position for the layer (assuming there's some way of detecting a host tempo).

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Thu Aug 23, 2018 12:04 pm

Thanks for the additional info. From the testing I've done, volume_veltrack isn't actually supported and it might just have been an error in a list - should be amp_veltrack, and volume_keytrack and volume_keycenter are likewise errors. Pitch_transpose doesn't seem to be a working alias for transpose, so it might also be something that I should just remove. I'll check with David if those are safe to delete, but it wouldn't surprise me if they were.

The sustain and sostenuto stuff might be for replacing the default MIDI CC assignments for the piano pedals with a different CC or a keyswitch, I need to see if they actually do that with some SFZ piano. The _cc ones are recognized by Sforzando, though the _sw ones are not. They might affect loop_mode=sustain differently than just using loccX/hiccX. Maybe.

delay_beats seems similar to sync_beats so you're right about that, and start_loccX/start_hiccX acts like on_loccX/on_hiccX from my testing. Stop_beats and stop_loccX/stop_hiccX would seem to be counterparts to them in some way. I haven't gotten them to have any audible effect yet, though.

There are also quite a few SFZ 2 opcodes not implemented in ARIA/Sforzando or LinuxSampler which I should at least list at some point.

KVRAF

Topic Starter

1804 posts since 20 Sep, 2013 from Poland

Post Wed Sep 05, 2018 12:16 am

And no more Latin placeholders! The sustain and sostenuto opcodes turn out to be ARIA extensions for implementing half-pedaling in pianos.

I need to explain how includes and ARIA banks work, too, then list all the SFZ 2 opcodes that ARIA doesn't currently implement like decim and bitred and noise and envelope follower stuff, but the site's got enough to be quite useful now, I think.

Return to “Samplers, Sampling & Sample Libraries”