mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 05:05:00 +00:00
Improvements for min/max scaling on dmps audio
This commit is contained in:
@@ -7,11 +7,11 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
|
|
||||||
[JoinName("MasterVolumeLevel")]
|
[JoinName("MasterVolumeLevel")]
|
||||||
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 Signed dB Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("MasterVolumeLevelScaled")]
|
[JoinName("MasterVolumeLevelScaled")]
|
||||||
public JoinDataComplete MasterVolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 2, JoinSpan = 1 },
|
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 });
|
new JoinMetadata { Description = "Master Volume 16bit 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 },
|
||||||
@@ -31,11 +31,11 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
|
|
||||||
[JoinName("SourceVolumeLevel")]
|
[JoinName("SourceVolumeLevel")]
|
||||||
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 Signed dB Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("SourceVolumeLevelScaled")]
|
[JoinName("SourceVolumeLevelScaled")]
|
||||||
public JoinDataComplete SourceVolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 12, JoinSpan = 1 },
|
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 });
|
new JoinMetadata { Description = "Source Volume 16bit 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 },
|
||||||
@@ -55,11 +55,11 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
|
|
||||||
[JoinName("Codec1VolumeLevel")]
|
[JoinName("Codec1VolumeLevel")]
|
||||||
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 Signed dB Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("Codec1VolumeLevelScaled")]
|
[JoinName("Codec1VolumeLevelScaled")]
|
||||||
public JoinDataComplete Codec1VolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 22, JoinSpan = 1 },
|
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 });
|
new JoinMetadata { Description = "Codec1 Volume 16bit 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 },
|
||||||
@@ -79,11 +79,11 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
|
|
||||||
[JoinName("Codec2VolumeLevel")]
|
[JoinName("Codec2VolumeLevel")]
|
||||||
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 Signed dB Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("Codec2VolumeLevelScaled")]
|
[JoinName("Codec2VolumeLevelScaled")]
|
||||||
public JoinDataComplete Codec2VolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 32, JoinSpan = 1 },
|
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 });
|
new JoinMetadata { Description = "Codec2 Volume 16bit 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 },
|
||||||
@@ -103,11 +103,11 @@ namespace PepperDash.Essentials.Core.Bridges
|
|||||||
|
|
||||||
[JoinName("MicsMasterVolumeLevel")]
|
[JoinName("MicsMasterVolumeLevel")]
|
||||||
public JoinDataComplete MicsMasterVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 41, JoinSpan = 1 },
|
public JoinDataComplete MicsMasterVolumeLevel = new JoinDataComplete(new JoinData { JoinNumber = 41, JoinSpan = 1 },
|
||||||
new JoinMetadata { Description = "MicsMaster Volume Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
new JoinMetadata { Description = "MicsMaster Volume Signed dB Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("MicsMasterVolumeLevelScaled")]
|
[JoinName("MicsMasterVolumeLevelScaled")]
|
||||||
public JoinDataComplete MicsMasterVolumeLevelScaled = new JoinDataComplete(new JoinData { JoinNumber = 42, JoinSpan = 1 },
|
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 });
|
new JoinMetadata { Description = "MicsMaster Volume 16bit Scaled Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Analog });
|
||||||
|
|
||||||
[JoinName("MicsMasterVolumeMuteOn")]
|
[JoinName("MicsMasterVolumeMuteOn")]
|
||||||
public JoinDataComplete MicsMasterVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 41, JoinSpan = 1 },
|
public JoinDataComplete MicsMasterVolumeMuteOn = new JoinDataComplete(new JoinData { JoinNumber = 41, JoinSpan = 1 },
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ namespace PepperDash.Essentials.DM
|
|||||||
public DmpsAudioOutput Codec1VolumeLevel { get; private set; }
|
public DmpsAudioOutput Codec1VolumeLevel { get; private set; }
|
||||||
public DmpsAudioOutput Codec2VolumeLevel { get; private set; }
|
public DmpsAudioOutput Codec2VolumeLevel { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
public DmpsAudioOutputController(string key, string name, Card.Dmps3OutputBase card)
|
public DmpsAudioOutputController(string key, string name, Card.Dmps3OutputBase card)
|
||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
@@ -37,22 +36,42 @@ namespace PepperDash.Essentials.DM
|
|||||||
|
|
||||||
OutputCard.BaseDevice.DMOutputChange += new DMOutputEventHandler(BaseDevice_DMOutputChange);
|
OutputCard.BaseDevice.DMOutputChange += new DMOutputEventHandler(BaseDevice_DMOutputChange);
|
||||||
|
|
||||||
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master);
|
|
||||||
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
|
||||||
MicsMasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.MicsMaster);
|
|
||||||
|
|
||||||
if (card is Card.Dmps3ProgramOutput)
|
if (card is Card.Dmps3ProgramOutput)
|
||||||
{
|
{
|
||||||
|
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master)
|
||||||
|
{
|
||||||
|
Mixer = (card as Card.Dmps3ProgramOutput).OutputMixer
|
||||||
|
};
|
||||||
|
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
||||||
|
MicsMasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.MicsMaster);
|
||||||
Codec1VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec1);
|
Codec1VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec1);
|
||||||
Codec2VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec2);
|
Codec2VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec2);
|
||||||
}
|
}
|
||||||
else if (card is Card.Dmps3Aux1Output)
|
else if (card is Card.Dmps3Aux1Output)
|
||||||
{
|
{
|
||||||
|
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master)
|
||||||
|
{
|
||||||
|
Mixer = (card as Card.Dmps3Aux1Output).OutputMixer
|
||||||
|
};
|
||||||
|
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
||||||
|
MicsMasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.MicsMaster);
|
||||||
Codec2VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec2);
|
Codec2VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec2);
|
||||||
}
|
}
|
||||||
else if (card is Card.Dmps3Aux2Output)
|
else if (card is Card.Dmps3Aux2Output)
|
||||||
{
|
{
|
||||||
Codec1VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec1);
|
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master)
|
||||||
|
{
|
||||||
|
Mixer = (card as Card.Dmps3Aux2Output).OutputMixer
|
||||||
|
};
|
||||||
|
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
||||||
|
MicsMasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.MicsMaster);
|
||||||
|
Codec1VolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Codec1);
|
||||||
|
}
|
||||||
|
else //Digital Outputs
|
||||||
|
{
|
||||||
|
MasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Master);
|
||||||
|
SourceVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.Source);
|
||||||
|
MicsMasterVolumeLevel = new DmpsAudioOutput(card, eDmpsLevelType.MicsMaster);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +81,8 @@ namespace PepperDash.Essentials.DM
|
|||||||
{
|
{
|
||||||
case DMOutputEventIds.MasterVolumeFeedBackEventId:
|
case DMOutputEventIds.MasterVolumeFeedBackEventId:
|
||||||
{
|
{
|
||||||
MasterVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
MasterVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
|
MasterVolumeLevel.VolumeLevelScaledFeedback.FireUpdate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.MasterMuteOnFeedBackEventId:
|
case DMOutputEventIds.MasterMuteOnFeedBackEventId:
|
||||||
@@ -72,12 +92,19 @@ namespace PepperDash.Essentials.DM
|
|||||||
}
|
}
|
||||||
case DMOutputEventIds.SourceLevelFeedBackEventId:
|
case DMOutputEventIds.SourceLevelFeedBackEventId:
|
||||||
{
|
{
|
||||||
SourceVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
SourceVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
|
SourceVolumeLevel.VolumeLevelScaledFeedback.FireUpdate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case DMOutputEventIds.SourceMuteOnFeedBackEventId:
|
||||||
|
{
|
||||||
|
SourceVolumeLevel.MuteFeedback.FireUpdate();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case DMOutputEventIds.MicMasterLevelFeedBackEventId:
|
case DMOutputEventIds.MicMasterLevelFeedBackEventId:
|
||||||
{
|
{
|
||||||
MicsMasterVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
MicsMasterVolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
|
MicsMasterVolumeLevel.VolumeLevelScaledFeedback.FireUpdate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.MicMasterMuteOnFeedBackEventId:
|
case DMOutputEventIds.MicMasterMuteOnFeedBackEventId:
|
||||||
@@ -86,9 +113,12 @@ namespace PepperDash.Essentials.DM
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.Codec1LevelFeedBackEventId:
|
case DMOutputEventIds.Codec1LevelFeedBackEventId:
|
||||||
{
|
{
|
||||||
if(Codec1VolumeLevel != null)
|
if (Codec1VolumeLevel != null)
|
||||||
Codec1VolumeLevel.VolumeLevelFeedback.FireUpdate();
|
{
|
||||||
|
Codec1VolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
|
Codec1VolumeLevel.VolumeLevelScaledFeedback.FireUpdate();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.Codec1MuteOnFeedBackEventId:
|
case DMOutputEventIds.Codec1MuteOnFeedBackEventId:
|
||||||
@@ -98,9 +128,12 @@ namespace PepperDash.Essentials.DM
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.Codec2LevelFeedBackEventId:
|
case DMOutputEventIds.Codec2LevelFeedBackEventId:
|
||||||
{
|
{
|
||||||
if (Codec2VolumeLevel != null)
|
if (Codec2VolumeLevel != null)
|
||||||
Codec2VolumeLevel.VolumeLevelFeedback.FireUpdate();
|
{
|
||||||
|
Codec2VolumeLevel.VolumeLevelFeedback.FireUpdate();
|
||||||
|
Codec2VolumeLevel.VolumeLevelScaledFeedback.FireUpdate();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DMOutputEventIds.Codec2MuteOnFeedBackEventId:
|
case DMOutputEventIds.Codec2MuteOnFeedBackEventId:
|
||||||
@@ -109,6 +142,24 @@ namespace PepperDash.Essentials.DM
|
|||||||
Codec2VolumeLevel.MuteFeedback.FireUpdate();
|
Codec2VolumeLevel.MuteFeedback.FireUpdate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case DMOutputEventIds.MinVolumeFeedBackEventId:
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "MinVolumeFeedBackEventId: {0}", args.Index);
|
||||||
|
if (MasterVolumeLevel != null)
|
||||||
|
{
|
||||||
|
MasterVolumeLevel.GetVolumeMin();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DMOutputEventIds.MaxVolumeFeedBackEventId:
|
||||||
|
{
|
||||||
|
Debug.Console(2, this, "MaxVolumeFeedBackEventId: {0}", args.Index);
|
||||||
|
if (MasterVolumeLevel != null)
|
||||||
|
{
|
||||||
|
MasterVolumeLevel.GetVolumeMax();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,14 +237,14 @@ namespace PepperDash.Essentials.DM
|
|||||||
|
|
||||||
public class DmpsAudioOutput : IBasicVolumeWithFeedback
|
public class DmpsAudioOutput : IBasicVolumeWithFeedback
|
||||||
{
|
{
|
||||||
Card.Dmps3OutputBase Output;
|
Card.Dmps3OutputBase Output;
|
||||||
|
eDmpsLevelType Type;
|
||||||
UShortInputSig Level;
|
UShortInputSig Level;
|
||||||
UShortOutputSig MinLevel;
|
|
||||||
UShortOutputSig MaxLevel;
|
public short MinLevel { get; private set; }
|
||||||
|
public short MaxLevel { get; private set; }
|
||||||
eDmpsLevelType Type;
|
|
||||||
|
public CrestronControlSystem.Dmps3OutputMixerWithMonoAndStereo Mixer { get; set; }
|
||||||
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; }
|
public IntFeedback VolumeLevelScaledFeedback { get; private set; }
|
||||||
@@ -206,11 +257,9 @@ namespace PepperDash.Essentials.DM
|
|||||||
public DmpsAudioOutput(Card.Dmps3OutputBase output, eDmpsLevelType type)
|
public DmpsAudioOutput(Card.Dmps3OutputBase output, eDmpsLevelType type)
|
||||||
{
|
{
|
||||||
Output = output;
|
Output = output;
|
||||||
|
|
||||||
Type = type;
|
Type = type;
|
||||||
|
MinLevel = -800;
|
||||||
MinLevel = (output as Card.Dmps3ProgramOutput).OutputMixer.MinVolumeFeedback;
|
MaxLevel = 100;
|
||||||
MaxLevel = (output as Card.Dmps3ProgramOutput).OutputMixer.MaxVolumeFeedback;
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@@ -224,7 +273,7 @@ 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;
|
||||||
}
|
}
|
||||||
case eDmpsLevelType.MicsMaster:
|
case eDmpsLevelType.MicsMaster:
|
||||||
@@ -315,35 +364,48 @@ namespace PepperDash.Essentials.DM
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (VolumeLevelFeedback != null)
|
||||||
VolumeLevelScaledFeedback = new IntFeedback(new Func<int>(() => ScaleVolumeFeedback(VolumeLevelFeedback.UShortValue)));
|
{
|
||||||
|
VolumeLevelScaledFeedback = new IntFeedback(new Func<int>(() => ScaleVolumeFeedback(VolumeLevelFeedback.UShortValue)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetVolumeScaled(ushort level)
|
public void SetVolumeScaled(ushort level)
|
||||||
{
|
{
|
||||||
//Master fader scaling depends on min and max settings on DMPS
|
Debug.Console(2, Debug.ErrorLogLevel.None, "Scaling DMPS volume:{0} level:{1} min:{2} max:{3}", Output.Name, level.ToString(), MinLevel.ToString(), MaxLevel.ToString());
|
||||||
if (Type == eDmpsLevelType.Master)
|
Level.UShortValue = (ushort)(level * (MaxLevel - MinLevel) / ushort.MaxValue + MinLevel);
|
||||||
{
|
|
||||||
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)
|
public ushort ScaleVolumeFeedback(ushort level)
|
||||||
{
|
{
|
||||||
//Master fader scaling depends on min and max settings on DMPS
|
short signedLevel = (short)level;
|
||||||
if (Type == eDmpsLevelType.Master)
|
Debug.Console(2, Debug.ErrorLogLevel.None, "Scaling DMPS volume:{0} feedback:{1} min:{2} max:{3}", Output.Name, signedLevel.ToString(), MinLevel.ToString(), MaxLevel.ToString());
|
||||||
|
return (ushort)((signedLevel - MinLevel) * ushort.MaxValue / (MaxLevel - MinLevel));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GetVolumeMin()
|
||||||
|
{
|
||||||
|
if (Mixer != null)
|
||||||
{
|
{
|
||||||
return (ushort)((level - MinLevel.UShortValue) * 65535 / (MaxLevel.UShortValue - MinLevel.UShortValue));
|
MinLevel = (short)Mixer.MinVolumeFeedback.UShortValue;
|
||||||
|
Debug.Console(2, Debug.ErrorLogLevel.None, "DMPS set {0} min level:{1}", Output.Name, MinLevel);
|
||||||
|
if (VolumeLevelScaledFeedback != null)
|
||||||
|
{
|
||||||
|
VolumeLevelScaledFeedback.FireUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Other faders have min = -800 and max = 100
|
}
|
||||||
else
|
|
||||||
|
public void GetVolumeMax()
|
||||||
|
{
|
||||||
|
if (Mixer != null)
|
||||||
{
|
{
|
||||||
return (ushort)((level + 800) * 65535 / 900);
|
MaxLevel = (short)Mixer.MaxVolumeFeedback.UShortValue;
|
||||||
|
Debug.Console(2, Debug.ErrorLogLevel.None, "DMPS set {0} max level:{1}", Output.Name, MaxLevel);
|
||||||
|
if (VolumeLevelScaledFeedback != null)
|
||||||
|
{
|
||||||
|
VolumeLevelScaledFeedback.FireUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user