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

Reply
 
Thread Tools Display Modes
Old 02-23-2024, 02:37 PM   #41
Spookye
Human being with feelings
 
Spookye's Avatar
 
Join Date: Jul 2018
Location: Torino, Italia
Posts: 766
Default

Thanks @Talagan...... amazing compact tool. Truly a beautiful jewel. Thanks thanks thanks
__________________
Cupboard Home Studio YT
https://www.youtube.com/channel/UCm8...X1912MA260ELzg
Spookye is offline   Reply With Quote
Old 02-24-2024, 12:24 PM   #42
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

Quote:
Originally Posted by inthevoid View Post
@Talagan - All I have to say is a huge THANK YOU for this script! You have created an absolutely essential MIDI script here.
Couldn't agree more!


One question for the insertion of the JSFX. It happens on every track, when OSS is launched, right? As far as I can tell, the JSFX are not removed automatically, when closing the script. Is that correct? (I noticed that there's a cleaner script in the action list)

Just a thought: how about removing all JSFX, when closing OSS?
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 02-24-2024, 12:37 PM   #43
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Thank you guys for all the positive comments and encouragements !!!

Quote:
Originally Posted by _Stevie_ View Post
One question for the insertion of the JSFX. It happens on every track, when OSS is launched, right? As far as I can tell, the JSFX are not removed automatically, when closing the script. Is that correct? (I noticed that there's a cleaner script in the action list)

Just a thought: how about removing all JSFX, when closing OSS?
That's an excellent question ! The main reason is that I cannot do the add/remove JSFX operations silently (regarding the undo stack) with Reaper's API. So the cleanup will always add an undo point in the undo stack, and if one wants to correct the last inputs he/she made with OSS after closing, he/she could be surprised by the undo operation not doing what is expected.

But the tool has already evolved, and now there's an option to backup/remove the playback marker at closing, which adds an undo point in the undo stack too. So... maybe it's become less relevant now. I think I should add an option to do the cleanup, that would be enabled by default.

We've already made a request to add a mechanism to the API to give more control on the undo stack, but it's probably complicated to implement (undoing things is always a tricky subject when it comes to dev).
Talagan is offline   Reply With Quote
Old 02-24-2024, 12:55 PM   #44
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

Ahh, gotcha, now it makes sense!

Yeah, over the years I got the feeling that "undo" is not something the devs want to touch.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 02-24-2024, 01:00 PM   #45
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default



Option ready for next release (in a few days) ! Thank you Stevie for putting the issue back on the table !
Talagan is offline   Reply With Quote
Old 02-24-2024, 01:06 PM   #46
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,756
Default

Very nice script, thank you!
sinkmusic is offline   Reply With Quote
Old 02-25-2024, 07:27 AM   #47
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

Quote:
Originally Posted by Talagan View Post


Option ready for next release (in a few days) ! Thank you Stevie for putting the issue back on the table !
You're welcome and thanks!


This is completely unrelated but I got an idea yesterday that I wanted to share. It would be something like a "time selection mode".

Let's assume we want to step record a strings or woodwinds run and it should end within a certain amount of time (like a time selection that we set). We would then play the notes/scale and OSS would fill/squeeze the notes into the time selection, every time we add a new note.

Maybe this is something that you want to add at some point!
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom

Last edited by _Stevie_; 02-25-2024 at 07:49 AM.
_Stevie_ is offline   Reply With Quote
Old 02-25-2024, 08:48 AM   #48
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Much interesting idea ! Although it might be a little bit hard to make this cheap on clicks, the minimum would be to be able to define a start point and an end point (knowing that the last note should probably be excluded) and put OSS into "stuff" mode. It would also be probably limited to notes of same length (because the length of the notes to add have to be deduced from what's already in the time selection...), so if you want to make your run change its feel (with accelerating n-tuplets e.g.) it's going to be a bit limited. Actually my flow with OSS would be this, atm :



using the compression tool from Reaper - because step input gives you quantized things, this makes subsequent tools far more powerful and easy to use... But still it could be fun to have a mechanism to stretch/squeeze selected things simply with the sustain pedal...

Last edited by Talagan; 02-25-2024 at 08:56 AM.
Talagan is offline   Reply With Quote
Old 02-25-2024, 09:05 AM   #49
Spookye
Human being with feelings
 
Spookye's Avatar
 
Join Date: Jul 2018
Location: Torino, Italia
Posts: 766
Default

....but...... the fact that it works wonderfully well also in E-Midi-Inline, do we want to say that?? Thanks @Talagan
__________________
Cupboard Home Studio YT
https://www.youtube.com/channel/UCm8...X1912MA260ELzg
Spookye is offline   Reply With Quote
Old 02-25-2024, 09:10 AM   #50
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Quote:
Originally Posted by Spookye View Post
....but...... the fact that it works wonderfully well also in E-Midi-Inline, do we want to say that?? Thanks @Talagan
Hahaha, totally costless side-effect ! Yes that's so cool indeed.
Talagan is offline   Reply With Quote
Old 02-25-2024, 11:40 AM   #51
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

Quote:
Originally Posted by Talagan View Post
Much interesting idea ! Although it might be a little bit hard to make this cheap on clicks, the minimum would be to be able to define a start point and an end point (knowing that the last note should probably be excluded) and put OSS into "stuff" mode.
Right, a time selection is the minimum prerequisite. But it could be like that, that the "stuff mode" could be called directly from the action list.
Then it would be:

- set TS
- call OSS in stuff mode
- enter notes
done

Quote:
Originally Posted by Talagan View Post
It would also be probably limited to notes of same length (because the length of the notes to add have to be deduced from what's already in the time selection...), so if you want to make your run change its feel (with accelerating n-tuplets e.g.)
Hm yeah, I see what you mean. I would even assume, that there are no notes in the TS. And if there are, they would be deleted or an error message would pop up. That would be the nature of the stuff mode. Otherwise it would get too complex.
And if you want to add notes to existing notes (the example with accelerating n-tuplets), then just choose a later TS region containing no notes.

Quote:
Originally Posted by Talagan View Post
using the compression tool from Reaper - because step input gives you quantized things, this makes subsequent tools far more powerful and easy to use... But still it could be fun to have a mechanism to stretch/squeeze selected things simply with the sustain pedal...
That's exactly how I am doing it right now
It was just an idea to streamline that workflow by having the result already right there. No worries, if it is out of scope. Was really just an idea, because runs are always so time consuming to do.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 02-25-2024, 01:37 PM   #52
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Quote:
Originally Posted by _Stevie_ View Post
It was just an idea to streamline that workflow by having the result already right there. No worries, if it is out of scope. Was really just an idea, because runs are always so time consuming to do.
Actually, it is pretty inspiring. Meditating on these use cases, and then trying to find a more general model/context where they can all fit helps a lot shaping the right tool(s)... I have some ideas with a slightly different approach but need to think about it a little more .
Talagan is offline   Reply With Quote
Old 02-25-2024, 03:27 PM   #53
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

Awesome, looking forward to what you come up with
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 02-26-2024, 01:36 PM   #54
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

I've just released v0.9.4. A less major update (I haven't yet worked on the points arising from the recent discussions), but with a few bug fixes and more configurable things, here's the changelog :
  • [Feature] Added option to allow erasing note endings that do not match cursor when stepping back
  • [Feature] Keypress Mode : Added Sustain Inertia to detect held keys when pressing other keys (can be disabled)
  • [Feature] Added options to tweak Key Release / Key Press reaction times
  • [Feature] Added option to choose if input notes are selected or not
  • [Feature] Added option to automatically cleanup JSFXs on closing (thanks @stevie !)
  • [Feature] Added option to prevent notes from being inserted if the sustain pedal modifier key is pressed (this blocks insertion, useful in KP mode when starting an erase operation)
  • [Bug Fix] Project boundaries were not updated if the edited item was the last one and was extended (thanks @daodan !)
  • [Bug Fix] Reduced intensive CPU usage when OSS is running due to unuseful calls to Undo_Begin/End

Enjoy
Talagan is offline   Reply With Quote
Old 02-28-2024, 01:25 AM   #55
Hipox
Human being with feelings
 
Join Date: Apr 2022
Posts: 208
Default

Great work, Talagan! Thank you for implementing my feature request - works great, same as I imagined

Donation is on the way
Hipox is offline   Reply With Quote
Old 02-28-2024, 03:28 AM   #56
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Quote:
Originally Posted by Hipox View Post
Great work, Talagan! Thank you for implementing my feature request - works great, same as I imagined

Donation is on the way
Thank you @Hipox !! Glad it fulfils your expectations. I hope you'll enjoy the next features (new things are on the way).
Talagan is offline   Reply With Quote
Old 02-29-2024, 01:40 AM   #57
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Hey ! v0.9.5 is out.



Here's the changelog :
  • [Feature] Added pedal repeater
  • [Feature] Added insert/cursor mode (inserts + move things forward, deletes backwards)
  • [UI] Aded status icons for modifier modes/keys (insert / backward / insert+backward)
  • [Rework] Changed folder structure

Beware ! I've reworked the folder structure so if you've made shortcuts for sub actions (and also toolbar buttons for sub actions) they will not work anymore, you'll have to redefine / relink them. This does not apply to the main action however.

Two new major features, the first one being the pedal repeater to autofire the pedal if it remains pressed and avoid breaking one's ankle. The timings may be edited in the parameters (see screenshot above). In action :



Then, there's the insert mode. The insert mode may be activated using a modifier key (to be chosen in the Controls section of the settings). This will input notes as usual but push later ones. Notice the pink icon indicating the insert mode when the modifier key is pressed :



Of course, in insert mode, inserting rests will just move things forward :



And, in insert mode, going backwards (you can cumulate modifier keys) over notes will delete everything, just like a text cursor :



Enjoy !

Last edited by Talagan; 02-29-2024 at 01:54 AM.
Talagan is offline   Reply With Quote
Old 03-01-2024, 11:29 AM   #58
Daodan
Human being with feelings
 
Join Date: Jan 2011
Posts: 1,204
Default Cool!!!!

Keep rocking!

Some ideas/questions:
Is it possible to replace notes on insert mode rather that move?
Is it possible to insert notes smaller than grid size? For example insert 1/16 every 1/4. Good for drums sequencing.
Daodan is offline   Reply With Quote
Old 03-01-2024, 12:33 PM   #59
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Hi Daodan !

Quote:
Originally Posted by Daodan View Post
Keep rocking!
\m/

Quote:
Originally Posted by Daodan View Post
Is it possible to replace notes on insert mode rather that move?
Not possible yet (you have to delete in insert mode, then reinsert). But adding a new modifier key for replacing could be imaginable. That would make 3 modifier keys (go back, insert, replace) which is probably the maximum acceptable for such a plugin. Or that could be a togglable option, that would transform the cursor mode from insert/delete to replace forward/back (just like the insert key on a standard computer keyboard). Probably my preferred solution -> on the todo list.

Quote:
Originally Posted by Daodan View Post
Is it possible to insert notes smaller than grid size? For example insert 1/16 every 1/4. Good for drums sequencing.
Already possible, since you can use (by default) a custom length for the notes instead of the grid size.

Last edited by Talagan; 03-01-2024 at 12:45 PM.
Talagan is offline   Reply With Quote
Old 03-01-2024, 04:02 PM   #60
Daodan
Human being with feelings
 
Join Date: Jan 2011
Posts: 1,204
Default

Quote:
Originally Posted by Talagan View Post
That would make 3 modifier keys (go back, insert, replace) which is probably the maximum acceptable for such a plugin. Or that could be a togglable option, that would transform the cursor mode from insert/delete to replace forward/back (just like the insert key on a standard computer keyboard). Probably my preferred solution -> on the todo list.
Cool. I think both are good.
Quote:
Originally Posted by Talagan View Post
Already possible, since you can use (by default) a custom length for the notes instead of the grid size.
Sure but I mean use custom length for example 1/16 but different step size for example 1/4. Now if you want to put a 1/16 note at every 1/4 then you need to (input note, insert, insert, insert) X 4, instead of just input note 4 times.
It possible in native step input mode:

I think in OSS this can work the same way: value from the script UI as note length and project grid size as step size. Maybe as mode of "note length conf: Project" with checkbox to toggle it and with selectable note length as in default mode?

And now I think that maybe "note length conf: MIDI Item" should respect both Grid and Notes from Midi Editor. Isn't it?

And last FR:
Fixed velocity option. Input notes at maximum (for example) velocity no matter what actual velocity was. Again good for drums sequencing. Maybe checkbox or button to enable it and textfield where you can type in desired velocity value?
Daodan is offline   Reply With Quote
Old 03-02-2024, 02:37 AM   #61
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Yes, it's a bit hard to make a decision since OSS works mid-way between the arrange view and the MIDI editor (which may be unique or multiple depending on one's settings), and thus there are already two grid sizes (Project / MIDI item) and two note length params (OSS / MIDI item), so the current choice was to work only with note lengths (and unifying the grid length as a note length).

So maybe that needs to be rethought a bit to make things fit together, if I want to reintroduce the concept of grid in OSS.

ATM, when using OSS and if I'm synced with the grid anymore, I either use the pedal to advance to the next grid line (as you said) or if it's not possible (because not in phase), I just click on the grid line that I want to resync on (with magnet enabled).

But one of my goal is to prevent the user from having his/her right hand going from the MIDI controller to the mouse and back (because mouse tasks take time) so I've already had some questions arising in the same vein lately, which I'd call "navigation issues". So I'm introducing a concept in v0.9.6, which is "snappy navigation". ATM, it only works with note starts and ends but could be generalised to the project grid and the item grid (non exclusively) :



The pedal jumps to the next "snappy thing", ctrl+pedal jumps back to the preceding one. In your case (with grid snap on) that would reduce the interactions to : note input, magnetic rest input, note input, magnetic rest input, etc, which reduces interactions. An option to "magnetic jump automatically after insertion" (with grid snap on) would correspond to your example.

But since, the options are quickly growing in number, it starts to be a little headache to make everything work as expected in every mode (and sometimes it's hard to even define an expected behaviour at all )

Quote:
Originally Posted by Daodan View Post
And last FR:
Fixed velocity option. Input notes at maximum (for example) velocity no matter what actual velocity was. Again good for drums sequencing. Maybe checkbox or button to enable it and textfield where you can type in desired velocity value?
Yeah, it was already asked by Martin in the first answers, and I replied that ATM another plugin can be used in the input FX chain for this (e.g. MIDI CC Mapper X). But it's true I could add a simple widget (linear response, range limiter e.g. ?) for this purpose. There are pros and cons. The pros of using a dedicated input FX chain is that the conf is stored on the track... and I think it's more logical, because you want to recall those settings if you re-edit the track... but I could also do the same thing from within OSS... but then one would probably want to save conf templates for velocity... etc etc . ATM I'm stacking more things that popping them from the todo list, and should take a little care of not letting the tool explode and transmute into a Danaide's barrel

Cheers,

Ben
Talagan is offline   Reply With Quote
Old 03-02-2024, 04:50 AM   #62
Daodan
Human being with feelings
 
Join Date: Jan 2011
Posts: 1,204
Default

Quote:
Originally Posted by Talagan View Post
ATM I'm stacking more things that popping them from the todo list, and should take a little care of not letting the tool explode and transmute into a Danaide's barrel
Totally understand! Thanks for your work.
Daodan is offline   Reply With Quote
Old 03-05-2024, 07:01 AM   #63
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

@Daodan, regarding the enter note + snap grid issue, I think I'm slowly converging towards a convenient solution. But since I'd like to have multiple edit modes unified in one tool, it's not easy to find a model where everything fits naturally. This is the solution I'm refining for the next version (which takes more time to release than the precedent ones). There are multiple modes (atm : write (default), insert, replace, and navigate).

Only one mode at a time, they can be toggled with a button, but also, they can have modifiers assigned to them to quickly activate/deactivate them :



So you have multiple choices for entering a mode (toggle with mouse click, toggle with a Reaper action, or activate-deactivate with the associated modifier key).

The navigation mode is cool, because it helps you span your track and you can choose to what you snap (Project Grid, Item Grid, note endings/starts and item bounds).

Here, I'm navigating with the sustain pedal on an item with a swing grid and non aligned notes (Opt to navigate forward, Opt+Ctrl to navigate back) :



So combining navigation and normal write mode, here's an illustration of how I achieve your example ATM, with a swing grid :



Press C note, Opt + C note, C note, Opt + C note, C note, etc...

The C controller key enters the C note, Opt activates navigation mode, the item grid snapping is on, and because the "allow navigating on key press/release events" option is checked, any key event will make a jump in navigation mode (instead of inserting a note). It's a convenient alternative to Opt + Sustain pedal.

Not sure I can do better than this without breaking the compatibility with the "hold and validate to extend" flow, that prevents the jump...

Cheers,

Ben

Last edited by Talagan; 03-05-2024 at 09:56 AM.
Talagan is offline   Reply With Quote
Old 03-06-2024, 02:49 AM   #64
henu
Human being with feelings
 
Join Date: Dec 2020
Posts: 76
Default

when initializing the script on a new track, it sometimes pops up the js fx window... is there a way to avoid that?
henu is offline   Reply With Quote
Old 03-06-2024, 03:00 AM   #65
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Hi henu, I can't reproduce it. This has been already reported but should have been fixed. It was due do this option (in Reaper's preferences) : "plugins > autofloat newly added JSFX windows".

What's the context on your side (OS / versions / open windows / etc) ? Do you have this option checked ?

Last edited by Talagan; 03-06-2024 at 05:19 AM.
Talagan is offline   Reply With Quote
Old 03-09-2024, 01:47 AM   #66
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Hey, the new version (v0.9.6) is out.

Since the documentation is growing, I've created a documentation website to propose a cleaner presentation and avoid overstuffing the first forum post.

A quick preview of the new features. The different edition operations (add, insert, etc) have been unified under the concept of edit mode. There are now four edit modes : Write, Insert, Replace, and Navigate.



The two last ones are new.

The Replace edit mode is used to (as its name says) replace notes in the edited MIDI item. It will shorten/delete/make holes in the currently present notes. When called backward, it will shorten/delete/make holes in the present notes (non selectively, contrary to the Write mode where you need to press the controller keys that match present notes.



The Navigate mode is used to navigate on the grid, with snapping options. Currently, we can snap on note bounds, project grid, item grid and item bounds :



This is a quick preview of a typical navigation with the sustain pedal and ctrl + sustain pedal :



Each mode may be activated through icons in the button bar (or reaper actions), or they can be toggled with modifier keys :



That way you can configure what feels the most comfortable for you for the edit modes to be triggered.

I have worked on the project grid/item note driven note length. Now, they handle the swing parameter, and they can be affected by a chosen factor to replicate the modularity of the absolute note length configuration :



Quick preview :



And, lastly, the new version comes with a bunch of more minor options/parameters.

Here's the complete changelog :
  • Feature] Added Replace mode
  • [Feature] Added Navigate mode
  • [Feature] Added auto-scroll arrange view option
  • [Feature] [All Input Modes] Handle grid size for note length with modifier factor
  • [Feature] [All Input Modes] Handle swing for grid size note length
  • [Feature] [Navigate] Snap on project grid (with swing)
  • [Feature] [Navigate] Snap on item grid (with swing)
  • [Feature] [Navigate] Snap on note start/ends
  • [Feature] [Navigate] Snap on item bounds
  • [Feature] [Navigate] Added option to allow navigation on key events (does not input notes)
  • [Feature] [Write] Step back delete/shortening now happens on every key press/release event (notes should match keys)
  • [Feature] [Write] Added option to prevent the cursor from being moved back if step back delete fails (notes don’t match keys, the user missed)
  • [Feature] [Insert] Step back delete can now make holes
  • [Feature] Added system to engage modes with buttons or with customizable modifiers
  • [Rework] [Write] Reworked Delete/Step back logic
  • [Rework] [Insert] Reworked Delete/Step back logic
  • [Rework] Removed option “do not add notes if step back modifier key is pressed”, not pertinent anymore
  • [Rework] Removed option “erase note ends even if they do not align on cursor”, since the eraser does more complex things, it does not fit in the new flow
  • [Bug Fix] n-tuplets always used a value of 2/n, now using precpow2(n)/n
  • [Bug Fix] Create new items when advancing only if insert mode is on
  • [Bug fix] Icons/Images coould be randomly wrong

Enjoy !

Ben

Last edited by Talagan; 03-09-2024 at 03:06 AM.
Talagan is offline   Reply With Quote
Old 03-09-2024, 02:13 AM   #67
smandrap
Human being with feelings
 
smandrap's Avatar
 
Join Date: Feb 2021
Location: Right here
Posts: 1,600
Default

This is superhero grade stuff. Congrats, and thank you.

I was thinking, can we have an "alternate" replace mode which simply replaces pitches instead of wiping existing notes? The idea is
  • monkee records rhythm at the keyboard
  • monkee records pitch after the fact

But seriously, this could be so useful to write harmonizations, like record Violin 1 > copy to Violin 2 > replace pitches to harmonize with the correct rhythm > humanize to taste.

EDIT: i'm basically describing musescore's Repitch mode
__________________
My Scripts
smandrap is offline   Reply With Quote
Old 03-09-2024, 03:04 AM   #68
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Thanks @smandrap !

I definitely love the repitch mode idea. Could be really, really useful. I may have to think a bit about the details (like how to handle chords for example), but I think with the current architecture, a repitch mode is clearly possible !
Talagan is offline   Reply With Quote
Old 03-09-2024, 03:17 AM   #69
smandrap
Human being with feelings
 
smandrap's Avatar
 
Join Date: Feb 2021
Location: Right here
Posts: 1,600
Default

Hm yes chords might be tricky, especially played ones (with note start all over the place).

An easy (in terms of idea) way could be having a "chord time window" parameter set in milliseconds, so that, while in repitch mode and a note/chord is played, all notes at the current insert position and inside that time window are replaced with the user input. Something like that. Might be difficult to implement though
__________________
My Scripts
smandrap is offline   Reply With Quote
Old 03-09-2024, 04:53 AM   #70
Spookye
Human being with feelings
 
Spookye's Avatar
 
Join Date: Jul 2018
Location: Torino, Italia
Posts: 766
Default

Valuable work. Thanks @Tal
__________________
Cupboard Home Studio YT
https://www.youtube.com/channel/UCm8...X1912MA260ELzg
Spookye is offline   Reply With Quote
Old 03-13-2024, 01:45 AM   #71
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Hey, version 0.9.7 is out !

This time I played with @smandrap's idea of a repitch (and revel) mode for OSS. This is the result :



This mode auto-jumps from one note to another after input so it is easy to span a whole melody. There are two options for it :



The first parameter helps you to chose between repitch/revel/repitch+revel.

The second one is the time window that is used to recognize chords. If you want to repitch a chord, you need to press exactly the same number of keys that there are notes in the chord (you cannot advance otherwise, except with the sustain pedal to skip the chord).

I've also started to use @sockmonkey72's MIDIUtils library which is really worth to know since it behaves in such a better manner than the standard API for complex MIDI item patching. And also did some cosmetics.

Updated documentation :

https://bentalagan.github.io/onesmal...oc/v0.9.7.html

Complete changelog :
  • [Feature] Added repitch (+revel) mode (thanks @smandrap !)
  • [Fix] Added missing “Change Edit Mode” actions
  • [Doc] Added help button that redirects to current documentation
  • [Rework] Re arranged settings panel
  • [Rework] Reworked some icons and colors
  • [Rework] Started to use MIDI Utils API by sockmonkey72 instead of default MIDI API

Cheers !

Ben

Last edited by Talagan; 03-13-2024 at 02:11 AM.
Talagan is offline   Reply With Quote
Old 03-13-2024, 02:23 AM   #72
smandrap
Human being with feelings
 
smandrap's Avatar
 
Join Date: Feb 2021
Location: Right here
Posts: 1,600
Default

Woooooooah nice! I’ll test today, thanks
__________________
My Scripts
smandrap is offline   Reply With Quote
Old 03-13-2024, 03:59 AM   #73
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

Brilliant Brilliant Brilliant !!!
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 03-13-2024, 06:53 AM   #74
smandrap
Human being with feelings
 
smandrap's Avatar
 
Join Date: Feb 2021
Location: Right here
Posts: 1,600
Default

AAAAlright, this is insanely good, but there's a problem with "Automatically correct overlapping notes"

The gif is probably bad, sorry for that. I'll try to explain the steps:
  • Automatically correct overlapping notes: ON
  • Insert Midi item
  • Draw straight 1/16 notes lines
  • Place cursor at start of item
  • Open OSS
  • Select repitch mode
  • Play notes to repitch stuff
  • Other notes get borked

__________________
My Scripts
smandrap is offline   Reply With Quote
Old 03-13-2024, 07:05 AM   #75
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Ouch ! I didn't know this option existed. Not sure if I can make it cohabit with OSS. Those problems were already happening with the standard MIDI library and it's why I switched to sockmonkey72's lib. Need to investigate ...
Talagan is offline   Reply With Quote
Old 03-13-2024, 07:11 AM   #76
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

@smandrap

Do you have "automatically correct overlapping "notes enabled in the ME?
This could be the issue.

EDIT: sorry, missed that part. I would highly suggest to disable that feature, because it doesn't work reliably.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 03-13-2024, 07:23 AM   #77
smandrap
Human being with feelings
 
smandrap's Avatar
 
Join Date: Feb 2021
Location: Right here
Posts: 1,600
Default

Yes, turning it off solves the problem and yields what's probably the best step input tool on earth. Just wanted to point it out in case it was helpful to Talagan, or others using the script
__________________
My Scripts
smandrap is offline   Reply With Quote
Old 03-13-2024, 07:27 AM   #78
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

I hope my post didn't come across as patronizing. I was only mentioning it for Talagan in case he was unaware of it.

And yes, the best step input tool on earth!
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ is offline   Reply With Quote
Old 03-13-2024, 07:51 AM   #79
Talagan
Human being with feelings
 
Join Date: Feb 2016
Location: Paris / France
Posts: 307
Default

Thanks guys for the positive comments !

Yeah it's a bit vaudoo magic there. I based my development on the following test case :

No auto correct, standard API :



No auto correct, MIDI Utils API :



But here I get a backfire effect :

With auto correct, standard API :



With auto correct, MIDI Utils API :



So it seems ATM I can't get the best of the two worlds. It's probably linked to the way events are stored in the item and the way they are parsed by the different algorithms.
Talagan is offline   Reply With Quote
Old 03-13-2024, 07:58 AM   #80
_Stevie_
Human being with feelings
 
_Stevie_'s Avatar
 
Join Date: Oct 2017
Location: Black Forest
Posts: 5,086
Default

You could turn off autocorrect for the runtime of the script and turn it back on, on exit. Maybe that would be a solution.
I personally have it always turned off, because it causes more damages than it does any good.
__________________
My Reascripts forum thread | My Reascripts on GitHub
If you like or use my scripts, please support the Ukraine: Ukraine Crisis Relief Fund | DirectRelief | Save The Children | Razom
_Stevie_ 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 10:22 PM.


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