Umsci
Upmix Spatial Control Interface — OCA/OCP.1 spatial audio utility
Loading...
Searching...
No Matches
UmsciExternalControlComponent Class Reference

Settings panel for MIDI- and OSC-based external control of the six upmix transform parameters (rotation, translation, height translation, angle stretch, X/Y offset). More...

#include <UmsciExternalControlComponent.h>

+ Inheritance diagram for UmsciExternalControlComponent:
+ Collaboration diagram for UmsciExternalControlComponent:

Classes

class  MidiTab
 
class  OscTab
 

Public Types

enum  UpmixMidiParam {
  UpmixMidiParam_Rotation = 0 ,
  UpmixMidiParam_Translation = 1 ,
  UpmixMidiParam_HeightTranslation = 2 ,
  UpmixMidiParam_AngleStretch = 3 ,
  UpmixMidiParam_OffsetX = 4 ,
  UpmixMidiParam_OffsetY = 5 ,
  UpmixMidiParam_COUNT = 6
}
 Identifies each controllable upmix transform parameter. More...
 

Public Member Functions

 UmsciExternalControlComponent ()
 
 ~UmsciExternalControlComponent () override
 
void resized () override
 
void setMidiInputDeviceIdentifier (const juce::String &identifier)
 
const juce::String & getMidiInputDeviceIdentifier () const
 
void setMidiAssi (UpmixMidiParam param, const JUCEAppBasics::MidiCommandRangeAssignment &assi)
 
const JUCEAppBasics::MidiCommandRangeAssignment & getMidiAssi (UpmixMidiParam param) const
 
void setOscInputPort (int port)
 
int getOscInputPort () const
 
void setOscAddr (UpmixMidiParam param, const juce::String &address)
 
juce::String getOscAddr (UpmixMidiParam param) const
 

Public Attributes

std::function< void(const juce::String &)> onMidiInputDeviceChanged
 
std::function< void(UpmixMidiParam, JUCEAppBasics::MidiCommandRangeAssignment)> onMidiAssiChanged
 
std::function< void(int)> onOscInputPortChanged
 
std::function< void(UpmixMidiParam, juce::String)> onOscAddrChanged
 

Static Public Attributes

static const std::array< std::pair< float, float >, UpmixMidiParam_COUNTs_paramRanges
 Natural parameter ranges for normalised MIDI→domain mapping. Indexed by UpmixMidiParam.
 
static const juce::String s_paramLabels [UpmixMidiParam_COUNT]
 Human-readable parameter labels shared by both tabs.
 
static const juce::String s_oscDefaultAddresses [UpmixMidiParam_COUNT]
 Default OSC address for each parameter, indexed by UpmixMidiParam.
 

Detailed Description

Settings panel for MIDI- and OSC-based external control of the six upmix transform parameters (rotation, translation, height translation, angle stretch, X/Y offset).

The component presents two tabs:

  • MIDI — MIDI input device selector and six MidiLearnerComponent rows.
  • OSC — UDP listen-port field and six OSC-address text fields.

Changes are communicated via callbacks:

  • onMidiInputDeviceChanged / onMidiAssiChanged for MIDI.
  • onOscInputPortChanged / onOscAddrChanged for OSC.

Parameter ID enum (<tt>UpmixMidiParam</tt>)

Shared by both MIDI and OSC tabs; used as index into internal arrays. Integer values must remain stable.

Definition at line 45 of file UmsciExternalControlComponent.h.

Member Enumeration Documentation

◆ UpmixMidiParam

Identifies each controllable upmix transform parameter.

Enumerator
UpmixMidiParam_Rotation 

m_upmixRot — ring rotation (−π – +π rad).

UpmixMidiParam_Translation 

m_upmixTrans — radial scale factor.

UpmixMidiParam_HeightTranslation 

m_upmixHeightTrans — height ring fraction.

UpmixMidiParam_AngleStretch 

m_upmixAngleStretch — angular spread.

UpmixMidiParam_OffsetX 

m_upmixOffsetX — ring centre X offset.

UpmixMidiParam_OffsetY 

m_upmixOffsetY — ring centre Y offset.

UpmixMidiParam_COUNT 

Definition at line 49 of file UmsciExternalControlComponent.h.

Constructor & Destructor Documentation

◆ UmsciExternalControlComponent()

UmsciExternalControlComponent::UmsciExternalControlComponent ( )

Definition at line 305 of file UmsciExternalControlComponent.cpp.

◆ ~UmsciExternalControlComponent()

UmsciExternalControlComponent::~UmsciExternalControlComponent ( )
override

Definition at line 324 of file UmsciExternalControlComponent.cpp.

Member Function Documentation

◆ getMidiAssi()

const JUCEAppBasics::MidiCommandRangeAssignment & UmsciExternalControlComponent::getMidiAssi ( UpmixMidiParam  param) const

◆ getMidiInputDeviceIdentifier()

const juce::String & UmsciExternalControlComponent::getMidiInputDeviceIdentifier ( ) const

◆ getOscAddr()

juce::String UmsciExternalControlComponent::getOscAddr ( UpmixMidiParam  param) const

◆ getOscInputPort()

int UmsciExternalControlComponent::getOscInputPort ( ) const

◆ resized()

void UmsciExternalControlComponent::resized ( )
override

Definition at line 328 of file UmsciExternalControlComponent.cpp.

◆ setMidiAssi()

void UmsciExternalControlComponent::setMidiAssi ( UpmixMidiParam  param,
const JUCEAppBasics::MidiCommandRangeAssignment &  assi 
)

◆ setMidiInputDeviceIdentifier()

void UmsciExternalControlComponent::setMidiInputDeviceIdentifier ( const juce::String &  identifier)

◆ setOscAddr()

void UmsciExternalControlComponent::setOscAddr ( UpmixMidiParam  param,
const juce::String &  address 
)

◆ setOscInputPort()

void UmsciExternalControlComponent::setOscInputPort ( int  port)

Member Data Documentation

◆ onMidiAssiChanged

std::function<void(UpmixMidiParam, JUCEAppBasics::MidiCommandRangeAssignment)> UmsciExternalControlComponent::onMidiAssiChanged

◆ onMidiInputDeviceChanged

std::function<void(const juce::String&)> UmsciExternalControlComponent::onMidiInputDeviceChanged

◆ onOscAddrChanged

std::function<void(UpmixMidiParam, juce::String)> UmsciExternalControlComponent::onOscAddrChanged

Definition at line 94 of file UmsciExternalControlComponent.h.

◆ onOscInputPortChanged

std::function<void(int)> UmsciExternalControlComponent::onOscInputPortChanged

Definition at line 93 of file UmsciExternalControlComponent.h.

◆ s_oscDefaultAddresses

const juce::String UmsciExternalControlComponent::s_oscDefaultAddresses
static
Initial value:
= {
"/umsci/indicator/rot",
"/umsci/indicator/trans",
"/umsci/indicator/heighttrans",
"/umsci/indicator/anglestretch",
"/umsci/indicator/offsetx",
"/umsci/indicator/offsety"
}

Default OSC address for each parameter, indexed by UpmixMidiParam.

Definition at line 43 of file UmsciExternalControlComponent.h.

Referenced by OscController::OscController(), and UmsciExternalControlComponent::OscTab::OscTab().

◆ s_paramLabels

const juce::String UmsciExternalControlComponent::s_paramLabels
static
Initial value:
= {
"Rotation",
"Translation (scale)",
"Height translation",
"Angle stretch",
"Offset X",
"Offset Y"
}

Human-readable parameter labels shared by both tabs.

Definition at line 24 of file UmsciExternalControlComponent.h.

Referenced by UmsciExternalControlComponent::MidiTab::MidiTab(), and UmsciExternalControlComponent::OscTab::OscTab().

◆ s_paramRanges

const std::array< std::pair< float, float >, UmsciExternalControlComponent::UpmixMidiParam_COUNT > UmsciExternalControlComponent::s_paramRanges
static
Initial value:
= {{
{ -juce::MathConstants<float>::pi, juce::MathConstants<float>::pi },
{ 0.0f, 3.0f },
{ 0.0f, 2.0f },
{ 0.0f, 2.0f },
{ -2.0f, 2.0f },
{ -2.0f, 2.0f },
}}

Natural parameter ranges for normalised MIDI→domain mapping. Indexed by UpmixMidiParam.

Definition at line 34 of file UmsciExternalControlComponent.h.


The documentation for this class was generated from the following files: