Handling Articulations Approach (Preparing for MIDI 2.0)

Post your ideas and suggestions here

Return to “To Do”

[You can only see part of this thread as you are not logged in to the forums]
KJinx101
Wed May 08, 2024 10:33 pm

x

Handling Articulations Approach (Preparing for MIDI 2.0)

While FL studio's dev team is working on the pressing tasks, the mixer, and playlist, and not yet looking at MIDI 2.0, I wanted to provide a comprehensive theoretical implementation of Articulations for MIDI 2.0 for the dev team before they really get started. I've been reading countless suggestion posts from other users over the years and experimenting myself, finding the strengths and flaws in how FL, different users, and different DAWs handle articulations. This would be the most thorough implementation of Articulations into FL.

No DAW Currently has a method for handling orchestral articulations better than other DAWs by a large margin. FL studio's piano roll is the best in terms of feel, navigation, and quickly modifying multiple groups of notes. It's scripting is even expanding upon these. It's only lacking in the midi event editor and articulation handling for orchestral projects.

MIDI 2.0 already has set guidelines for Orchestral Articulations as seen in this video.
So the solution they chose, which is naturally makes sense as the best, is a Note Property value attached to the 'note on' of each note.
To make this work optimally, I've prepared 4 conditions:

1. For "No Attribute Data" Instead of looking at only the 'last played' value to determine the value:
whenever the user 'plays' / 'un-pauses' the project in the Piano Roll or Playlist, the 'last played' Attribute should be set to...
In Pattern Mode: The last defined attribute/articulation in the Piano Roll on the timeline
In Song Mode: Same as pattern, but searching through the playlist timeline (through patterns where notes that channel exists) instead of only the pattern

Why: This way, users can input data for specific notes where articulations change, but not need to worry about making sure data is set for every single note... but the playback would reflect what they've written instead of what was last played or clicked while the music was paused or in a different spot in the last listen. At the same time, if they change the articulations live using a midi controller, they can affect notes with "No Attribute Data" while the music is playing (to practice changing articulations for a recording), or while music is stopped (to practice recording articulations while performing pitched notes)... but their practice, performance, recording, or listening, will not affect the next playthrough of the project if the play-head starts the music from a point where the notes have "No Attribute Data."

This is important for quick and flexible workflows - it provides the precision of per note articulation with the convenience and quickness of keyswitches. The best of both worlds.

There may be rare cases where an option to turn this off may be helpful, but not having this behavior would really hurt productivity as the user has to be cognizant of 10x as many notes, which is highly inefficient for the many people who record then edit articulations or import from MIDI.

2. Shortcut/Navigation behavior:
We already have [alt]+[scroll] to scroll through note properties. That works for the major classifications. Please do note how the guidelines say there will be subclasses for these. [alt]+[shift]+[scroll] on a notehead would be a great way to quickly navigate the subclasses. Or right-clicking the note property in the event editor window.
This would make changing articulations as easy as changing velocity. I'd suggest alt+[arrow keys] as well for users on a laptop without a mousewheel.

3. Backwards Compatibility and customization:
With capabilities of MIDI 2.0, we would still want to be able to control midi 1.0 instruments. This would ideally be done through some tool to convert a MIDI 2.0 Articulation (Note On Data) to a MIDI 1.0 output (including MIDI Channel, MIDI CC value(s), and MIDI Note). Or a different 2.0 note on value. Key features to make it usable:
A. Can be saved to a preset / .fst so that it loads up every time
B. Can be exported as an editable text file (txt, csv) and imported to be saved to another preset or used elsewhere in the project
C. Can be used to 'rename' MIDI 2.0 data for an interactive interface (mentioned in #4 below) so users can customize / ease their experience
D. Can be used to 'remap' MIDI 2.0 values to others before the signal reaches the VST from the piano roll

Note: Outputting a channel means it would be able to change the midi Note Color, since those are linked.

This approach will allow users to work in a way that's best for them/ their workflow... The possible ways to do this easily would be to add this functionality into the Piano Roll, a Patcher VFX preset, or the Plugin Wrapper (Used for generator plugins and patcher in the piano roll). Please don't leave out Patcher... If you look at users like Alex Moukala, Omnifold and others who have shared examples of their work, patcher is crucial to streamlining the orchestral composition experience in FL. Midi Out adds an extra step that makes set up take much longer and would slow down set up drastically and make projects much harder to modify. BRSO and MIDI out currently suffer from this issue.

4. An interface that allows users to easily navigate MIDI 2.0 articulations
There are potentially 145 individual articulations (including No Data) that can be selected. Being able to tell which one is being utilized is crucial when you have 9 groups of 16 articulations to sift through. This is why the shortcuts at #2 are so important. I've provided an example here.
Midi 2.0 Articulations Piano Roll - FL Studio.png
Please Notice:
- 10 Lanes for the 9 major classifications and an extra at the bottom for "No Data" (Mine correspond to channel color, here. Just an Idea)
- from #1 - the green notes are "No Data" notes. Every time play is pressed, those notes will play sustains just like the blue note before, unless another midi input is triggered after play was pressed [for example from a MIDI controller, or another pattern, in song mode]. Even if the repeated selection is from beat 3.5-4.75 where there are no blue 'sustain' notes.
- after each new articulation on the screen/timeline the subclass is written in text after the value. Notice how tremolo and single trill are written, but staccato is not written the 2nd time it appears on the screen.
- If a new articulation is triggered before the green notes but after play is pressed, the word '(sustain)' in parenthesis next to the first green note value would change to that 'new' articulation
- from #2 - the 'move note' icon indicates the cursor is over that last red note... using [alt]+[wheel/↑ ↓ → ←] would change the "Lane" [vertical position] and Color similarly to how it changes velocity's vertical value. However, using the subclassification as [alt]+[shift]+[mousewheel/↑ ↓ → ←] brings up a text menu to scroll/choose between the 16 subclass articulations (straight from the video). This is a newly used articulation on the timeline/screen, so you can see the name next to the input. Right clicking on the value should also bring up the subclass selector menu.
- from #3 - ideally, users would be able to easily rename the lanes, the articulation subclasses, and also remap the outputs so that they are compatible with their MIDI 1.0 plugins... For Example one using, Cinematic Studio Strings would need to send both a [channel or keyswitch note] AND mod wheel value to send regular Pizz vs Bartok Snap.

Screenshots from the video that informed the example interface and this post:
Screenshot 2024-05-08 175056.png
Screenshot 2024-05-08 175106.png
Screenshot 2024-05-08 175115.png
If these conditions are fulfilled, I'm 99% sure there will never be a complaint about articulations, besides possibly copy/ paste... but a script can easily be made for that using an unused channel with the Piano Roll python scripts.

Good luck devs. You're doing amazing things, and we users appreciate you. I hope you take this into consideration after you finish more pressing priorities and begin to implement MIDI 2.0. Thank you.
You do not have the required permissions to view the files attached to this post.

Return to “To Do”