Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 03-17-2020, 08:36 PM   #81
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

How many samples would be required? Let us assume n, a command line tool creating from 1 sample n differently amplified versions, putting all into RS5k and theoretically it should work somehow.

Take any single sample, make a fine amplification version of it. Some randomization effects could improve a bit more, pitch shift tiny amounts up or down, pan tiny amounts left or right, vibrato longer notes for example. Even the timing could be changed by tiny amounts. What is the correct "tiny amount" needs to found out first.

Example:
Take some bongo or percussion kind of sample, apply above trick. Then start tapping on the table, audio to midi. If this would work nicely, you could apply this technique to any percussion sample and getting more realistic results without requiring any complicated devices, a single microphone would do the job. A compressor up or down, could help finetuning as well.
TonE is offline   Reply With Quote
Old 03-17-2020, 08:45 PM   #82
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by Vagelis View Post
Nice work man thnx!!

About the bezier curve that you mention on start , it's pretty easy to implement a 3 point Bezier with adjustable curve, i made it lately in Reaktor for a project that i 'm working on with the following equation:



e.g x0-y0=start point, x1-y1= middle point to adjust the curve, x2-y2=end point.

Here's how it looks
https://imgur.com/a/cTR5OpO?fbclid=I...guw5s6IK8ri_EE
Would bezier be the best trick for appling some inertia to any slider, as jsfx?
TonE is offline   Reply With Quote
Old 03-18-2020, 03:00 AM   #83
Vagelis
Human being with feelings
 
Vagelis's Avatar
 
Join Date: Oct 2017
Location: Larisa, Greece
Posts: 3,782
Default

Quote:
Originally Posted by TonE View Post
Would bezier be the best trick for appling some inertia to any slider, as jsfx?
No idea how it works in Jsfx. In reaktor in order to apply inertia to a slider, first you pass the value throught a lowpass filter, the in goes to the slider and the filter freq controls the amount of inertia.
Vagelis is online now   Reply With Quote
Old 03-18-2020, 06:51 AM   #84
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by TonE View Post
Would bezier be the best trick for appling some inertia to any slider, as jsfx?
On a first approach, I'd definitely go for a low pass filter too, this is how you usually implement inertia the easy way in 3D games for example. You need to perform these operations with time tracking in mind, using the time_precise function. Something like :

Code:
t          = time_precise()
dt         = last_t - t
last_t     = t
alpha      = dt / (dt+inertia)
new_val    = (1 - alpha) * old_val + alpha * target
old_val    = new_val
This would give you some exponential inertia ; it would generate quite a bunch of midi events, and you should take care of handling correctly the convergence to avoid spawning and infinite number of events (test that you're very close to the target, and snap at the end).

Do you think that adding inertia to the plugin is a worthy addition?
Talagan is online now   Reply With Quote
Old 03-18-2020, 08:28 AM   #85
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Oh, I asked here, because I saw the formula above, I was asking generally, applying to any variable, represented as slider, could be anything here or elsewhere.

But my idea is coming originally from here: https://forum.cockos.com/showthread.php?t=232933

How would I connect new_value (I guess) above to a slider, e.g. slider1?
Something like:

slider1:new_value=1<{0,1,1}>Sent Status

I liked with bezier example, the user could adjust the curve to taste, meaning the inertia amount.

I would protect the output just by doing modulo something, if there is nothing against that method.
TonE is offline   Reply With Quote
Old 03-18-2020, 08:43 AM   #86
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Regarding this thread, Midi CC Mapper X, I would like to see some example templates, you could remove all items/media, and vsti, adding instead some reasynth or Synth1,Dexed,SQ8L or so, just having some examples what are typical use case scenarios.

I like e.g. how Song Switcher has beautiful examples, not as templates, initially, only images, later even an .rpp was added to its thread, something like this would be cool here as well. see https://forum.cockos.com/showthread.php?t=181159 link to image, see https://imgur.com/ZnFMX4B link to example project, see https://forum.cockos.com/attachment....5&d=1566514382
TonE is offline   Reply With Quote
Old 03-18-2020, 08:55 AM   #87
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Your tool can be used for any midi event, not only CC or velocity, using a tiny trick after that, something like pizmidi midiConverter3, and converting the cc or velocity e.g. to pitchbend. Then you would apply all those curves to pitchbend, or anything else supported by midiConverter3. Writing here just to share this idea, as another (tricky) use case.
TonE is offline   Reply With Quote
Old 03-19-2020, 12:32 AM   #88
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by Talagan View Post
On a first approach, I'd definitely go for a low pass filter too, this is how you usually implement inertia the easy way in 3D games for example. You need to perform these operations with time tracking in mind, using the time_precise function. Something like :

Code:
t          = time_precise()
dt         = last_t - t
last_t     = t
alpha      = dt / (dt+inertia)
new_val    = (1 - alpha) * old_val + alpha * target
old_val    = new_val
Should I put above code under @block or @init or both?
TonE is offline   Reply With Quote
Old 03-19-2020, 12:57 AM   #89
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Ok it seems I do not need this technique, just found out the 'time gap' between note events seems to have and influence how long the triggered fx will be active, so this is my inertia, if I want longer fx, I should increase this gap, else shortening the gap.

Using this technique probabilistic notes, e.g. generated via ReaRack3 Random Note Gate, by master Time Waster, can be used for triggering fx parameters, thus making those parameters also probabilistic, e.g. increasing Reverb Wet amount. Great.

However it would be still useful to know how to add inertia to any slider, making it slower while changing its values.
TonE is offline   Reply With Quote
Old 03-19-2020, 02:33 AM   #90
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hi TonE, thanks again for you "brainstorm" feedback, ideas and all

In the example above, the slider would give you the "target" value. This is were you want to slowly go from current_val, due to inertia. Every call to the time loop, you want to update the current value of your parameter to converge more to your target. So the above code has to be called "every time frame" to update the current value, that means as often as possible, so theoretically in the @block or in the @sample. But I've never tested this approach, I don't know if it's reasonable to spawn so many midi events (at each @block call). The other potential problem I see is that it should probably be better to evaluate dt (the delta time since last call) by counting the elapsed samples, and not relying on the time functions of the API which are not "deterministic" on replay.
Talagan is online now   Reply With Quote
Old 03-19-2020, 02:44 AM   #91
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

@TonE, regarding this inertia problem, it's a bit off-topic now so I propose to continue the discussion in your other thread https://forum.cockos.com/showthread.php?t=232933 I'm going to write you a working example there.

Last edited by Talagan; 03-19-2020 at 02:52 AM.
Talagan is online now   Reply With Quote
Old 03-23-2020, 03:44 AM   #92
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Quote:
Originally Posted by Talagan View Post

What I'd propose instead (and hope it would cover the vast majority of use cases), is some kind of "clamping" feature. You'd only set a minimum and maximum boundaries for your curve by providing a floating number for the min and the max, between 0 and 1 ; the pen draw would be restricted to that zone, and if you click on one of the curve from the library, it would be deformed to fit in between min and max. Additionaly (maybe, to be discussed), a hint would be given in the UI to indicate the MSB (and LSB, if pertinent) corresponding to these min/max boundaries, if you really need that precise info. Of course, it's a proposition and open to discussion too

Ben

Ehi thank you Talagan, it seems a really good workaround.


In a few words you use percentage to bypass the multiple precision. Maybe you could let insert percentage values with a good precision instead of floating numbers. It could be more intuitive.


I also think that showing the conversion in midi values would be a very useful feature. After all you are already performing the conversion under the hood so you only have to show it.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 03-29-2020, 09:16 PM   #93
Dex
Human being with feelings
 
Join Date: Sep 2017
Posts: 518
Default

Quote:
Originally Posted by Talagan View Post
Regarding the first feature, channel routing, I think it's doable, the trickiest part being having a clear, self-explanatory UI. As I see it (which is pretty much what Dex has described), I'd go for an additional parameter for the MIDI src, with its mate parameter for the MIDI dst, the second one being "scoped" by the first one :
  • Possible values for the "channel" src param : "ANY" (or "ALL"), 1, 2, 3 .... 16
  • Possible values for the "channel" dst param :
    • If src = ANY, then no choice is offered, the behavior is "same as src"
    • If src = 1,2, ..., 16, then anything from 1,2 .... 16 is offered

I make these remarks because if the [ANY -> 1-16] or [1-16 -> ANY] configurations were offered, it would mean channel merging or inversely message duplication, and I'm not totally sure it is in the spirit of the plugin (or useful in some circumstances). For example, the plugin does not offer CC message duplication (one CC to multiple CCs) ; that's why I'd stick to a "one src to one dst" scheme. But this is open to discussion and I'd like your opinion :-)
Yes, that's exactly right.

If CC merging or splitting needs to be done, it can be done with a different plugin before this one in the chain.

Thanks!
Dex is offline   Reply With Quote
Old 03-31-2020, 10:47 AM   #94
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Dear all,

Here's a new version (3.3) enhanced with the excellent recent suggestions from Dex, DANIELE and TonE ; it adds some channel routing options, as well as MIDI values restriction for the curves, plus a small number of fixes and enhancements. While not everything is possible regarding channel routing, it offers imho a decent number of options without breaking the initial logic. Channel routing may be defined individually for each CC, but also for the green and red parts of the keyboard. This allows keyboard splitting between channels, whereas originally, the plugin would only allow to drop the red part (which is still the current default behaviour).

In addition, you can now set some min/max limits for the MIDI output range. This will clamp the current curve, but also restrict the pen drawing to the allowed space, and all pre-defined curves will now be applied to the restricted space, so that it offers a lot more of possibilies with simple interaction.

@DANIELE, I've changed my mind regarding the input mode of the min/max values ; it was easier and cleaner to enter midi values directly. The min/max widgets will offer MSB or MSB+LSB tweaking depending of the resolution of the output (low/high).

Hope you'll enjoy! Many many thanks for the latest suggestions.

Ben

----

Complete changelog for 3.3

Fix : HighRes midi velocity was not properly handled for MSB 1, LSB 0.
Fix : Highres midi velocity LSB was not sent on the proper CC (#88).
Added a "pen" button to trigger pen mode, to avoid accidental clicks on the curve
Added channel routing options for notes and ccs.
Added firewall option for unrouted notes.
Since red keys may now be kept due to channel re-routing, added an option to select what keys are transposed (All/Green/Red)
Since red keys may now be kept due to channel re-routing, added an option to select what keys are affected by the velocity control (All/Green/Red)
Added curve mih/max behaviours : the user can now set some min/max limits on the curve, so that the curve is clamped between those bounds. Predefined curves will be adapted to that range and pen drawing will be restricted to that range too.
And a bit of source code cleaning.

Talagan is online now   Reply With Quote
Old 04-01-2020, 02:13 AM   #95
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Ehi looks amazing!! Thank you Talagan, I'll try it as soon as I can.


Only one question: I originally installed it directly without using Reapack, now I'd like to install using that but by doing this I'll loose all the settings and probably all my actual track sets in my template.


Is there a way to do the change seamlessly?


Thank you again for your amazing work. Actually it is a core plugin in my templates.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 04-01-2020, 04:13 AM   #96
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Worth linking here*
https://forum.cockos.com/showthread.php?t=123475

Kawai K4 manual has some nice velocity curve examples with explanations where they can be useful. Can we save user curves here as well? There seem to be 10 more square spaces free? You could take any curve image as background, then designing/replicating that curve here, then saving as permanent preset for the future. But those available should be enough. I guess the presets should save already all made changes. Thanks a lot for all the improvements.

* Liked this comment under last youtube there:
wow, I'm impressed. that's the mother of midi setups...he must have about 30 sound modules linked to volume pedals via programmable/present tone banks routed via reverb and delays then into a mix desk....or a digitized version fun by a mac/ midi controller. he has every sound playing at once but fades them in or out via pedals...now that's clever....and remembering each pedal for each sound module...that's also clever....bit like watching an organist in church...what a great use of technology and really understanding your 'kit'. and then having the talent and taste to create something wonderful with it all.....what a guy.

Last edited by TonE; 04-01-2020 at 04:26 AM.
TonE is offline   Reply With Quote
Old 04-01-2020, 04:34 AM   #97
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by DANIELE View Post
Only one question: I originally installed it directly without using Reapack, now I'd like to install using that but by doing this I'll loose all the settings and probably all my actual track sets in my template.


Is there a way to do the change seamlessly?
Rename your jsfx to originalname_something.jsfx, then they will not overlap in future. Just one idea.
TonE is offline   Reply With Quote
Old 04-01-2020, 09:16 AM   #98
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Quote:
Originally Posted by TonE View Post
Rename your jsfx to originalname_something.jsfx, then they will not overlap in future. Just one idea.

Thank you but I really need them to overlap, I try to explain better.


I have a template with many tracks with this plugin on configured on my needs, if install the reapack version it doesn't replace the old one. I find the old one missing if I load my template and I really need for it to replace the old one to inherit the settings, without the needs to set everything from scratch.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 04-01-2020, 11:24 AM   #99
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

@DANIELE, I've took quite some time to make the updates work seamlessly between versions, so I hope it won't break anything. But be sure I had that problem in mind.

What you can do for testing is to update through reapack to 3.3, load your project and see if all is well. If there are some problems, DON'T SAVE, revert through reapack to 3.2 (it's possible to switch between versions, this is why reapack is so cool ; in Browse Packages > Right Click > Versions > 3.2 + Reaper restart).

Make a backup of your project before doing anything to be sure.

Tell me if all goes well!

EDIT: Oops, I've read your message too quickly. Let me investigate further to find a solution for your case.

EDIT2 : Ok, so this is what I've found, maybe there's a better solution, IDK (if someone reads this and has a good experience on that matter?). The solution I have found is the following :

1 - Make a backup of your project.
2 - Install the 3.3 script through Reapack.
3 - Open your project RPP file with a text editor (textmate under MacOS, notepad++ under windows, etc).
4 - Find how the effect was referenced in your project ; it should be something like :
<JS "the_file_name_of_the_old_midi_mapper_x_jsfx_in_yo ur_reapers_library_directory.jsfx" ""
5 - Replace all occurences of :
"the_file_name_of_the_old_midi_mapper_x_jsfx_in_yo ur_reapers_library_directory.jsfx"
by
"ReaTeam JSFX/MIDI/talagan_MIDI CC Mapper X.jsfx"
6 - Save the RPP
7 - Reopen with reaper, and check if it works.
8 - Then, you can probably remove the old JSFX file from your library.

Last edited by Talagan; 04-02-2020 at 12:52 AM.
Talagan is online now   Reply With Quote
Old 04-01-2020, 12:06 PM   #100
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by TonE View Post
Worth linking here*
https://forum.cockos.com/showthread.php?t=123475

Kawai K4 manual has some nice velocity curve examples with explanations where they can be useful. Can we save user curves here as well? There seem to be 10 more square spaces free? You could take any curve image as background, then designing/replicating that curve here, then saving as permanent preset for the future. But those available should be enough. I guess the presets should save already all made changes. Thanks a lot for all the improvements.
@TonE, you're challenging! Thanks a lot for all those remarks/comments/reactions, this is really helpful! I really need to take some time to think about those ideas and if it's achievable (like extending the default lib with custom user templates). I'll look into it during the next upcoming days!
Talagan is online now   Reply With Quote
Old 04-01-2020, 04:10 PM   #101
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

"You could...", I meant here of course "We could...", applied to anyone. So we can do this already, just make your window half transparent so you can see the background Kawai K4 manual for example, move and resize so both curves are in same place, then continue designing in your tool, making them match as good as possible, then saving as preset should do the trick, I guess.

I should do a youtube of this example, maybe.
TonE is offline   Reply With Quote
Old 04-02-2020, 12:14 AM   #102
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Quote:
Originally Posted by Talagan View Post
@DANIELE, I've took quite some time to make the updates work seamlessly between versions, so I hope it won't break anything. But be sure I had that problem in mind.

What you can do for testing is to update through reapack to 3.3, load your project and see if all is well. If there are some problems, DON'T SAVE, revert through reapack to 3.2 (it's possible to switch between versions, this is why reapack is so cool ; in Browse Packages > Right Click > Versions > 3.2 + Reaper restart).

Make a backup of your project before doing anything to be sure.

Tell me if all goes well!

EDIT: Oops, I've read your message too quickly. Let me investigate further to find a solution for your case.

EDIT2 : Ok, so this is what I've found, maybe there's a better solution, IDK (if someone reads this and has a good experience on that matter?). The solution I have found is the following :
  • 1 - Make a backup of your project.
    2 - Install the 3.3 script through Reapack.
3 - Open your project RPP file with a text editor (textmate under MacOS, notepad++ under windows, etc).
4 - Find how the effect was referenced in your project ; it should be something like :
<JS "the_file_name_of_the_old_midi_mapper_x_jsfx_in_yo ur_reapers_library_directory.jsfx" ""
5 - Replace all occurences of :
"the_file_name_of_the_old_midi_mapper_x_jsfx_in_yo ur_reapers_library_directory.jsfx"
by
"ReaTeam JSFX/MIDI/talagan_MIDI CC Mapper X.jsfx"
6 - Save the RPP
7 - Reopen with reaper, and check if it works.
8 - Then, you can probably remove the old JSFX file from your library.

Thank you for your kind answer.


I already did this, I downloaded the plugin from Reapack and I noticed that the file name was different, this is why it didn't replaced the "normally installed" one. I already managed to install 3.3 normally (and it works great by the way, the midi value limit is truly a game changer!!).


I also tried to open my RPP project with Notepad++ and I remember I tried to replace the string I thinked was the one to be replaced. What I did wrong probably is not replacing it well or non replacing the right one.


I'll try this evening, after work, your suggestion and I'll let you know.


Many thanks again for your help.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 04-02-2020, 12:58 AM   #103
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by DANIELE View Post
I also tried to open my RPP project with Notepad++ and I remember I tried to replace the string I thinked was the one to be replaced. What I did wrong probably is not replacing it well or non replacing the right one.

I'll try this evening, after work, your suggestion and I'll let you know.
Ok! Maybe it's worth noting that Reaper does not always put double quotes around parameters in its ini/RPP files, for example, when the parameter has no spaces, the double quotes are often omitted. So don't forget to have them around the Reapack jsfx name.

Also, to retrieve the "good" name for the Reapack version of the jsfx, you can get a clue in two ways : create an empty project with an empty track, add the Reapack version of the jsfx, save, open the RPP with notepad++ and look for the good string. Or, you can open the reaper-jsfx.ini file located at the root of your REAPER user folder, it's the database that REAPER uses to track all installed JSFX, so the "good" name should be there (the old one too).
Talagan is online now   Reply With Quote
Old 04-02-2020, 01:37 AM   #104
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Quote:
Originally Posted by Talagan View Post
Ok! Maybe it's worth noting that Reaper does not always put double quotes around parameters in its ini/RPP files, for example, when the parameter has no spaces, the double quotes are often omitted. So don't forget to have them around the Reapack jsfx name.

Also, to retrieve the "good" name for the Reapack version of the jsfx, you can get a clue in two ways : create an empty project with an empty track, add the Reapack version of the jsfx, save, open the RPP with notepad++ and look for the good string. Or, you can open the reaper-jsfx.ini file located at the root of your REAPER user folder, it's the database that REAPER uses to track all installed JSFX, so the "good" name should be there (the old one too).

I'll do it and I'll let you know.


Thanks again Talagan.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 04-02-2020, 12:46 PM   #105
Dex
Human being with feelings
 
Join Date: Sep 2017
Posts: 518
Default

Quote:
Originally Posted by Talagan View Post
Here's a new version (3.3) enhanced with the excellent recent suggestions from Dex, DANIELE and TonE
<3 Thanks!
Dex is offline   Reply With Quote
Old 04-03-2020, 05:13 AM   #106
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Quote:
Originally Posted by DANIELE View Post
I'll do it and I'll let you know.


Thanks again Talagan.

I did it Talagan, it seems to work fine.


The only difference is that the original file didn't have the extension in the RPP it was only referenced with his name "MIDI CC Mapper X".


I replaced it with the correct name (extension included) and now it works.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 04-03-2020, 05:34 AM   #107
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Ok! Good news. I've listened to your soundtracks, you're doing an amazing job. I was really impressed, especially on your latest tracks, there's a lot details, intelligence in the choices, a big amount of work on the articulations, relief and overall coherency. Keep on doing great things!
Talagan is online now   Reply With Quote
Old 04-03-2020, 06:38 AM   #108
DANIELE
Human being with feelings
 
DANIELE's Avatar
 
Join Date: Aug 2015
Location: Florence, Italy
Posts: 463
Default

Quote:
Originally Posted by Talagan View Post
Ok! Good news. I've listened to your soundtracks, you're doing an amazing job. I was really impressed, especially on your latest tracks, there's a lot details, intelligence in the choices, a big amount of work on the articulations, relief and overall coherency. Keep on doing great things!

Thank you so much. Well I must say that I ended the last track a few days ago while the second last is from 2017. There was a big hole because I haven't had time to do other things.


This is why you feel differences, in the mean time I learned many things and I changed my instruments too.


I'm planning to remake many of my track due to this "learning" I acquired, especially the older ones, many of which are not even on the internet.



I recently ended a soundtrack for a short movie but it will be out with the movie.


I do this for hobby, I'm an engineer in "real life".



Thanks to you because your plugin gave me so many workflow improvements.
__________________
Audio: AKG-K240 MKII, Adam A7X, Audient iD22 - Steinberg UR22; Piano: Yamaha P-250 - NI S88 MK1;
!!DANIELE EPIC ORCHESTRAL MUSIC!! |*| STAR WARS SERIES
DANIELE is offline   Reply With Quote
Old 04-03-2020, 10:47 AM   #109
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

My question would be, is it possible adding feeling to cheap or free instruments? Possible, yes, no?
TonE is offline   Reply With Quote
Old 04-04-2020, 04:42 AM   #110
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by TonE View Post
Awesome video. Thanks for sharing. Vangelis amazes me here, it's awesome to see him performing live, it feels almost like some kind of vaudoo jazzy bardic magic!

Quote:
Originally Posted by TonE View Post
Kawai K4 manual has some nice velocity curve examples with explanations where they can be useful. Can we save user curves here as well? There seem to be 10 more square spaces free? You could take any curve image as background, then designing/replicating that curve here, then saving as permanent preset for the future. But those available should be enough. I guess the presets should save already all made changes. Thanks a lot for all the improvements.
This is something I had been considering a while ago, but had dropped the idea because the JSFX api has some limitations regarding file management. I could not find any way to call a file picker dialog on user interaction. But now that you've put the thing back on the table, I'm now pondering a system to allow the user to extend the library of predefined functions through additional files located in the DATA folder. The functions would be simple data tables with just a serie of y values in [0..1] for a fixed number of x values from [0..1] (it's how functions are stored internally in the plugin, they are pre-sampled and at execution some fast interpolation is made between the samples). We could even imagine having function packages of like 8 functions ; that way we could implement your "Kawai K4" set in a custom package, contributors could propose their own package, and users could of course have their own set of "preferred" curves. The other limitation is that it seems there's no way to "dump" something into a file from a JSFX. Reaper does not seem to allow to file_open in write mode outside of the @serialize section.

Last edited by Talagan; 04-04-2020 at 02:00 PM.
Talagan is online now   Reply With Quote
Old 04-04-2020, 10:29 PM   #111
mschnell
Human being with feelings
 
mschnell's Avatar
 
Join Date: Jun 2013
Location: Krefeld, Germany
Posts: 14,636
Default

Quote:
Originally Posted by TonE View Post
Kawai K4 manual has some nice velocity curve examples with explanations where they can be useful. Can we save user curves here as well?
IMHO Velocity curves in a Midi Filter only make sense with high resolution Midi. But unfortunately there are very few sound generator plugins that digest high resolution velocity. Hence Velocity curves need to be done in the sound generator plugin.

-Michael
mschnell is offline   Reply With Quote
Old 04-05-2020, 12:29 AM   #112
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,193
Default

Quote:
Originally Posted by Talagan View Post
The other limitation is that it seems there's no way to "dump" something into a file from a JSFX. Reaper does not seem to allow to file_open in write mode outside of the @serialize section.
Completely uneducated idea but how does Super 8 create files? I remember seeing this:

// export must happen from UI thread
function export() local(rec, flag)
(
// export, yay reaper 5.05 undocumented function!
rec = mem_stlist;
flag=1<<16; // go to end of project
flag|=2<<16; // use tempo from next parameter
g_length > 0 ? loop(g_nchan,
rec[st_state] ? (
export_buffer_to_project(rec[st_buf]+g_offs,g_length,1,srate,(rec-mem_stlist)/st_num, flag, flag?estbpm(g_length));
flag=0; // only go to end/set tempo for first item
);
rec+=st_num;
);
);

g_need_export ? (
export();
g_need_export = 0;
);


No idea if that tells you anything or not
Fergler is offline   Reply With Quote
Old 04-05-2020, 03:53 AM   #113
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Quote:
Originally Posted by Fergler View Post
Completely uneducated idea but how does Super 8 create files? I remember seeing this:

<snip>

No idea if that tells you anything or not
Rotfl, what's that *export_buffer_to_project*, the super secret hidden undocumented api function Ok, more seriously, it looks like it was introduced especially for the Super 8 looper a few years ago and it has not been documented yet so imho it was originally introduced for a "proof of concept" purpose. As I understand it, it allows to pass a buffer of samples directly to some reaper tracks, which is not really what I need here, so sadly I don't think it will be of any use.

But happily, after digging for a while the forum, it looks like that kind of problems have arisen a few times yet, and there's a good way to do this : have a lua companion reascript that communicates with the JSFX through gmem and defer the export to the lua reascript world. I'm going to work on this.

Anyway, thanks a lot @Fergler for your comment! Quite refreshing and enriching regarding the hidden corners of REAPER's api
Talagan is online now   Reply With Quote
Old 04-10-2020, 03:36 PM   #114
Fergler
Human being with feelings
 
Fergler's Avatar
 
Join Date: Jan 2014
Posts: 5,193
Default

All I do is copy paste code so I feel honoured to have helped in some way.
I remember the above because I was trying to edit the features of Super 8 ... realized I was in -a bit- over my head.
Fergler is offline   Reply With Quote
Old 04-26-2020, 01:28 PM   #115
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hey all, announcing 3.5!



Changelog :
  • Function library system : functions are stored in a function lib with sets that are extensible
  • Parametric sets : some sets are parametric, they can be used to generate an infinite number of curves
  • User sets : the user can now import her/his own curves in the library
  • Function export : MIDI CC Mapper X is now shipped with a script that exports the current curve
  • Added support for all notes within the MIDI range (0-127).
  • Bug fix for notes that could be transposed outside of midi range.

This is a big release, since I've reworked the curve system after the recent discussions. Many thanks to the recent contributors in this thread as your remarks were really helpful!

How to install

Install or update through ReaPack

Warning! It's now strongly discouraged to install MIDI CC Mapper X without ReaPack. Since it comes with a lot of files (like eighty...) it would be a nightmare to install it manually. Also, be sure to restart REAPER after update to avoid strange behaviors.

Here are the two main points in this release :

1) The curve system

Until now, MIDI CC Mapper X would provide a small number of logical functions based on common curves from [0..1] to [0..1]. They were there almost from the start, and it was sufficient for my personal needs at first, and also for delivering a proof of concept. But from the recent remarks, as I understood, there would remain a lack of user customization, you could not really do "what you exactly want" with the curves. So I've tried to work on that part, to make the plugin more flexible and extendable.

Under the hood, curves are now loaded from files located in :
<RESOURCE>/Data/talagan_MIDI CC Mapper X
These files are referenced from a root lib.txt file that you can supersede by a user_lib.txt file where you can rearrange everything. That means you can potentially add your own curves as long as you respect the file format. Curves are grouped by "function sets", and these sets appear as tabs. So you can rearrange the tabs, remove some or create some.

For more information, if you want to tweak things, you can have a look at :
<RESOURCE>/Data/talagan_MIDI CC Mapper X/README.md
Additionally, I've added some special function sets which are parametric. They behave as function families, and each one can be modulated through a parameter. By changing the parameter value, the whole family changes.

There are currently three families available : one based on x^n, one based on exp(n.x) and one based on linear schemes with a "cut" position - that one is oriented towards very logical purposes. This is what they look like :



Also, non-parametric functions (loaded from data files) are provided by default. One is based on sin(x), one is a collection of smooth steps from order 0 to 14, one is based on quarters of circles and one (special dedication to @TonE) is an example of exotic user set, based on the Kawai K4 manual p44.



I think it offers a good flexibility now. Function families offer almost an infinite number of variations, each family having its own identity (mainly, it's the shape of the main "belly" that will decide everything). The range of values can be limited with the "curve limits" widget, so the functions will be adapted within that range, giving a lot more of possibilities. Functions can be smoothed by the smooth tool, and they can still be "prototyped" with the pen tool.

Ah, and you can now export a function to a file thanks to a provided lua script (for example if you've prototyped a function that you like, and want to put it in a custom set for re-use). That script is reachable from the action list panel : search for MIDI CC Mapper X.

I wanted to have a system which is really really fast to use but stays analogical and works by feeling, but if you really need to do something precise, you still can. Hope the purpose is fulfilled!

2) Full MIDI range note support

Thanks to Fergler for reporting this to me! I had limited the use of MIDI CC Mapper X to a standard 88 keys MIDI controller, making it unusable outside that range (undefined behaviour, and maybe even buggy). This limit is now extended to the full 0-127 range (the Keyboard Filter widget can now be panned to configure all MIDI octavi).

Hope you'll enjoy this new release!

Last edited by Talagan; 04-26-2020 at 01:58 PM.
Talagan is online now   Reply With Quote
Old 04-27-2020, 08:57 AM   #116
Broojacker
Human being with feelings
 
Join Date: Apr 2016
Location: Ukraine
Posts: 49
Default

Great improvement, thanks Talagan!
__________________
soundcloud
Broojacker is offline   Reply With Quote
Old 04-27-2020, 02:35 PM   #117
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Dear Talagan,
thanks for the improvements, seeing 1989 old synth K4 directly inside this tool is cool, thanks, fitting also to your previous mentioning of Kawai below, dedicated to Kenji Kawai. Curves 5 and 6 when combined together can be interesting, one for the lower velocities without the max range (no attack sounds), another only max range (attack sounds). Whatever extra one would like to add to curve 6 one can easily design now, it can be some extra drums, or some more brilliant sounds.

Last edited by TonE; 05-25-2020 at 05:34 AM.
TonE is offline   Reply With Quote
Old 05-24-2020, 04:46 AM   #118
Broojacker
Human being with feelings
 
Join Date: Apr 2016
Location: Ukraine
Posts: 49
Default

Hey, Talagan, it`s possible to make any actions pass through your plugin to main window? Now I need to select track or arrange window before press spacebar or any other key.
__________________
soundcloud
Broojacker is offline   Reply With Quote
Old 05-24-2020, 04:51 AM   #119
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 293
Default

Hi Broojacker,

Not sure to understand what you mean exactly. You mean that the plugin is capturing all keyboard events and does not restore them to REAPER in the back when the plugin is focused?

Last edited by Talagan; 05-24-2020 at 05:00 AM.
Talagan is online now   Reply With Quote
Old 05-24-2020, 05:07 AM   #120
Broojacker
Human being with feelings
 
Join Date: Apr 2016
Location: Ukraine
Posts: 49
Default

Quote:
Originally Posted by Talagan View Post
plugin is capturing all keyboard events and does not restore them to REAPER in the back when the plugin is focused?
Yes, exactly!
__________________
soundcloud
Broojacker is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 07:02 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.