Sofia Woodwinds on github
-
@d-healey said in Sofia Woodwinds on github:
The legato system I use doesn't require transition samples at all - it's not "true legato" - however with some instruments that have a little bit of wetness to the samples it sounds better to have a little release sample during the legato and that's what the transition sampler is for.
Ok, let's start building the samplers first then. I'm testing with the ldk violin and I have sustain, short and release (only one set of samples for each and one velocity).
I don't like key switches and I'd rather focus on a "performance" patch using your legato, getting the realese playing on note off and maybe reinforcing it on retrigger with legato using your transition method. The main point is how to get the staccato when playing short notes?
could you suggest me a structure and maybe some modules or scripts I could use? -
@d-navarra said in Sofia Woodwinds on github:
The main point is how to get the staccato when playing short notes?
Do you mean you want to trigger a different sample set when a "short note" is played? I don't know how you'd do that because you don't know the note is short until after it's been played.
-
@d-healey said in Sofia Woodwinds on github:
Do you mean you want to trigger a different sample set when a "short note" is played? I don't know how you'd do that because you don't know the note is short until after it's been played.
Not exactly... I mean like in your Sofia Woodwinds, you get a kind of staccato feeling without using key switches. Maybe cross fading the sustain and staccato samplers so that they play together but don't sound like 2 voices?
-
I can't remember what process I used with Sofia, it's possible that I'm overlaying a staccato note when playing at a higher velocity. With my Rhapsody libraries though there is no overlaying. The played velocity has some effect on the envelope release time but the length of the note doesn't make a difference there.
-
Would you explain how your "performance" patch works, and eventually how could I use this overlay method if you think it might be efficient or suggest a different approach which would allow me to get both a normal sustain preset and one with a reinforced attack?
-
@d-navarra said in Sofia Woodwinds on github:
Would you explain how your "performance" patch works,
A lot of it is influenced by Big Bob's work in Kontakt with SIPS and WIPS (if you can find the docs for those he went into a lot of detail about various performance aspects).
Basically things like playing speed, velocity, and dynamics influence how various modules (mostly envelopes) respond. There's also the legato script which handles transitions and again takes into account playing speed, velocity, dynamics. One important thing is to add some reasonable amount of sample start offset to your sample maps so that the legato can trigger a little into the sample, skipping the attack. How much you need will depend on the samples and the legato settings you're using - every instrument's different. It's also worth pointing out that not all samples work well with this system. For example for Bell & Bone I re-recorded all the trumpet samples with a different musician because the first set just didn't play well, there was nothing wrong with them but they just didn't "work".
If you want to overlay a staccato sample then probably the best approach would be to put the staccatos in a separate sampler, mapped to the velocity you want them to trigger at. And in the sustain sampler add an envelope with an attack time that provides a nice crossfade between the staccato and the sustain and add a velocity modulator to the envelope so it only affects the same velocity range you are using for the staccatos. I don't think you'll be able to avoid a slight comb filtering/doubling effect though unless the samples are phase aligned.
-
@d-healey said in Sofia Woodwinds on github:
A lot of it is influenced by Big Bob's work in Kontakt with SIPS and WIPS
I know these tools but they are kind of easier to use on kontakt because you make some tweaks on the gui till you find what you need.
@d-healey said in Sofia Woodwinds on github:
I can't remember what process I used with Sofia, it's possible that I'm overlaying a staccato note when playing at a higher velocity. With my Rhapsody libraries though there is no overlaying.
When I tested the Sofia Woodwinds the sustain and release worked quite well but the staccato didn't have have enough gain to be heard probabily due to the missing module pointed in the console:
@d-navarra said in Sofia Woodwinds on github:
Interface:! Line 140, column 44: Unknown function 'set' {SW50ZXJmYWNlfHw0OTI0fDE0MHw0NA==}
overlayController:! Line 3, column 52: liveEnvelopeVelocity was not found. {b3ZlcmxheUNvbnRyb2xsZXJ8b25Jbml0KCl8MTQ5fDN8NTI=}
overlayController:! Line 3, column 52: liveEnvelopeVelocity was not found. {b3ZlcmxheUNvbnRyb2xsZXJ8b25Jbml0KCl8MTQ5fDN8NTI=}Lets experiment with the overlay anyway because it can be useful for some other instruments I want to work on later:
@d-healey said in Sofia Woodwinds on github:
If you want to overlay a staccato sample then probably the best approach would be to put the staccatos in a separate sampler, mapped to the velocity you want them to trigger at.
What velocity would you suggest? Is there a way to add a knob on the gui allowing you to change this velocity or is it to complex?
@d-healey said in Sofia Woodwinds on github:
add a velocity modulator to the envelope so it only affects the same velocity range you are using for the staccatos
Can you better explain this suggestion of yours?
Regarding the hidden knob to switch samplemaps:
@d-healey said in Sofia Woodwinds on github:
It's the patch knob. It does a lot more than just changing sample maps. I've completely re-written it's implementation in my current project because the version I've been using is a bit inefficient and over engineered. You'll find the code for the knob here - https://codeberg.org/LibreWave/RhapsodyBoilerplate/src/branch/main/includes/Patches.js#L23
All the modules and scripts which are involved in this patch are already available in the boilerplate or should I make all the other scripting in order to use this patch?
-
@d-navarra said in Sofia Woodwinds on github:
I know these tools but they are kind of easier to use on kontakt because you make some tweaks on the gui till you find what you need.
They can only be used in Kontakt. My point in mentioning them is that my scripts are heavily influenced by them, especially WIPS so if you want to know how they work you should read the documentation that Big Bob wrote as he goes into a lot of detail - also my scripts have UIs that you can tweak the parameters...
@d-navarra said in Sofia Woodwinds on github:
What velocity would you suggest?
It's up to you and the velocity curve of your keyboard so you can trigger it comfortably. Or you could add a velocity curve control to your instrument's UI to make it editable.
@d-navarra said in Sofia Woodwinds on github:
Is there a way to add a knob on the gui allowing you to change this velocity or is it to complex?
You can control almost every parameter of your project with a GUI knob. The fact that you're asking that indicates you should really be working on simpler HISE projects.
@d-navarra said in Sofia Woodwinds on github:
Can you better explain this suggestion of yours?
Which bit do you need more explanation for?
@d-navarra said in Sofia Woodwinds on github:
All the modules and scripts which are involved in this patch are already available in the boilerplate or should I make all the other scripting in order to use this patch?
The system I use depends on a manifest file that defines everything, this is used in multiple places to setup various bits of configuration when the patch is changed. The boilerplate only contains scripts, it doesn't contain HISE modules, you need to add those and set them up the way you want in your project and if you're using the manifest method then you can change their properties when the patch is changed.
-
@d-healey said in Sofia Woodwinds on github:
also my scripts have UIs that you can tweak the parameters...
Right, I saw your legato and it looked very similar, my problem is that I've been looking at your instruments at it's quite overwhelming. Sorry if I ask so many questions but it's the only way to understand what can result too complex and then discard that option in order to look for an easier solution. For example I know I can assign knobs to control parameters but I'm not sure for each use case the way it works...
Like the knob patch we discussed to switch the sample map involves some more scripting in your version and I need to find a simpler way to start with instead.
As long as it doesn't require any particular scripting I think I can accomplish to overlay staccato and sustain through velocity
@d-healey said in Sofia Woodwinds on github:
If you want to overlay a staccato sample then probably the best approach would be to put the staccatos in a separate sampler, mapped to the velocity you want them to trigger at. And in the sustain sampler add an envelope with an attack time that provides a nice crossfade between the staccato and the sustain and add a velocity modulator to the envelope so it only affects the same velocity range you are using for the staccatos
In this advice, when you say: "add a velocity modulator to the envelope so it only affects the same velocity range you are using for the staccatos" you mean that if I map the staccato to be triggered at 64-127 for example, I should set the min velocity of the modulator at 64 in the sustain sampler (if it iso I don't think I got it)?
Furthermore, if I want to change the velocity range for the staccato in the gui, in order to adapt it to the keyboard you're playing with, shouldn't it be easier to add a velocity modulator to the staccato sampler and control the velocity range from the gui?
This way I can map both sustain and staccato to all the velocity (1-127) and add a knob on the gui allowing to control the attack time for the sustain to crossfade with the staccato while for the staccato I can add a table on the gui to modify the velocity range and curve.Does it make sense or am I completely wrong?
-
@d-navarra said in Sofia Woodwinds on github:
...For example I know I can assign knobs to control parameters but I'm not sure for each use case the way it works...
as David said:
.... that indicates you should really be working on simpler HISE projects. Until you understand the fundamental approach of HISE I would recommend you stay away from the "more complex" approaches to delivering products...
-
@d-navarra said in Sofia Woodwinds on github:
you mean that if I map the staccato to be triggered at 64-127 for example, I should set the min velocity of the modulator at 64 in the sustain sampler (if it iso I don't think I got it)?
The velocity modulator will be in the Attack Time section of the envelope. The modulator has a table that you can use to map velocity values to the attach time.
Since we only want to add a fade in to the sustain when the velocity is above 64 (if that's the lowest value you want to trigger the overlay) then you can use the table to provide a lower attack time when the velocity is below this threshold, and a longer attack time when it's above. You'll need to play around with the values to find out what attack time works best for your samples.
@d-navarra said in Sofia Woodwinds on github:
Furthermore, if I want to change the velocity range for the staccato in the gui, in order to adapt it to the keyboard you're playing with, shouldn't it be easier to add a velocity modulator to the staccato sampler and control the velocity range from the gui?
I think you're referring to a velocity modulator to control gain here? Which is separate from the velocity modulator that's controlling attack time.
-
@d-healey said in Sofia Woodwinds on github:
The velocity modulator will be in the Attack Time section of the envelope. The modulator has a table that you can use to map velocity values to the attach time.
Since we only want to add a fade in to the sustain when the velocity is above 64 (if that's the lowest value you want to trigger the overlay) then you can use the table to provide a lower attack time when the velocity is below this threshold, and a longer attack time when it's above. You'll need to play around with the values to find out what attack time works best for your samples.
Thanks, I'm going to test it and start assigning some knobs on the gui to the parameters I'm using to tweak the sample in order to practice this simple task :)
In a tutorial of yours I remember you suggested to use the muter in the midi processor to turn off a sampler, so if I want to use only the sustain or only the staccato I can link the muters to some buttons in the gui instead of using key switches, right?
@d-healey said in Sofia Woodwinds on github:
I think you're referring to a velocity modulator to control gain here? Which is separate from the velocity modulator that's controlling attack time.
Yes I was thinking about the gain, but you can suggest any other easy solution to allow controlling the velocity range for the staccato, if there is any easy way of course :)
@Lindon said in Sofia Woodwinds on github:
.... that indicates you should really be working on simpler HISE projects. Until you understand the fundamental approach of HISE I would recommend you stay away from the "more complex" approaches to delivering products...
Hi Lindon, thank you for joining the conversation :)
I'm sorry guys but I already told David I'm completely new and need some help to understand how it works. I watched and still keep watching David's tutorial but I need to ask questions for explanations to understand the fundamental approach and then eventually discard the more complex ones.
As I already told David I'm not interested in delivering a product to the market but simply understanding how I can use the software for my personal needs because I'm absolutely away from a professional business level...I think an instrument using sustain, staccato and release samples is a normal routine I need to learn building. To achieve it I ask how I can do things and I can only realize its complexity after the relative explanation.
If you have any specific suggestion I'll be happy to hear it since I'm here asking for help :) -
@d-navarra said in Sofia Woodwinds on github:
so if I want to use only the sustain or only the staccato I can link the muters to some buttons in the gui instead of using key switches, right?
Yup
@d-navarra said in Sofia Woodwinds on github:
Yes I was thinking about the gain, but you can suggest any other easy solution to allow controlling the velocity range for the staccato, if there is any easy way of course :)
Map the samples to the range you want them to be triggerable
-
@d-navarra said in Sofia Woodwinds on github:
Hi Lindon, thank you for joining the conversation :)
I'm sorry guys but I already told David I'm completely new and need some help to understand how it works. I watched and still keep watching David's tutorial but I need to ask questions for explanations to understand the fundamental approach and then eventually discard the more complex ones.
As I already told David I'm not interested in delivering a product to the market but simply understanding how I can use the software for my personal needs because I'm absolutely away from a professional business level...I think an instrument using sustain, staccato and release samples is a normal routine I need to learn building. To achieve it I ask how I can do things and I can only realize its complexity after the relative explanation.
If you have any specific suggestion I'll be happy to hear it since I'm here asking for help :)Specific suggestions?
- stop trying to use Sofia Woodwinds as a model (for now)
- Build a simple app/plugin in HISE to learn the fundamentals.
- When you are confident building your own UI, and writing your own call-backs return to look at the scripts in SW.
-
Hi guys, sorry for my late response and thank you very much for your advices.
I understand that my idea of building a solo instrument is to be considered a complex plugin by itself cause of all the features involved and then I thought I could start with an acoustic piano instead? Using only one sampler and David's tutorial I could try to switch sample maps for a couple of pianos through a combo box.
I'd appreciate your advices to start building it and avoid complexity I might not realize therefore my following questions:AHDSR - Reverb and velocity modulator are sufficient for a nice sounding acoustic piano or would you guys consider to use any other inbuilt fx?
Since I'd like to use it as starting point and keep building on it (like after accomplish this 1st plugin adding an extra layer for pads, textures and strings for example), would you guys link the envelops to the global modulator or directly link the parameters to some controls on the GUI?
Please, let me know what's the simplest way to start with and I'll follow it :)
-
@d-navarra said in Sofia Woodwinds on github:
I thought I could start with an acoustic piano instead?
Go for it. When you're trying something new you'll build it more than once, it's all learning at this stage.
@d-navarra said in Sofia Woodwinds on github:
AHDSR - Reverb and velocity modulator are sufficient for a nice sounding acoustic piano or would you guys consider to use any other inbuilt fx?
It's your project, do what you want. Experiment to see what you like the sound of.
@d-navarra said in Sofia Woodwinds on github:
Since I'd like to use it as starting point and keep building on it
Don't do that. A piano is totally different to a flute which is different to a drum, etc. Build separate projects for each, using what you learned from the previous ones for the next. If you write clean modular code you'll be able to reuse it nicely in future projects - your first code will not be clean, so you should try and improve it with each iteration (I've been writing HISE code for 7 years and I'm still rewriting my code to improve it).
@d-navarra said in Sofia Woodwinds on github:
ould you guys link the envelops to the global modulator or directly link the parameters to some controls on the GUI?
I would decide this as I get into building the project and seeing what works and what is easiest to implement. Again, this is something you need to decide as you're going along. You should probably try both ways, and any others that you think of because - you're in the learning phase here, anything goes. You have my permission to fail repeatedly until you find the solution you want.