public Raspberry Connect(LogicalDevice.AudioPlayer logicalDevice) { this.AudioTrackDone += (o, e) => { logicalDevice.RaiseAudioTrackDone(); }; logicalDevice.AudioChanged += (sender, e) => { switch (e.Command) { case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayFX: if (e.LeftVolume.HasValue && e.RightVolume.HasValue) { this.oscClient.Send("/audio/fx/play", e.AudioFile, (float)e.LeftVolume.Value, (float)e.RightVolume.Value); } else { this.oscClient.Send("/audio/fx/play", e.AudioFile); } break; case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayNewFX: if (e.LeftVolume.HasValue && e.RightVolume.HasValue) { this.oscClient.Send("/audio/fx/playnew", e.AudioFile, (float)e.LeftVolume.Value, (float)e.RightVolume.Value); } else { this.oscClient.Send("/audio/fx/playnew", e.AudioFile); } break; case LogicalDevice.Event.AudioChangedEventArgs.Commands.CueFX: this.oscClient.Send("/audio/fx/cue", e.AudioFile); break; case LogicalDevice.Event.AudioChangedEventArgs.Commands.CueTrack: this.oscClient.Send("/audio/trk/cue", e.AudioFile); break; case LogicalDevice.Event.AudioChangedEventArgs.Commands.PlayTrack: this.oscClient.Send("/audio/trk/play", e.AudioFile); break; } }; logicalDevice.ExecuteCommand += (sender, e) => { switch (e.Command) { case LogicalDevice.Event.AudioCommandEventArgs.Commands.PlayBackground: this.oscClient.Send("/audio/bg/play"); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseBackground: this.oscClient.Send("/audio/bg/pause"); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.ResumeFX: this.oscClient.Send("/audio/fx/resume"); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseFX: this.oscClient.Send("/audio/fx/pause"); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.NextBackground: this.oscClient.Send("/audio/bg/next"); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.BackgroundVolume: this.oscClient.Send("/audio/bg/volume", (float)((LogicalDevice.Event.AudioCommandValueEventArgs)e).Value); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.ResumeTrack: this.oscClient.Send("/audio/trk/resume"); break; case LogicalDevice.Event.AudioCommandEventArgs.Commands.PauseTrack: this.oscClient.Send("/audio/trk/pause"); break; } }; return(this); }
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); }