OcaDynamics#
This document describes the device side implementation of OcaDynamics. This class is documented in the AES70 standard as:
Multipurpose dynamics processor. Can be configured as compressor, limiter, expander, or gate.
This class is designed to handle the majority of the basic cases. More complex devices may be described in a different manner, using one or more OcaDynamicsDetector and OcaDynamicsCurve objects, in conjunction with other Worker objects as needed.
Overview#
- ClassID: 1.1.1.14
- Header:
aes70/device/OcaDynamics.hpp
- Namespace:
aes70::device
- Inheritance: aes70::device::OcaActuator, aes70::device::OcaWorker, aes70::device::OcaRoot, aes70::device::object
Class Declaration#
The device side implementation has the following signature.
namespace aes70::device
{
template <class Implementation>
class OcaDynamics : public OcaActuator<Implementation>
{
};
}
The template argument Implementation
may implement the following methods.
Note
The signatures given here are just one possibility and that most methods are optional. Implement only those methods which make sense in the context of your device. See the documentation in Implementing AES70 Classes for more details.
class MyOcaDynamicsImplementation
{
// Methods defined by OcaDynamics
OcaBoolean GetTriggered();
OcaDB GetDynamicGain();
OcaDynamicsFunction GetFunction();
void SetFunction(OcaDynamicsFunction Func);
std::tuple<OcaFloat32,OcaFloat32,OcaFloat32> GetRatio();
void SetRatio(OcaFloat32 Ratio);
std::tuple<OcaDBr,OcaDBz,OcaDBz> GetThreshold();
void SetThreshold(OcaDBr threshold);
OcaPresentationUnit GetThresholdPresentationUnits();
void SetThresholdPresentationUnits(OcaPresentationUnit Units);
OcaLevelDetectionLaw GetDetectorLaw();
void SetDetectorLaw(OcaLevelDetectionLaw Law);
std::tuple<OcaTimeInterval,OcaTimeInterval,OcaTimeInterval> GetAttackTime();
void SetAttackTime(OcaTimeInterval Time);
std::tuple<OcaTimeInterval,OcaTimeInterval,OcaTimeInterval> GetReleaseTime();
void SetReleaseTime(OcaTimeInterval Time);
std::tuple<OcaTimeInterval,OcaTimeInterval,OcaTimeInterval> GetHoldTime();
void SetHoldTime(OcaTimeInterval Time);
std::tuple<OcaDB,OcaDB,OcaDB> GetDynamicGainFloor();
void SetDynamicGainFloor(OcaDB Limit);
std::tuple<OcaDB,OcaDB,OcaDB> GetDynamicGainCeiling();
void SetDynamicGainCeiling(OcaDB Limit);
std::tuple<OcaFloat32,OcaFloat32,OcaFloat32> GetKneeParameter();
void SetKneeParameter(OcaFloat32 Parameter);
std::tuple<OcaFloat32,OcaFloat32,OcaFloat32> GetSlope();
void SetSlope(OcaFloat32 Slope);
void SetMultiple(OcaParameterMask Mask, OcaDynamicsFunction Function, OcaDBr Threshold, OcaPresentationUnit ThresholdPresentationUnits, OcaLevelDetectionLaw DetectorLaw, OcaTimeInterval AttackTime, OcaTimeInterval ReleaseTime, OcaTimeInterval HoldTime, OcaDB DynamicGainCeiling, OcaDB DynamicGainFloor, OcaFloat32 KneeParameter, OcaFloat32 Slope);
// Methods defined by OcaWorker
OcaBoolean GetEnabled();
void SetEnabled(OcaBoolean enabled);
OcaPortID AddPort(OcaString Name, OcaIODirection Mode);
void DeletePort(OcaPortID ID);
OcaList<OcaPort> GetPorts();
OcaString GetPortName(OcaPortID PortID);
void SetPortName(OcaPortID ID, OcaString Name);
OcaString GetLabel();
void SetLabel(OcaString label);
OcaONo GetOwner();
OcaTimeInterval GetLatency();
void SetLatency(OcaTimeInterval latency);
std::tuple<OcaRolePath,OcaONoPath> GetPath();
OcaMap<OcaPortID, OcaPortClockMapEntry> GetPortClockMap();
void SetPortClockMap(OcaMap<OcaPortID, OcaPortClockMapEntry> Map);
OcaPortClockMapEntry GetPortClockMapEntry(OcaPortID ID);
void SetPortClockMapEntry(OcaPortID PortID, OcaPortClockMapEntry Entry);
void DeletePortClockMapEntry(OcaPortID ID);
// Methods defined by OcaRoot
OcaBoolean GetLockable();
void SetLockNoReadWrite();
void Unlock();
OcaString GetRole();
void SetLockNoWrite();
OcaLockState GetLockState();
};