View Single Post
Old 04-06-2019, 11:46 AM   #2
MaXyM
Human being with feelings
 
Join Date: Aug 2018
Posts: 454
Default

Why such effort

In spite of all contradictions, suggestions, warnings... I've done that because I just needed that.

I'm a user of 42" 4K monitor, and simply I found no theme being useful. Standard themes provides too small GUI elements. Retina (aka 200%) themes turn my big monitor into common fullHD monitor just stretched to fit big display.

To avoid further misunderstanding, here are therms and their meanings I use in this article:
Normal monitor - usually FullHD, 22-28" monitor with standard density display (TN, IPS etc)
4K monitor in the meaning of big monitor with pixel density compared to normal (22-30") monitors. Usually those are 42-52" monitors with doubled number of pixels in both axes comparing to FullHD (it's like 4 FullHD monitors arranged into 2x2 matrix)
Retina - standard sized monitors (let's say up to 28") with high density displays

I suspect there are more and more users of 4K and Retina monitors. Reaper support for those devices are still experimental. Current state of the support and documentation is, lets say, incomplete. It forces theme designers to decide which monitors their theme will be dedicated for. In result there are hundreds beautiful/useful themes for either standard monitors or retinas, being unusable for other at the same time. It might be even more painful for 4K monitor users, because none of those themes, gives expected user experience on their devices. It's because those are dedicated for so called 100% or 200% scale.

I, as a programmer (for recent 20 years I'm more programmer than musician), decided to check out if there is an option. To answer a question how is it possible that application which seems to support highDPI, struggles to provide scalable themes.

And besides ready-to-use theme I'm providing answers. Limitations of Reaper which makes creating scalable themes harder. I could hope in devs providing fixes, but recently there are rumours about v6 and new theming engine... However because those rumours are around since 2 years ago... I would stick with v5 theming engine, asking developers for fixes and improvements.

Here we go...
Scaling incompatibilities

Global_scale / UI scale
Scaling can be set either in preferences or in rtconfig theme file. Once set in rtconfig, value set in Preferences is ignored. It's pity, because editing theme files (incl. unziping/zipping) is not what end user is starving for. In fact it would be better to make possible to override value set in theme by Preferences. It would allow to change the scale freely by a user... Of course, after fixing the UI scale, which today requires restart of the application to apply.

Some elements not scaled at all
Those elements are:
  • volthumbs,
  • fxparams/fxlist arrows
  • item icons (in arrange window)
  • toolbox icons
It's one of most painful aspect, but at least it doesn't break the theme apart... see below.
Personally I don't know why some elements are being scaled why others not. Speaking about volhumbs I would suspect it's dictated by image quality degradation. Then why the rest of theme can be scaled incl. small buttons? Even with quality loss, it would be better than nothing. Maybe allowing multiple images for different ranges of scale is the way?

pink/yellow marked areas not scaled

It has been discussed recently in various threads. It remains obvious to me, that pink/yellow areas must be scaled (at least as one of possible alternatives). Please remember, scaling doesn't break a functionality of pink/yellow. Scaling changes pixel density, it doesn't change layout of the theme.

But going deeper I admit there are two possible cases:
1. we want to increase pixel density of whole image (theme) because of monitor technology (ie Retina) requires it. In this case it's more than obvious that every displayed pixel must be multiplied to match device resolution
2. we want bigger elements (because of bigger monitor) but want some parts (often borders) to not change their size. It's fair argument. It might work for border lines well even today. However it will not work (today) if such areas affects fixed position of other elements which are scalable. Ie, you cannot use area marked by yellow line to measure distance, because the layout will break, once the scale change.
Probably, in future, both options will be available. In current state, I consider it as a bug or oversight (ie, making it scalable at beginning wouldn't have hurt existed themes)

font sizes not scaled
Nothing to comment.

About MxM_Scalable theme
The theme is based on JanneV2Tinted theme by Janne83. All thanks to this author for all initial work, gfx assets, rtconfig etc.
My goal was to make this theme work for all scales from 100 to 200% being easily scalable.
At first I've got rid of yellow/ping areas which brakes layout.
Then repainted most of gfx assets including knobs, buttons, icons.
At the end I was trying to achieve the easiest way of switching between scales.
Initially i was thinking about rely on UI scale settings in prefs. it would allow me to pack the theme into ReaperThemeZip. Unfortunately I had to figure out how to provide various sizes of volthumbs. I was thinking about scripts (ie .bat/bash) or layouts dedicated for specific scale. Nothing worked flawlessly. Finally I succeeded using Walter macro to provide needed scale of volthumbs. In result, to achieve final appearance of the theme, a user has to enter 2 values in rtconfig and select appropriate theme. Not as easy as I want but it works.

Maybe this theme/article will encourage you to push developers to fill gaps, making fully scalable themes real thing. We need that.

Code:
x fixed
+ added
- removed
o changed

v1.0
based on JaneV2Tinted
- got rid of pink/yellow lines in many textures as not applicable and/or incompatible with global_scale
x fixes to items positions (centering, aligning etc)
x fixed midi editor buttons aspect ratio (quizzed in original theme)
x fixed knob volume presence in TCP and MCP (FX return layout)
o  all icons for MCP/TCP/toolbar incl knob stacks repainted to 200% scale
o changed colouring of sends to be the same as inserts
o recoloured arrange window background
o dimmed tinting of inserts/sends background
o optimized redundancy of images (by using subdirectories) 
+ assigned transport status font to Walter1
+ added volthumbs for several scales incl walter code to support it
+ added icons for latch preview
+ new layouts:
       transport: centered layouts (normal and small)
       master MCP: volume knob
       MCP: group (without volume meters)
       additional volume fader colors for existing themes
+ added ReaperThemes dedicated for different scales, differs by font sizes

Last edited by MaXyM; 08-02-2019 at 02:04 AM.
MaXyM is offline   Reply With Quote