mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 04:34:56 +00:00
Adds mics master level. Adds set/get to bridge for scaled volume (0-65535) which accounts for min/max settings on DMPS.
This commit is contained in:
@@ -9,6 +9,10 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
public JoinDataComplete MasterVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 1, JoinSpan = 1 },
|
public JoinDataComplete MasterVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 1, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Master Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
new JoinMetadata { Description = "Master Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("MasterVolumeLevelScaled")]
|
||||||
|
public JoinDataComplete MasterVolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 2, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "Master Volume Scaled Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("MasterVolumeMuteOn")]
|
[JoinName("MasterVolumeMuteOn")]
|
||||||
public JoinDataComplete MasterVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 1, JoinSpan = 1 },
|
public JoinDataComplete MasterVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 1, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Master Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
new JoinMetadata { Description = "Master Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
@@ -29,6 +33,10 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
public JoinDataComplete SourceVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 11, JoinSpan = 1 },
|
public JoinDataComplete SourceVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 11, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Source Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
new JoinMetadata { Description = "Source Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("SourceVolumeLevelScaled")]
|
||||||
|
public JoinDataComplete SourceVolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 12, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "Source Volume Scaled Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("SourceVolumeMuteOn")]
|
[JoinName("SourceVolumeMuteOn")]
|
||||||
public JoinDataComplete SourceVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 11, JoinSpan = 1 },
|
public JoinDataComplete SourceVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 11, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Source Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
new JoinMetadata { Description = "Source Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
@@ -49,6 +57,10 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
public JoinDataComplete Codec1VolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 21, JoinSpan = 1 },
|
public JoinDataComplete Codec1VolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 21, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Codec1 Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
new JoinMetadata { Description = "Codec1 Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("Codec1VolumeLevelScaled")]
|
||||||
|
public JoinDataComplete Codec1VolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 22, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "Codec1 Volume Scaled Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("Codec1VolumeMuteOn")]
|
[JoinName("Codec1VolumeMuteOn")]
|
||||||
public JoinDataComplete Codec1VolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 21, JoinSpan = 1 },
|
public JoinDataComplete Codec1VolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 21, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Codec1 Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
new JoinMetadata { Description = "Codec1 Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
@@ -69,6 +81,10 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
public JoinDataComplete Codec2VolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 31, JoinSpan = 1 },
|
public JoinDataComplete Codec2VolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 31, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Codec2 Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
new JoinMetadata { Description = "Codec2 Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("Codec2VolumeLevelScaled")]
|
||||||
|
public JoinDataComplete Codec2VolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 32, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "Codec2 Volume Scaled Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("Codec2VolumeMuteOn")]
|
[JoinName("Codec2VolumeMuteOn")]
|
||||||
public JoinDataComplete Codec2VolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 31, JoinSpan = 1 },
|
public JoinDataComplete Codec2VolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 31, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Codec2 Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
new JoinMetadata { Description = "Codec2 Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
@@ -85,6 +101,29 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
public JoinDataComplete Codec2VolumeDown = new JoinDataComplete(new JoinData { JoinNumber = 34, JoinSpan = 1 },
|
public JoinDataComplete Codec2VolumeDown = new JoinDataComplete(new JoinData { JoinNumber = 34, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "Codec2 Volume Level Down", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital });
|
new JoinMetadata { Description = "Codec2 Volume Level Down", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital });
|
||||||
|
|
||||||
|
[JoinName("MicsMasterVolumeLevel")]
|
||||||
|
public JoinDataComplete MicsMasterVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 41, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "MicsMaster Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("MicsMasterVolumeLevelScaled")]
|
||||||
|
public JoinDataComplete MicsMasterVolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 42, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "MicsMaster Volume Scaled Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
|
[JoinName("MicsMasterVolumeMuteOn")]
|
||||||
|
public JoinDataComplete MicsMasterVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 41, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "MicsMaster Volume Mute On Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
|
|
||||||
|
[JoinName("MicsMasterVolumeMuteOff")]
|
||||||
|
public JoinDataComplete MicsMasterVolumeMuteOff = new JoinDataComplete(new JoinData { JoinNumber = 42, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "MicsMaster Volume Mute Off Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });
|
||||||
|
|
||||||
|
[JoinName("MicsMasterVolumeUp")]
|
||||||
|
public JoinDataComplete MicsMasterVolumeUp = new JoinDataComplete(new JoinData { JoinNumber = 43, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "MicsMaster Volume Level Up", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital });
|
||||||
|
|
||||||
|
[JoinName("MicsMasterVolumeDown")]
|
||||||
|
public JoinDataComplete MicsMasterVolumeDown = new JoinDataComplete(new JoinData { JoinNumber = 44, JoinSpan = 1 },
|
||||||
|
new JoinMetadata { Description = "MicsMaster Volume Level Down", JoinCapabilities = eJoinCapabilities.FromSIMPL, JoinType = eJoinType.Digital });
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor to use when instantiating this Join Map without inheriting from it
|
/// Constructor to use when instantiating this Join Map without inheriting from it
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ namespace PepperDash.Essentials.DM
|
|||||||
Card.Dmps3OutputBase OutputCard;
|
Card.Dmps3OutputBase OutputCard;
|
||||||
|
|
||||||
public DmpsAudioOutput MasterVolumeLevel { get; private set; }
|
public DmpsAudioOutput MasterVolumeLevel { get; private set; }
|
||||||
public DmpsAudioOutput SourceVolumeLevel { get; private set; }
|
public DmpsAudioOutput SourceVolumeLevel { get; private set; }
|
||||||
|
public DmpsAudioOutput MicsMasterVolumeLevel { get; private set; }
|
||||||
public DmpsAudioOutput Codec1VolumeLevel { get; private set; }
|
public DmpsAudioOutput Codec1VolumeLevel { get; private set; }
|
||||||
public DmpsAudioOutput Codec2VolumeLevel { get; private set; }
|
public DmpsAudioOutput Codec2VolumeLevel { get; private set; }
|
||||||
|
|
||||||
@@ -37,12 +38,11 @@ namespace PepperDash.Essentials.DM
|
|||||||
OutputCard.BaseDevice.DMOutputChange += new DMOutputEventHandler(BaseDevice_DMOutputChange);
|
OutputCard.BaseDevice.DMOutputChange += new DMOutputEventHandler(BaseDevice_DMOutputChange);
|
||||||
|
|
||||||
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master);
|
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master);
|
||||||
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
||||||
|
MicsMasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.MicsMaster);
|
||||||
|
|
||||||
if (card is Card.Dmps3ProgramOutput)
|
if (card is Card.Dmps3ProgramOutput)
|
||||||
{
|
{
|
||||||
//(card as Card.Dmps3ProgramOutput).OutputMixer.MicLevel
|
|
||||||
//TODO: Hook up mic levels and mutes
|
|
||||||
Codec1VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec1);
|
Codec1VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec1);
|
||||||
Codec2VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec2);
|
Codec2VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec2);
|
||||||
}
|
}
|
||||||
@@ -74,6 +74,16 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
SourceVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
SourceVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
case DMOutputEventIds.MicMasterLevelFeedBackEventId:
|
||||||
|
{
|
||||||
|
MicsMasterVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DMOutputEventIds.MicMasterMuteOnFeedBackEventId:
|
||||||
|
{
|
||||||
|
MicsMasterVolumeLevel.MuteFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.Codec1LevelFeedBackEventId:
|
case DMOutputEventIds.Codec1LevelFeedBackEventId:
|
||||||
{
|
{
|
||||||
@@ -130,6 +140,11 @@ namespace PepperDash.Essentials.DM
|
|||||||
if (SourceVolumeLevel != null)
|
if (SourceVolumeLevel != null)
|
||||||
{
|
{
|
||||||
SetUpDmpsAudioOutputJoins(trilist, SourceVolumeLevel, joinMap.SourceVolumeLevel.JoinNumber);
|
SetUpDmpsAudioOutputJoins(trilist, SourceVolumeLevel, joinMap.SourceVolumeLevel.JoinNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MicsMasterVolumeLevel != null)
|
||||||
|
{
|
||||||
|
SetUpDmpsAudioOutputJoins(trilist, MicsMasterVolumeLevel, joinMap.MicsMasterVolumeLevel.JoinNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Codec1VolumeLevel != null)
|
if (Codec1VolumeLevel != null)
|
||||||
@@ -146,15 +161,18 @@ namespace PepperDash.Essentials.DM
|
|||||||
|
|
||||||
static void SetUpDmpsAudioOutputJoins(BasicTriList trilist, DmpsAudioOutput output, uint joinStart)
|
static void SetUpDmpsAudioOutputJoins(BasicTriList trilist, DmpsAudioOutput output, uint joinStart)
|
||||||
{
|
{
|
||||||
var volumeLevelJoin = joinStart;
|
var volumeLevelJoin = joinStart;
|
||||||
|
var volumeLevelScaledJoin = joinStart + 1;
|
||||||
var muteOnJoin = joinStart;
|
var muteOnJoin = joinStart;
|
||||||
var muteOffJoin = joinStart + 1;
|
var muteOffJoin = joinStart + 1;
|
||||||
var volumeUpJoin = joinStart + 2;
|
var volumeUpJoin = joinStart + 2;
|
||||||
var volumeDownJoin = joinStart + 3;
|
var volumeDownJoin = joinStart + 3;
|
||||||
|
|
||||||
|
|
||||||
trilist.SetUShortSigAction(volumeLevelJoin, output.SetVolume);
|
trilist.SetUShortSigAction(volumeLevelJoin, output.SetVolume);
|
||||||
output.VolumeLevelFeedback.LinkInputSig(trilist.UShortInput[volumeLevelJoin]);
|
output.VolumeLevelFeedback.LinkInputSig(trilist.UShortInput[volumeLevelJoin]);
|
||||||
|
|
||||||
|
trilist.SetUShortSigAction(volumeLevelScaledJoin, output.SetVolumeScaled);
|
||||||
|
output.VolumeLevelScaledFeedback.LinkInputSig(trilist.UShortInput[volumeLevelScaledJoin]);
|
||||||
|
|
||||||
trilist.SetSigTrueAction(muteOnJoin, output.MuteOn);
|
trilist.SetSigTrueAction(muteOnJoin, output.MuteOn);
|
||||||
output.MuteFeedback.LinkInputSig(trilist.BooleanInput[muteOnJoin]);
|
output.MuteFeedback.LinkInputSig(trilist.BooleanInput[muteOnJoin]);
|
||||||
@@ -170,12 +188,15 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
Card.Dmps3OutputBase Output;
|
Card.Dmps3OutputBase Output;
|
||||||
|
|
||||||
UShortInputSig Level;
|
UShortInputSig Level;
|
||||||
|
UShortOutputSig MinLevel;
|
||||||
|
UShortOutputSig MaxLevel;
|
||||||
|
|
||||||
eDmpsLevelType Type;
|
eDmpsLevelType Type;
|
||||||
|
|
||||||
public BoolFeedback MuteFeedback { get; private set; }
|
public BoolFeedback MuteFeedback { get; private set; }
|
||||||
public IntFeedback VolumeLevelFeedback { get; private set; }
|
public IntFeedback VolumeLevelFeedback { get; private set; }
|
||||||
|
public IntFeedback VolumeLevelScaledFeedback { get; private set; }
|
||||||
|
|
||||||
Action MuteOnAction;
|
Action MuteOnAction;
|
||||||
Action MuteOffAction;
|
Action MuteOffAction;
|
||||||
@@ -186,7 +207,10 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
Output = output;
|
Output = output;
|
||||||
|
|
||||||
Type = type;
|
Type = type;
|
||||||
|
|
||||||
|
MinLevel = (output as Card.Dmps3ProgramOutput).OutputMixer.MinVolumeFeedback;
|
||||||
|
MaxLevel = (output as Card.Dmps3ProgramOutput).OutputMixer.MaxVolumeFeedback;
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@@ -200,7 +224,6 @@ namespace PepperDash.Essentials.DM
|
|||||||
MuteOffAction = new Action(Output.MasterMuteOff);
|
MuteOffAction = new Action(Output.MasterMuteOff);
|
||||||
VolumeUpAction = new Action<bool>((b) => Output.MasterVolumeUp.BoolValue = b);
|
VolumeUpAction = new Action<bool>((b) => Output.MasterVolumeUp.BoolValue = b);
|
||||||
VolumeDownAction = new Action<bool>((b) => Output.MasterVolumeDown.BoolValue = b);
|
VolumeDownAction = new Action<bool>((b) => Output.MasterVolumeDown.BoolValue = b);
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -291,14 +314,43 @@ namespace PepperDash.Essentials.DM
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VolumeLevelScaledFeedback = new IntFeedback(new Func<int>(() => ScaleVolumeFeedback(VolumeLevelFeedback.UShortValue)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetVolumeScaled(ushort level)
|
||||||
|
{
|
||||||
|
//Master fader scaling depends on min and max settings on DMPS
|
||||||
|
if (Type == eDmpsLevelType.Master)
|
||||||
|
{
|
||||||
|
Level.UShortValue = (ushort)(level * (MaxLevel.UShortValue - MinLevel.UShortValue) / 65535 + MinLevel.UShortValue);
|
||||||
|
}
|
||||||
|
// Other faders have min = -800 and max = 100
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Level.UShortValue = (ushort)(level * 900 / 65535 - 800);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort ScaleVolumeFeedback(ushort level)
|
||||||
|
{
|
||||||
|
//Master fader scaling depends on min and max settings on DMPS
|
||||||
|
if (Type == eDmpsLevelType.Master)
|
||||||
|
{
|
||||||
|
return (ushort)((level - MinLevel.UShortValue) * 65535 / (MaxLevel.UShortValue - MinLevel.UShortValue));
|
||||||
|
}
|
||||||
|
// Other faders have min = -800 and max = 100
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return (ushort)((level + 800) * 65535 / 900);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IBasicVolumeWithFeedback Members
|
#region IBasicVolumeWithFeedback Members
|
||||||
|
|
||||||
public void SetVolume(ushort level)
|
public void SetVolume(ushort level)
|
||||||
{
|
{
|
||||||
Level.UShortValue = level;
|
Level.UShortValue = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user