Need documentation on what Midi CC messages that Sfizz can read #114
Replies: 7 comments
-
Hello! Do you mean which cc are supported? (https://sfz.tools/sfizz/development/status/opcodes/?q=cc&s=y) |
Beta Was this translation helpful? Give feedback.
-
Maybe I am misunderstanding something fundamental about SFZ and the way the plugin works. It seems to me that you are showing me the available opcodes that Sfizz parses. I’ll try to explain again what I am wanting, and trust that you will correct me if my understanding is wrong. For most audio plugins, there are certain functionalities built into the plugin that allow for midi to control the plugin. For example, Attack A normal plugin can automatically read midi CC commands. When you move the physical pitch wheel, the pitch of the sample rises or falls with the pitch wheel’s movements. I would like to set up midi automation tracks to control the above parameters in all of my SFZ files. I am wanting to know which Midi CC commands Sfizz is automatically able to read for any normal Sfizz instrument, and what numbers correspond to each CC. For example, MIDI CC 1 provides the vibrato in a patch. When I try to set up a Midi CC automation track in my DAW to control the vibrato for my sequenced midi parts, Sfizz doesn’t seem to read the midi CC data. I’m guessing that either Sfizz uses a different CC number or that it doesn’t support the functionality. This is why I am wanting to know what Midi CC commands are available that Sfizz can read, and what they are. I hope this makes more sense. 🙂 Again, if I seem to be not understanding something about the way all of this works, please don’t hesitate to correct me. 🙂 Thanks again! |
Beta Was this translation helpful? Give feedback.
-
Sorry, it's just me that I don't know, you'll need to wait a reply from other developers. |
Beta Was this translation helpful? Give feedback.
-
I'm beginning to think that my understanding of how Sfizz (and all SFZ parsers in general) work is wrong. After heavy re-reading of all material I can get my hands on, it appears that Sfizz as a parser is perfectly capable to handle it all, but it must be defined properly in the SFZ file in order for it to show up. According to the SFZFormat documentation: The SFZ file’s role is a simple, two-part operation:
It appears that in order for a particular midi CC to be able to be controlled or automated, the midi control number must first be assigned and defined in order for it to work. Using an example from the SFZFormat tutorial documentation, I can see this: <control>
label_cc100=Attack time
label_cc101=Hold time
label_cc102=Decay time
label_cc103=Sustain level
label_cc104=Release time
set_cc102=63
set_cc103=51
set_cc104=31
<global>
// AHDSR
ampeg_attack=0.002
ampeg_sustain=0
ampeg_release=0.002
ampeg_attack_oncc100=0.5
ampeg_hold_oncc101=1
ampeg_decay_oncc102=5
ampeg_sustain_oncc103=100
ampeg_release_oncc104=2 It appears that the midi controls for the AHDSR are assigned a midi cc number and the initial settings are defined or designated when the SFZ parser first parses the SFZ file. SFZ players should then be able to have the assigned midi CC available for track automation or hardware knob control. This is all in theory, because I haven't tested it yet, but that's what it is looking like needs to be done in order to make the MIDI CC available for the instance. So, for example:
Each of these sets the initial value for the attack, sustain, and release ampeg_attack_oncc100=0.5
ampeg_hold_oncc101=1
ampeg_decay_oncc102=5
ampeg_sustain_oncc103=100
ampeg_release_oncc104=2 I "think" this is the measurement value (in units of movement) of the EG time, but I'm not sure on this one. I'm not exactly sue what this does in relation to everything else. It seems that the ampeg_attack, ampeg_sustain, ampeg_release do this, so I'm not sure what these are for. Over all, I feel like I'm getting closer to understanding this. It's too not many people understand it. It would be very helpful to be able to ask questions of someone who knows and understands this. :) EDIT: I'm not sure what I'm doing wrong, but it appears that I need some kind of styling or markdown in order to get my examples to display properly in this post. The example from the SFZFormat tutorial documentation is ignoring my carriage returns and running the opcodes all together in the example. Sorry about that. |
Beta Was this translation helpful? Give feedback.
-
I think you could join both SFZFormat and SFZTools Discord chats if you haven't already, so you can ask, especially the former for sfz. Other than that, did you take a look also to the sfzformat.com tutorials? If we miss some information or something is not explained clearly, feel free to ask also in the |
Beta Was this translation helpful? Give feedback.
-
Yes, you can use markdown in GitHub comments. GitHub has it's own extension (but I avoid as much as I can if not for really useful features).
I'm not sure what you mean with "ignoring my carriage returns", SFZFormat pages are read only, there is no editor for sfz (yet?). I modified your comment, so you can look at the format. I used "ini" as language for multiline code blocks because GH have no sfz syntax highlighting parser for markdown. |
Beta Was this translation helpful? Give feedback.
-
@Audiojunkie I think you more or less got it. In your ADSR example, you have
For a given region (or groups/master/etc) this sets up the following formula for the attack:
You indeed use similar opcodes to link CCs to other parameters. |
Beta Was this translation helpful? Give feedback.
-
Need documentation on the Midi CC messages to which Sfizz is able listen and respond. For example:
Attack
Decay
Sustain
Release
Cut off (low pass filter)
Resonance
Pitch wheel
Modulation wheel
Volume
Pan position
Portamento on/off
Portamento Time
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions