Code Monkey home page Code Monkey logo

Comments (7)

redtide avatar redtide commented on June 7, 2024 1

Sorry, it's just me that I don't know, you'll need to wait a reply from other developers.

from sfizz-ui.

redtide avatar redtide commented on June 7, 2024 1

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
discussions section (though you might be the first :P ) or, if you are think that something is not right, open an issue.

from sfizz-ui.

redtide avatar redtide commented on June 7, 2024 1

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.

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).

The example from the SFZFormat tutorial documentation is ignoring my carriage returns and running the opcodes all together in the example. Sorry about that.

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.

from sfizz-ui.

paulfd avatar paulfd commented on June 7, 2024 1

@Audiojunkie I think you more or less got it. In your ADSR example, you have

ampeg_attack=0.002
ampeg_attack_oncc100=0.5

For a given region (or groups/master/etc) this sets up the following formula for the attack:

  • If CC100 is set to 0, the attack time is 0.002 seconds.
  • If CC100 is set to 127, the attack time is 0.502 seconds.
  • If CC100 is set to 63-64, the attack time will be around 0.252 seconds.

You indeed use similar opcodes to link CCs to other parameters.

from sfizz-ui.

redtide avatar redtide commented on June 7, 2024

Hello! Do you mean which cc are supported? (https://sfz.tools/sfizz/development/status/opcodes/?q=cc&s=y)

from sfizz-ui.

Audiojunkie avatar Audiojunkie commented on June 7, 2024

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
Decay
Sustain
Release
Cut off (low pass filter)
Resonance
Pitch wheel
Modulation wheel
Volume
Pan position
Portamento on/off
Portamento Time

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!

from sfizz-ui.

Audiojunkie avatar Audiojunkie commented on June 7, 2024

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:

  • Explain how to filter or sort the incoming MIDI data and determine which sample(s), if any, should sound in response.
  • Instruct the Sampler how to modulate, or adapt, those samples, such as make them quieter or apply a filter.

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:

label_ccN creates a label for the MIDI CC.

Used under the ‹control› header. Some DAWs will display those labels as parameter names, and Sforzando will also use them in the Control tab if no GUI is defined.

set_ccN
Sets a default initial value for MIDI CC number N, when the instrument is initially loaded.

Used under the ‹control› header.

ampeg_attack
ampeg_sustain
ampeg_release

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.

from sfizz-ui.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.