public Connect ( LogicalDevice logicalDevice ) : |
||
logicalDevice | LogicalDevice | |
return |
public MonoExpanderInstance Connect(LogicalDevice.AudioPlayer logicalDevice)
{
this.AudioTrackDone += (o, e) =>
{
logicalDevice.RaiseAudioTrackDone();
};
this.AudioTrackStart.Subscribe(x =>
{
if (x.Item1 == AudioTypes.Track)
logicalDevice.RaiseAudioTrackStart(x.Item2);
});
logicalDevice.AudioChanged += (sender, e) =>
{
switch (e.Command)
{
case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX:
case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayFX:
if (e.LeftVolume.HasValue && e.RightVolume.HasValue)
SendMessage(new AudioEffectPlay
{
FileName = e.AudioFile,
VolumeLeft = e.LeftVolume.Value,
VolumeRight = e.RightVolume.Value,
Simultaneous = e.Command == LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX
});
else
SendMessage(new AudioEffectPlay
{
FileName = e.AudioFile,
Simultaneous = e.Command == LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX
});
break;
case LogicalDevice.Event.AudioChangedEventArgs.Commands.CueFX:
SendMessage(new AudioEffectCue
{
FileName = e.AudioFile
});
break;
case LogicalDevice.Event.AudioChangedEventArgs.Commands.CueTrack:
SendMessage(new AudioTrackCue
{
FileName = e.AudioFile
});
break;
case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayTrack:
SendMessage(new AudioTrackPlay
{
FileName = e.AudioFile
});
break;
}
};
logicalDevice.ExecuteCommand += (sender, e) =>
{
switch (e.Command)
{
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PlayBackground:
SendMessage(new AudioBackgroundResume(), "play-bg");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseBackground:
SendMessage(new AudioBackgroundPause(), "pause-bg");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.ResumeFX:
SendMessage(new AudioEffectResume());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseFX:
SendMessage(new AudioEffectPause());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.NextBackground:
SendMessage(new AudioBackgroundNext());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.BackgroundVolume:
SendMessage(new AudioBackgroundSetVolume
{
Volume = ((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value
}, "mv-bg");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.ResumeTrack:
SendMessage(new AudioTrackResume());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseTrack:
SendMessage(new AudioTrackPause());
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.EffectVolume:
SendMessage(new AudioEffectSetVolume
{
Volume = ((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value
}, "mv-fx");
break;
case LogicalDevice.Event.AudioCommandEventArgs.Commands.TrackVolume:
SendMessage(new AudioTrackSetVolume
{
Volume = ((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value
}, "mv-trk");
break;
}
};
return this;
}
public ExpanderDemo(IEnumerable <string> args) { string expFilesParam = args.FirstOrDefault(x => x.StartsWith("EXPFILES")); if (!string.IsNullOrEmpty(expFilesParam)) { string[] parts = expFilesParam.Split('='); if (parts.Length == 2) { Exec.ExpanderSharedFiles = parts[1]; } } expanderServer.AddInstance("ec30b8eda95b4c5cab46bf630d74810e", expanderLocal); expanderServer.AddInstance("ed86c3dc166f41ee86626897ba039ed2", expander1); expanderServer.AddInstance("10520fdcf14d47cba31da8b6e05d01d8", expander2); expander1.DigitalInputs[6].Connect(in1); expander1.DigitalOutputs[7].Connect(out1); expander1.Connect(audio1); expander2.Connect(audio2); in1.Output.Subscribe(x => { if (x) { // audio2.PlayTrack("02. Frozen - Do You Want to Build a Snowman.wav"); audio1.PlayEffect("WarmHugs.wav"); } // audio2.PlayTrack("08 Feel the Light.wav"); // audioLocal.PlayEffect("WarmHugs.wav"); out1.SetValue(x); }); }