Matrix Modulation Feedback
-
@DanH
Christoph told me in this thread that the modulation is monophonic if you only use the “matrixTargetId” from the Properties Editor and don't use a matrixModulatorModule. Maybe that's what you want.Matrix Modulator - Advantages?
@Christoph-Hart @Orvillain Thanks, guys, that's very interesting and helpfu! :-)
Forum (forum.hise.audio)
-
@DanH the problem is that containers also don‘t split up the buffer for midi messages and process them so this would be a little too much overhead for all projects to change this, but I‘ll see what I can do.
-
@Oli-Ullmann yup but also want sample accurate modulation.
-
@Christoph-Hart awesome thank you
-
@Christoph-Hart said in Matrix Modulation Feedback:
@DanH the problem is that containers also don‘t split up the buffer for midi messages and process them so this would be a little too much overhead for all projects to change this, but I‘ll see what I can do.
Did this get anywhere in the end?
-
@Christoph-Hart quick question about modulation ranges: let's say I have a hardcoded synth with a pitch knob of +/- 24 but on my UI I have a pitch knob to control it of only +/- 12.... If I connect a modulator which range is it going to be using?
-
@DanH you set the input / output ranges of the matrix modulator to match the pitch modulation range - the knob on your UI must exactly match the input range, and the output range must be the correct range representing the input range in the modulation domain.
There are two presets for +-12 and +-24 semitones that you can directly use.
HiseSnippet 1500.3oc6Y0saaaCElJIrsI8Grt0KFFv.zE6hzshBaGG2DrKpabh67ZRsQTZ1v1EELRT1BQhTihJMYC6YXuB8l8br9HrGk9FrcnnrrjiqiiqaZZQ8EFl+bH+NGd94izcDbaZTDWfLVZuSBoHiafsNgI60nGwigZsIx3V3cHQRpvT20FmDRhhnNHCi4erpCiEW.k740ObChOgYSGzEBsO2yltsWfmbPucp+DOe+lDG5ddA4lc05sr4rFbedLfm4wkPgD6CIcoOknl1bXzOPh5gL9V7pUVwtpyCbpTY00qYSpQW2k35VdEmpUqs15kWYcR00pQKsJx3Ja43I4BKIQRifEcCtyIV83ufo2f88h7NvmpZTFYA6rtaTidd9Nc5abhPHiq1YfoZdso5N3c7b7x5efI6yRFvbfD4MZFyMNHU9b.IibPZAMjtM1xV3EJGLhBOWG2hAmftD3rIOTzyEY7JbCNLAl79AjCoMEPiLAVtVoR2yD95teuaLyV5wYlb1S4RZa1x2co+XoEW5OWxb3gbcG4XpsQv88ohQNrxcPLNAWlEGb.UbOyiH9wzrIBpeQa5UlLapsVqyMQNqEyS1Njl1tI22QYqT+9zm.nTyFbVLWJBgoJSNItU5IgkumCUf7fE4p3mv3GTFk.97AInIV3JiP3m0ZShjn7GRgC.wPpP5orDFaROBh.0dGKh2jFcnjGlf2fPNSAdiqelH93rM7kt0OAYfM9a32R5wJowsYz11RxQTTP97AK+p.xw4ZVOruoqkiJFISrNdR6dPrt.ByAutVIa79I5Ij3Izx62AzgwkueITTrqq2wpVlQRkcahUhJJk.a7iFHThB7xLE3F38dAWijnhZvZE0f0FVCxja50fSGBCIO3Nw9DYwLJpbsoC.gDEBiUwprHO4I4yEeNRyTZroYlTHdabhUXzXbtQfQUTy6.Lllb9l3sbco1xA.bAbyedZyDO4a+0za+WgerO+.h+.CEDaBHgpyH+0oCalMtY1DJOlZr+6jViMbhqwNbtyoudzBuGJQNa7c+hScbDcAFgUnP9s0vDi2tY6TKE7qA.q7YCrM7B49DgZ7lB5uESY14F+Z0UdEsF3TU+up+SPNLWtHHsLQ1JsMsKrm46YOJjwEXHZm2AzJfyk87XcK5qcm5ay4gawHfUvI+hzoGIRwQHhJKrLvxtGWy1rgO29v7C1pKiKnZdG46uQbjjGzWARXIZAobSJIZ7q3ZUuO7w86TeudC3qUZOaZilc73lah8RUdBYG4JehKg0AznLyw6RJJGa0p4+3tZ0t7XIDrtCQJRXh7z3.KnbfME1cFi5Go3GMmJ1R2tjpcR.Jk4jz3+fOoCVV01Hcvx8GDoWbMwz756sz560wVPotjaZlns2PwFzLkE4EZ4O8dtmfvhB4QEVXKZf2d.8xn7c9rHpx2dWkSSg7PbhXjC85G1DT0QJiEQFKR79dT.OlUHYnw7EOtWXxRuTjlXt4eQVudgIy07Ltb0kepwEJbuXeLZ4ED5S2hcD0GtGVBF+b3hWtjXeY+dKVEeGNiG1iy7JTUcWJDB0sKUjG6iTgdjTRxWs7N02k5SI48l+l5aCdgDAXmnSos37+ZDi775KwZ3ZphLMeaN2tPcylAELlI3sfcdo9u5iNcaFrSCLF5F14uO14vkKGcxQdrnYfotyKv8Z+gedh2.2vV0GNA2T64o2ycIrtTkMuEKLVpaYfG+CRzBhFER8I3f6ommr6wR3ZYISRjTzBpHHSpHfZGKeS6yq+mB6iJncb6SRMEH6ZGNXYU0Bh9EpfqNjlMDElMgIWDjFNadB2T8lKl8erlOQT3CbhBuyo4+AI4fJehbvaO4fOpuA44gDvPOR8T5Z8QCIfS8l9uiHAfJtOn5ueIAb490BtH1i.hsf+ba8+zlJF5ZI8.5MK4uWdQH9AZaNh+et.nh1yssKtTmRvJSqfqLsBVcZEb0oUvZSqfOXZEbsyVPEgiGECoezogQnc5rk98eMxd7Yi4Q+O.W0HpI
-
@Christoph-Hart cool, very straightforward :)
-
@Christoph-Hart I've recently had a few seemingly random crashes of Hise. Just moving my mouse and boom... Seems it could be something to do with mouse hover and the new mod system? Or maybe I've messed something up in my configuration. Would you mind looking at the crashed thread?
Thread 0 Crashed:: JUCE Message Thread Dispatch queue: com.apple.main-thread 0 HISE-5 0x104b6e4e4 hise::MatrixIds::Helpers::IntensityTextConverter::IntensityTextConverter(hise::MatrixIds::Helpers::IntensityTextConverter::ConstructData const&) + 80 1 HISE-5 0x10497ff64 hise::HiSlider::HoverPopup::rebuild() + 1652 2 HISE-5 0x10497f108 hise::HiSlider::showModHoverPopup(bool, bool) + 4380 3 HISE-5 0x10497be78 hise::HiSlider::mouseEnter(juce::MouseEvent const&) + 24 4 HISE-5 0x105f9522c juce::Component::internalMouseEnter(juce::MouseInputSource, juce::Point<float>, juce::Time) + 280 5 HISE-5 0x105f5a438 juce::MouseInputSourceInternal::setComponentUnderMouse(juce::Component*, juce::Point<float>, juce::Time) + 684 6 HISE-5 0x105f597a0 juce::MouseInputSourceInternal::setScreenPos(juce::Point<float>, juce::Time, bool) + 108 7 HISE-5 0x105f84834 juce::JuceNSViewClass::mouseMoved(objc_object*, objc_selector*, NSEvent*) + 216 8 AppKit 0x197152098 -[NSTrackingArea mouseMoved:] + 116 9 AppKit 0x1977d7bcc -[_NSTrackingAreaAKManager _mouseMoved:] + 440 10 AppKit 0x197b06220 _routeMouseMovedEvent + 224 11 AppKit 0x197067d20 -[NSWindow(NSEventRouting) _reallySendEvent:isDelayedEvent:] + 556 12 AppKit 0x19706792c -[NSWindow(NSEventRouting) sendEvent:] + 288 13 AppKit 0x1978df780 routeMouseMovedEvent + 148 14 AppKit 0x1978def5c -[NSApplication(NSEventRouting) sendEvent:] + 1192 15 AppKit 0x1974de4a4 -[NSApplication _handleEvent:] + 60 16 AppKit 0x196f34c8c -[NSApplication run] + 520 17 HISE-5 0x10472a5a8 main + 296 18 dyld 0x192e66b4c start + 6000
-
Does the ModulationMatrixController use the FloatingTile fontSize property???
-
@Orvillain nope
-
I'm trying to do this:
inline function setupModulationControlPanelLAF(numDraggers) { Console.print("rescaling triggers the setupModulationControlPanelLAF, and UI_SCALE is: " + SharedData.UI_SCALE); local wPct = 100.0 / numDraggers; local fontPx = Math.round(12 * SharedData.UI_SCALE); Console.print("fontpx is: " + fontPx); local laf = Content.createLocalLookAndFeel(); laf.setInlineStyleSheet(" #controller { display:flex; flex-wrap:nowrap; align-items:center; width:100%; padding:0; gap: 2px; border-radius:0; background:#333; overflow:hidden; } .control-button { display:none; } .dragger { display:block; flex:0 0 " + wPct + "%; width:" + wPct + "%; height:100%; min-width:0; box-sizing:border-box; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-align:center; background-color:rgba(76, 76, 76, 1); opacity: 0.8; font-size:" + fontPx + "px; } .dragger::before { content: ''; background-color: white; background-image: var(--dragPath); width: 24px; margin: 2px; } .dragger:checked { background-color:rgba(255, 0, 0, 1); opacity: 1.0; } "); local tile = Content.getComponent("ft_modcontroller"); tile.setLocalLookAndFeel(laf); }
This function is called at init, but is also called when I rescale my UI (which is all code that definitely works) ... but my font doesn't resize.
The flex and width of the draggers does seem to update. So I think I'm doing the right technique???
-
Or maybe I'm better off making custom panels with callbacks, and doing all of the scaling stuff I want to do inside regular LAF, rather than css ??
-
@Orvillain I solved my issue by making my font size a percentage of the dragger, but it was a bit weird. Everything I tried simply would not update the font size. Even doing a setStylePropertyblahblahblah call on the LAF object didn't work.
-
@Orvillain wait, how do you rescale your UI? Settings.setZoomFactor() should scale all fonts correctly.
-
@Christoph-Hart said in Matrix Modulation Feedback:
@Orvillain wait, how do you rescale your UI? Settings.setZoomFactor() should scale all fonts correctly.
No I'm not doing that. I have a custom scaling namespace that does a bunch of math, but ultimately what it does is update the properties of any UI widge - so x, y, w, h, fontSize, etc etc.
This kind of thing:
inline function rescaleAll() { // Order of operations: // Resize interface // Re-apply panel bounds // Re-apply control bounds // Re-apply control style props (font, radii, etc.) // Reposition zoom handle // Resize the window Content.makeFrontInterface(SharedData.getScaledWidth(), SharedData.getScaledHeight()); // Panels first (so parents are sized before children) for (i = 0; i < _layout.length; i++) _applyScaledBounds(_layout[i]); // Controls: bounds then props for (i = 0; i < _controls.length; i++) { _applyScaledBounds(_controls[i]); _applyScaledProps(_controls[i]); } LogicalZoom.onRescaled(); }
Effectively, I'm scaling everything manually. Not using the automatic zoom factor way to do it. I don't have a reason other than coder ego!!
And this all works fine, but setting the font-size property in the modulation controller didn't seem to update in any of the ways I tried.
-
@Orvillain now you have another reason. Also all dialogs / other inbuilt components will not scale correctly like this.
-
@Christoph-Hart said in Matrix Modulation Feedback:
@Orvillain now you have another reason. Also all dialogs / other inbuilt components will not scale correctly like this.
Ah cool beans. Yeah that was trivial to implement in my existing code, and actually makes the whole thing a lot simpler. Sorry, I thought the whole thing was originally a bug to do with the matrix mod controller and how it processed css - hence tagging onto this thread!
The only slight loss is, my approach was working inside HISE directly, without having to compile the plugin in order to double check zoom/rescale performance.
-
@Orvillain You can still check this within HISE - basically the zoom factor in the interface designer does exactly that and if you want to check the actual behaviour with the zoom setting set by the user you can use a second floating tile window that you add a "Main Interface" to - this respects the zoom setting (unlike the popup interface that appears when you click on the house button).
-
@Christoph-Hart Good to know, cheers!!