Sofia Woodwinds on github
-
Hi David, 1st of all I'm happy to tell you I joined your patreon :)
Regarding the current topic on this forum I found a fork of your project that fixes the GUI issue :)
https://github.com/bobicloudvision/sofiawoodwinds
there are still a few errors detected on the console:
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=}it looks like there's a problem with knob and always this liveEnvelopeVelocity not found...
are you able to tell me where to find this envelope?might you help?
-
@d-navarra said in Sofia Woodwinds on github:
Regarding the current topic on this forum I found a fork of your project that fixes the GUI issue :)
I just took a look at that, he changes
Settings
tosettings
which will work but is not a good way to do it because it breaks the coding style of CamelCase namespace names, and it doesn't clearly distinguish between the settings namespace and the Settings HISE class.@d-navarra said in Sofia Woodwinds on github:
it looks like there's a problem with knob and always this liveEnvelopeVelocity not found...
are you able to tell me where to find this envelope?It's probably as I said previously that you need to be pulling in the sub-module. But I'd still encourage you to start much much simpler.
-
Sorry for my late response but I got back home from work now.
Ok, I thought it was quite solved because I tried it quickly with some samples and it kind of "worked" , something wrong with the staccato but I thought it was an easy fix
@d-healey said in Sofia Woodwinds on github:
But I'd still encourage you to start much much simpler.
I absolutely agree with you because I'd like to learn from scratch.
Anyway since I tried it and some modules look very interesting you think some of them (like your legato, vibrato or transition) can be reused in another project?Tomorrow I'm going to be busy at work all day-long but in a couple of days I should have time enough to start building a plugin. I'd like to make a solo strings section and I didn't understand ho to properly manage the release together with the sustain and I also need some advices regarding the modules (a little confused about the Golabal modulator vs the modules directly in the sampler).
Then could be a good idea to start building a simple violin and keep building upon it :)For this kind of questions is better here or patreon? :)
Is there already something on the patreon about the realese samples or the management of the modules? I tried to make some research but probably I didn't do it the right way... -
@d-navarra said in Sofia Woodwinds on github:
Anyway since I tried it and some modules look very interesting you think some of them (like your legato, vibrato or transition) can be reused in another project?
I've rewritten or modified most of these and have used them in other projects, I've just (in the last few days) rewritten my legato script to simplify it for my current project.
@d-navarra said in Sofia Woodwinds on github:
For this kind of questions is better here or patreon? :)
Here - unless it's about a post I made on the topic
@d-navarra said in Sofia Woodwinds on github:
Is there already something on the patreon about the realese samples or the management of the modules?
In this one I show how to add a global velocity modulator
https://youtu.be/zroQrv-MGWc?si=E02Juk3coEqoviSj
I don't have one for release triggers but you basically drop your samples into your sampler and add the built in release trigger script.
-
@d-healey said in Sofia Woodwinds on github:
I've rewritten or modified most of these and have used them in other projects, I've just (in the last few days) rewritten my legato script to simplify it for my current project.
Ok, since I wanna use a Rhapsody template am I allowed to use this new modules then?
https://codeberg.org/LibreWave/RhapsodyBoilerplate/src/branch/main/modules
Are there some explanations about all these modules somewhere?
@d-healey said in Sofia Woodwinds on github:
In this one I show how to add a global velocity modulator
https://youtu.be/zroQrv-MGWc?si=E02Juk3coEqoviSj
I don't have one for release triggers but you basically drop your samples into your sampler and add the built in release trigger script.
I can follow this video :)
If I understand correctly, since I'd like to use violin, viola, cello and bass it's better to connect all the modules which parameters I'd like to access from the GUI to the Global modulator and in this way I can use the same samplers changing the samplemaps and setting the parameters for each instrument saving them as presets, right?
-
@d-navarra said in Sofia Woodwinds on github:
Ok, since I wanna use a Rhapsody template am I allowed to use this new modules then?
Of course, as long as your project is released under the GNU GPL or you're using the scripts that have a public domain license.
@d-navarra said in Sofia Woodwinds on github:
Are there some explanations about all these modules somewhere?
I make these for my own use, the only documentation is in the code itself.
@d-navarra said in Sofia Woodwinds on github:
If I understand correctly, since I'd like to use violin, viola, cello and bass it's better to connect all the modules which parameters I'd like to access from the GUI to the Global modulator and in this way I can use the same samplers changing the samplemaps and setting the parameters for each instrument saving them as presets, right?
There's no one way to do it. It really depends on the details of your specific project, you'll have to decide for yourself what way you want to do things. If you need a UI widget to control more than one thing then you will have to use a control callback rather than connecting it up in the interface designer.
Global modulators are good but have some limitations.
Changing the sample maps and parameters is separate from the other stuff you mentioned. The way I do it is I have a hidden knob on the UI. In the knob's callback I use the knob's value as an index to an array which contains the list of sample maps. So if the knob has a value of 0 then I use the sample maps that correspond to patch 0, if it's 1 I use the sample maps for patch 1, etc. But you don't have to do it this way.
-
@d-healey said in Sofia Woodwinds on github:
Of course, as long as your project is released under the GNU GPL or you're using the scripts that have a public domain license.
Absolutely, the most I can accomplish in terms of publishing at the moment it's something based on the VCO and Sonatina just to test it out...
Right now I'm honestly focused on resampling some patches which are for windows only and import them in Rhapsody in order to be used natively in Linux for my personal needs. I already did some test and with some tweaks I can achieve some satisfying results :) I just need to learn to set it up correctly and make it usable with a decent GUI.
BTW I think you deserve a huge thank you from the Linux community for the job you did with Rhapsody finally allowing to build very professional sample based plugin like Sofia Woodwinds running natively on Linux :)
@d-healey said in Sofia Woodwinds on github:
There's no one way to do it. It really depends on the details of your specific project, you'll have to decide for yourself what way you want to do things. If you need a UI widget to control more than one thing then you will have to use a control callback rather than connecting it up in the interface designer.
Global modulators are good but have some limitations.
Did you do any specific tutorial which might help me better understand these concepts?
@d-healey said in Sofia Woodwinds on github:
Changing the sample maps and parameters is separate from the other stuff you mentioned. The way I do it is I have a hidden knob on the UI. In the knob's callback I use the knob's value as an index to an array which contains the list of sample maps. So if the knob has a value of 0 then I use the sample maps that correspond to patch 0, if it's 1 I use the sample maps for patch 1, etc. But you don't have to do it this way.
At the moment I rather prefer learning it following your methods because for sure I'm not able to create something all by myself :)
Using this method of the hidden knobs means that if you need to run contemporary two samplers (for example sustain and release) you have to set 2 different hidden knobs? One for each sampler? -
@d-navarra said in Sofia Woodwinds on github:
Right now I'm honestly focused on resampling some patches which are for windows only and import them in Rhapsody in order to be used natively in Linux for my personal needs.
Someone already made a Rhapsody version of VSCO strings: https://youtu.be/n3RKGrUa7EQ?si=IIxmA3_npKGjgHF1
And there is a more full VSCO HISE project here - https://musictop69.wixsite.com/orchestools/orchestools-two
@d-navarra said in Sofia Woodwinds on github:
Did you do any specific tutorial which might help me better understand these concepts?
I use this stuff in a lot of my videos. I can't think of a specific one at the moment, perhaps the "Knobs" videos... I think also this is a good video for getting started with: https://youtu.be/hD1RWA5fwRQ?si=6S7qAZf8wwT0iqGT
@d-navarra said in Sofia Woodwinds on github:
you have to set 2 different hidden knobs? One for each sampler?
You can if you want, but I just use one - take a look at the Sofia Woodwinds code (or one of my other instrument projects) to see what I'm doing there.
-
@d-healey said in Sofia Woodwinds on github:
Someone already made a Rhapsody version of VSCO strings: https://youtu.be/n3RKGrUa7EQ?si=IIxmA3_npKGjgHF1
And there is a more full VSCO HISE project here - https://musictop69.wixsite.com/orchestools/orchestools-two
The Orchestools project is very nice and it's the vst which lead me to HISE :)
Anyway is not a Rhapsody instrument but I read on its forum that the developer is working on a new version.
I have to check the Open Strings, btw both projects are focused on orchestral ensemble while I'm currently focused on the solo instruments.@d-healey said in Sofia Woodwinds on github:
You can if you want, but I just use one - take a look at the Sofia Woodwinds code (or one of my other instrument projects) to see what I'm doing there.
I checked this project of yours:
https://codeberg.org/LibreWave/TheShepherdsFlute
Your projects are quite complex for me of course, but for sure I should be able to understand the Interface and try to reuse most of its structure, at least I hope.
Might you point me where exactly to find the hidden knob you use to switch the samplemaps?I took a look at the samplers and I've noticed that compared to the Sofia Woodwinds there isn't any for the release, did you replace it with some scripting?
I also noticed you still use one for sustain and one for transitions but the structure is different and you replaced staccato and flutter with an all in one called articulations.
So I tried to test it with my violin samples and put the staccato in the transitions and articulations samplers (didn't know where to put the release) but it didn't work out well of course... Could you explain me how these samplers are supposed to work? -
@d-navarra said in Sofia Woodwinds on github:
Might you point me where exactly to find the hidden knob you use to switch the samplemaps?
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
@d-navarra said in Sofia Woodwinds on github:
there isn't any for the release, did you replace it with some scripting?
If I remember correctly the samples for that library are very dry so the ADSR is enough for handling the release sound.
@d-navarra said in Sofia Woodwinds on github:
I also noticed you still use one for sustain and one for transitions but the structure is different and you replaced staccato and flutter with an all in one called articulations.
Every instrument is different.
@d-navarra said in Sofia Woodwinds on github:
Could you explain me how these samplers are supposed to work?
Not off the top of my head, I'd need to go back to the projects and see what I did. There will be different group configurations depending on the number of RRs and articulations and stuff like that. I may have integrated the group switching for articulations into the RR handler or I may be using a separate group switcher. There's no one size fits all so each project is tailored to the specific instrument and sample sets.
-
@d-healey said in Sofia Woodwinds on github:
Not off the top of my head, I'd need to go back to the projects and see what I did. There will be different group configurations depending on the number of RRs and articulations and stuff like that. I may have integrated the group switching for articulations into the RR handler or I may be using a separate group switcher. There's no one size fits all so each project is tailored to the specific instrument and sample sets.
Ok, I'm trying to understand the logic behind your method of using modules and scripts. The emerald flute uses the same structure as the other flute while I've noticed in the free trumpet you don't use the transitions, is this due to your new version of legato which doesn't require the transition sampler?
-
@d-navarra said in Sofia Woodwinds on github:
is this due to your new version of legato which doesn't require the transition sampler?
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.
-
@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.