Old 09-10-2019, 06:01 PM   #1
Edgemeal
Human being with feelings
 
Edgemeal's Avatar
 
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 1,384
Default v5.983+dev0910 - September 10 2019

v5.983+dev0910 - September 10 2019
+ API: add support for CC shapes to MIDI_Get(Set)AllEvts
+ Fades: prevent race condition from causing playback glitches during rapid item movement/size/split [t=224925]
# API: add support for bezier tension to MIDI_GetAllEvts/MIDI_SetAllEvts
# FX chain: improve buttons-on-top alignment

Full changelog / Latest pre-releases


Other additions,
+ API: add MIDI_GetCCShape, MIDI_SetCCShape
+ API: add reduce_open_files() utility function for users running up against open file handle limitations
+ ASIO: permit buffer sizes that are not a power of 2 if the device does not very specifically request otherwise [t=200746]
+ Automation items: remove preference to attach automation items to the underlying envelope (superseded by per-automation-item transition time setting)
+ Batch converter: log files will warn if FX were not loaded
+ Defaults: enable Live FX multiprocessing
+ Defaults: enable track record monitoring on new tracks
+ Envelopes: add action to attach automation items to underlying envelope
+ Fade editor: fixed an obscure possible bug
+ FX chain: add preference to display FX list on right side of chain window
+ FX chain: option to put add/delete buttons above list
+ FX: allow embed of some plug-in UIs into TCP (done via action or FX menus)
+ FX: embed support for ReaEQ, ReaXComp, ReaComp, ReaSurround, and graphical JSFX
+ JSFX/ReaScript: fix gfx_showmenu() coordinates on macOS retina displays
+ Keyboard: add "Main (override all contexts including text fields)" section which allows global keyboard overrides
+ macOS: add (default) option to retina-render themed elements on old themes (sharper text)
+ macOS: add prefs/general/advanced options to disable retina support
+ macOS: added "force layer" drawing mode in preferences/general/advanced
+ macOS: optimize drawing speed on newer macOS versions/retina displays (when in automatic mode in preferences/general/advanced)
+ macOS: retina display improvements (retina display of arrange, ruler, MIDI editor, etc)
+ macOS: use Metal display output on 10.11+ for various windows
+ macOS: windows without defined main menu inherit the main menu from their owners
+ macOS: workaround appearance issues when user forces dark mode rendering for app (requires Metal to be enabled) [t=222366]
+ Main window: allow positioning TCP on right side of arrange
+ Menus: a very light refresh of the main file/edit/view/insert menus
+ MIDI editor: 14-bit registered parameter/non-registered parameter CC editing
+ MIDI editor: add CC lane mouse modifier to insert a single CC event
+ MIDI editor: add option to display note length in velocity lane
+ MIDI editor: always select the associated note when clicking on velocity stem, regardless of user preference to select CC event on single click
+ MIDI editor: combine note properties and event properties into one modeless dialog
+ MIDI editor: display CC events as square envelopes rather than bars
+ MIDI editor: draw CC/velocity as dots and lines rather than bars
+ MIDI editor: fix incorrect CC event drawing when coloring notes by velocity
+ MIDI editor: improve hidpi/retina drawing
+ MIDI editor: repopulate raw MIDI display window when switching active media item
+ MIDI editor: respect CC drawing density preference
+ MIDI: support linear and curve CC envelopes
+ Misc: fixed a few minor memory leaks
+ Modal windows: remember window positions (configurable option in preferences/general/advanced to tweak behavior)
+ Mouse modifiers: add double-click behaviors to reset CC value, curvature, edit properties
+ Multiprocessing: auto-detect up to 128 threads
+ Multiprocessing: increase anticipative FX hard limit to 128 threads, live FX hard limit to 64 threads
+ Multiprocessing: remove old 4.x scheduler mode
+ Multiprocessing: remove old option to not use native synchronization events
+ Notation editor: add multi-tremolo support
+ Peaks: option to fully-read peaks files under a certain size (to reduce open file count)
+ Performance meter: improve win32 hidpi drawing
+ Performance: improve track panel UI behavior with large track counts
+ Preferences: add option in disk settings to periodically close excess open files
+ ReaFIR: add context menu mode configuration
+ Render: support rendering only selected regions in an existing region render matrix [t=193405]
+ Resampler: Added SSE2-optimized sinc calculation (from Theo Niessink)
+ Resampling: optimize and improve quality of resampling at whole ratios and for common rates
+ Sliders: improve ReaPlugs/UI slider appearance on hidpi and linux
+ Splash screen: improve win32 HiDPI
+ Toolbars: improve hidpi/retina sizing (including editor and icon picker)
+ Track wiring diagram view
+ Tracks: complete overhaul of track/mixer panels for performance
+ UI scaling: apply advanced preference scaling changes immediately
+ UI scaling: fix theme rendering bugs when using custom scaling
+ Video: fix render configuration from API [t=224539]
+ WALTER: add additional 8 font slots
+ Wet/dry knobs: improve drawing at different DPI settings
+ Wet/dry knobs: improve mouse-up and doubleclick behavior
+ Wet/dry knobs: macOS retina support
+ Windows: HiDPI display improvements (auto-rescale more UI when running HiDPI aware)
+ Windows: improve appearance of various ReaPlugs when resizing
+ Windows: improve appearance of various windows during resize
+ Windows: improve docker appearance during resize



Edgemeal is offline   Reply With Quote
Old 09-11-2019, 02:36 AM   #2
mccrabney
Human being with feelings
 
mccrabney's Avatar
 
Join Date: Aug 2015
Location: Twiddy, Alabama
Posts: 1,965
Default

thanks for fixing the race condition pop issue! i haven't been able to trigger it this morning. however, is it just me, or am i now hearing a (non-clipping, much quieter) pop on play stop on these stretched items? i have "tiny fade" enabled/disabled to no effect
__________________
° using REAPER as host/arranger/sequencer to write instrumental beat music.
° striving for a loop-based, controller-centric midi recording/editing workflow.
° reluctantly switched to using Ableton for live performance and actually enjoying it
mccrabney is offline   Reply With Quote
Old 09-11-2019, 03:47 AM   #3
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 12,438
Default

Quote:
Originally Posted by mccrabney View Post
thanks for fixing the race condition pop issue! i haven't been able to trigger it this morning. however, is it just me, or am i now hearing a (non-clipping, much quieter) pop on play stop on these stretched items? i have "tiny fade" enabled/disabled to no effect
Hmm on playback stop, I don't think anything has changed, so whatever you hear there should be the same as 5.983 etc. If you're hearing a pop when playing back the end of the item, let me know.
Justin is offline   Reply With Quote
Old 09-11-2019, 10:19 AM   #4
srdmusic
Human being with feelings
 
Join Date: Dec 2016
Posts: 604
Default

+ API: add support for CC shapes to MIDI_Get(Set)AllEvts
# API: add support for bezier tension to MIDI_GetAllEvts/MIDI_SetAllEvts

Thank you thank you thank!!!
srdmusic is online now   Reply With Quote
Old 09-11-2019, 10:45 AM   #5
Edgemeal
Human being with feelings
 
Edgemeal's Avatar
 
Join Date: Apr 2016
Location: ASU`ogacihC
Posts: 1,384
Default

From past additions,..
Quote:
+ Keyboard: add "Main (override all contexts including text fields)" section which allows global keyboard overrides
Can someone explain that? Or is that from pre-global-key builds and was never removed from dev changelog?
Edgemeal is offline   Reply With Quote
Old 09-11-2019, 11:29 AM   #6
dupont
Human being with feelings
 
dupont's Avatar
 
Join Date: Nov 2007
Location: France
Posts: 587
Default

If I draw a pitch CC line ramp and sent it to a hardware synth, the pith increase is stepped.
Is it a matter of CC resolution, is there a preference to setup ?
dupont is offline   Reply With Quote
Old 09-11-2019, 12:22 PM   #7
mespotine
Human being with feelings
 
mespotine's Avatar
 
Join Date: May 2017
Location: Leipzig, Germany
Posts: 1,558
Default

Quote:
#+ Fades: prevent race condition from causing playback glitches during rapid item movement/size/split [t=224925]
Yeeesss, thank you!!!
__________________
Ultraschall-API - a Lua-functions-library4Reaper: https://forum.cockos.com/showthread....98#post2067798
Reaper Internals - Developerdocs4Reaper: https://forum.cockos.com/showthread.php?t=207635
mespotine is offline   Reply With Quote
Old 09-11-2019, 12:51 PM   #8
lachrimae
Human being with feelings
 
lachrimae's Avatar
 
Join Date: May 2010
Location: Austin, TX
Posts: 787
Default

Quote:
Originally Posted by dupont View Post
If I draw a pitch CC line ramp and sent it to a hardware synth, the pith increase is stepped.
Is it a matter of CC resolution, is there a preference to setup ?
Yep, under playback interpolation

lachrimae is offline   Reply With Quote
Old 09-11-2019, 02:22 PM   #9
dupont
Human being with feelings
 
dupont's Avatar
 
Join Date: Nov 2007
Location: France
Posts: 587
Default

Quote:
Originally Posted by lachrimae View Post
Yep, under playback interpolation

thanks
dupont is offline   Reply With Quote
Old 09-12-2019, 04:40 AM   #10
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 2,754
Default

Quote:
Originally Posted by Edgemeal View Post
v5.983+dev0910 - September 10 2019
+ API: add support for CC shapes to MIDI_Get(Set)AllEvts
# API: add support for bezier tension to MIDI_GetAllEvts/MIDI_SetAllEvts
Yay!

The API help refers to "msg" starting with "version2:". This should probably be "buf" instead:
Code:
Lua: boolean reaper.MIDI_SetAllEvts(MediaItem_Take take, string buf)

If msg begins with 'version2:', the buffer must be a list of { int offset, char flag, int msglen, int extramsglen, unsigned char msg[] }.

Which string.pack/unpack formula can be used to pack/unpack the new format of "int offset, char flag, int msglen, int extramsglen, unsigned char msg[]"?


Quote:
The only extra data currently supported are:
3 bytes for bezier type: 1'b'0 for normal or 1'b'1 for locked
6 bytes for bezier tension: 4't' plus 4 bytes representing a float
What is a locked bezier type?


Existing scripts don't use the new "version2:" option, which means that the Get/SetAllEvts functions will not throw an error, but will work as before, without shape information, even in new versions of REAPER. I am not sure that is a good idea, since neither the script nor the user may not realize that subtle changes are being made to the CC shapes -- until it is too late and lots of undoing have to be done. If a function doesn't work properly, I prefer it to fail spectacularly, so that the user immediately knows that something is wrong. Perhaps the Get/SetAllEvts functions can either be deprecated, or they should be changed in such a way that older scripts won't work any more (but can easily be adapted by the author).
juliansader is offline   Reply With Quote
Old 09-12-2019, 04:55 AM   #11
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 10,255
Default

Here's an example:

Code:
buf=string.pack("c9ibiic3bc1bbc1fibiic3ibiic3",
  'version2:',
  960, 5<<4, 3, 9, '\xB0\x07\x40', 1, 'b', 0, 4, 't', -0.5,
  960, 0, 3, 0, '\xB0\x07\x20',
  960*6, 0, 3, 0, '\xB0\x7B\x00')
schwa is offline   Reply With Quote
Old 09-12-2019, 04:59 AM   #12
schwa
Administrator
 
schwa's Avatar
 
Join Date: Mar 2007
Location: NY
Posts: 10,255
Default

The locked bezier type is for REAPER's internal use. After certain types of edits, the bezier shape calculation is slightly different. It's included in the API just for completeness.
schwa is offline   Reply With Quote
Old 09-12-2019, 07:14 AM   #13
juliansader
Human being with feelings
 
Join Date: Jul 2009
Posts: 2,754
Default

Quote:
Originally Posted by schwa View Post
Here's an example:

Code:
buf=string.pack("c9ibiic3bc1bbc1fibiic3ibiic3",
  'version2:',
  960, 5<<4, 3, 9, '\xB0\x07\x40', 1, 'b', 0, 4, 't', -0.5,
  960, 0, 3, 0, '\xB0\x07\x20',
  960*6, 0, 3, 0, '\xB0\x7B\x00')
Would it not be faster and more elegant to format each event as "i4Bs4s4", with msg and extramsg as two separate s4?

If I understand the new format correctly, a script would have to check the lengths, then read the msg in a separate with msg:sub(). Similarly, packing can't be done in a single step unless the lengths were hard-coded beforehand, and will take longer to execute.

I'm curious why the new flags are strange text codes instead of just bits? I hope this is preparation for storing notation text inside note-on events!

(BTW, while you are working on these API functions, please take a look at the suggestions in the MIDI CC envelope discussion thread.)
juliansader is offline   Reply With Quote
Old 09-12-2019, 07:19 AM   #14
Justin
Administrator
 
Justin's Avatar
 
Join Date: Jan 2005
Location: NYC
Posts: 12,438
Default

We're going to redo the way these bezier parameters are encoded, stay tuned (and don't use the current system!)
Justin 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 09:50 PM.


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