public static void SpotifySkipCommerical( PioneerDDJSB2 ddjsb2, string patchParameter, IDisposable skippingSubscription, Leds.Deck deck, Leds.PadGroup group, Led led, IState state, DateTime lastPause) { var button = state.Control as Button; var on = button.NoteValue > 0; if (on) { // Switch On/Off var a1Patch = VoiceMeeter.Remote.GetParameter(patchParameter); VoiceMeeter.Remote.SetParameter(patchParameter, a1Patch > 0 ? 0f : 1f); var pauseAmount = DateTime.UtcNow - lastPause; var muteAmount = TimeSpan.FromSeconds(30) - pauseAmount; if (muteAmount > TimeSpan.FromSeconds(1)) { ddjsb2.PadLedControl(deck, group, led, false, true); var skipping = System.Reactive.Linq.Observable.Timer(muteAmount); skippingSubscription = skipping.Subscribe(x => ReenableSound(ddjsb2, patchParameter, skippingSubscription, deck, group, led, skipping)); } } }
public static void SetDetentValueVM(PioneerDDJSB2 ddjsb2, string parameter, byte inputValue) { // Middle of dial/slider has detent. // VoiceMeter DDJ-SB2 //-60 to +12 0 - 127 //(0-72) - 60 const byte middle = 0x40; // Middle Dial Value const float adjust = 60f; const float lowerDivisor = 60.0f / (float)middle; const float upperDivisor = 12.0f / (float)middle; float value = (((float)inputValue) * lowerDivisor) - adjust; // Are we above the middle if (inputValue > middle) { value = (((float)inputValue) * upperDivisor) - 11.8f; // Doesn't quite get to +12 } if (inputValue == middle) { value = 0f; } VoiceMeeter.Remote.SetParameter(parameter, value); }
// Use a LINQ Expression to send the boolean property to set private void HandleForceEffects <T>( PioneerDDJSB2 ddjsb2, Leds.Deck deck, Leds.PadGroup group, Led led, T targetObject, System.Linq.Expressions.Expression <Func <T, bool> > targetExpr, IState state) { var button = state.Control as Button; var on = button.NoteValue > 0; // Get the property var expr = (System.Linq.Expressions.MemberExpression)targetExpr.Body; var prop = (System.Reflection.PropertyInfo)expr.Member; // Get the value of the property bool effectState = (bool)prop.GetValue(targetObject); if (on) { prop.SetValue(targetObject, !effectState); } // Light the LED when on ddjsb2.PadLedControl(deck, group, led, false, effectState || on); }
private void LevelsUpdate(PioneerDDJSB2 ddjsb2, float[] levels) { // Voicemeeter DDJSB2 // 0 - 1.1 0 - 127 const float divisor = 127.0f / 1.1f; float deck1Value = levels[2] * divisor; float deck2Value = levels[1] * divisor; ddjsb2.LevelLedControl(Leds.Deck.Deck1, Leds.Level, (byte)deck1Value); ddjsb2.LevelLedControl(Leds.Deck.Deck2, Leds.Level, (byte)deck2Value); // Is something playing on the Spotify channel? if (levels[0] > 0.005f && playLed == false) { playLed = true; ddjsb2.LedControl(Leds.Deck.Deck2, Leds.PlayLed, false, true); } if (levels[0] < 0.005f && playLed) { playLed = false; ddjsb2.LedControl(Leds.Deck.Deck2, Leds.PlayLed, false, false); lastPause = DateTime.UtcNow; } //ddjsb2.LedControl(Leds.Deck.Deck1, Leds.PlayLed, false, GameService.GameStatusObservable.EliteAPI.Status.IsRunning); }
public static void SliderWithDetentNotifiedVM(PioneerDDJSB2 ddjsb2, string parameter, IState state) { var slider = state.Control as Slider; // The slider goes low to high. byte adjusted = (byte)((byte)0x7F - slider.Controls[0].ControlValue); SetDetentValueVM(ddjsb2, parameter, adjusted); }
private void ParametersUpdate(PioneerDDJSB2 ddjsb2, int changeEvent) { // Deck 2 Headphone Cue hooked to SpotifyA1Patch ddjsb2.LedControl( Leds.Deck.Deck2, Leds.HeadphoneCueLed, false, VoiceMeeter.Remote.GetParameter(SpotifyA1Patch) > 0); }
public static void ExplorerLog(PioneerDDJSB2 ddjsb2, Leds.Deck deck, Leds.PadGroup group, Led led, IState state) { var button = state.Control as Button; var on = button.NoteValue > 0; // Light the LED when pressed ddjsb2.PadLedControl(deck, group, led, false, on); if (on) { Utils.ExplorerLog().Wait(); } }
public static void SpotifyTrackChange(PioneerDDJSB2 ddjsb2, int mediaVkey, Leds.Deck deck, Led led, IState state) { var button = state.Control as Button; var on = button.NoteValue > 0; // Light the LED when pressed ddjsb2.LedControl(deck, led, false, on); if (on) { Utils.SendVKeyToProcess("Spotify", mediaVkey); } }
public static void RestartAudio(PioneerDDJSB2 ddjsb2, Leds.Deck deck, Leds.PadGroup group, Led led, IState state) { var button = state.Control as Button; var on = button.NoteValue > 0; ddjsb2.PadLedControl(deck, group, led, false, on); if (on) { // Restart Audio VoiceMeeter.Remote.Restart(); } }
private void StopAllEffects(PioneerDDJSB2 ddjsb2, Leds.Deck deck, Leds.PadGroup group, Led led, IState state) { var button = state.Control as Button; var on = button.NoteValue > 0; // Light the LED when on ddjsb2.PadLedControl(deck, group, led, false, on); if (on) { msffb2.StopAllEffects(); } }
private static void ReenableSound( PioneerDDJSB2 ddjsb2, string patchParameter, IDisposable skippingSubscription, Leds.Deck deck, Leds.PadGroup group, Led led, IObservable <long> observable) { VoiceMeeter.Remote.SetParameter(patchParameter, 1f); ddjsb2.PadLedControl(deck, group, led, false, false); skippingSubscription?.Dispose(); }
public static void SliderNotifiedVM(PioneerDDJSB2 ddjsb2, string parameter, IState state) { var slider = state.Control as Slider; // VoiceMeter DDJ-SB2 //-60 to +12 0 - 127 //(0-72) - 60 const float divisor = 72.0f / 127.0f; const float adjust = 60f; float value = ((float)slider.Controls[0].ControlValue * divisor) - adjust; VoiceMeeter.Remote.SetParameter(parameter, value); }
private void FocusWindowHandler(PioneerDDJSB2 ddjsb2, string process, Leds.Deck deck, IState state) { Logger.LogDebug($"FocusWindowHandler: {state.Control.Name}"); var button = state.Control as Button; var on = button.NoteValue > 0; // Light the LED when pressed ddjsb2.LedControl(deck, Leds.CueLed, false, on); if (on) { Utils.FocusWindow(process); } }
public static void SpotifyPlayPause(PioneerDDJSB2 ddjsb2, IState state) { var button = state.Control as Button; var on = button.NoteValue > 0; if (on) { // Launch if not running if (Utils.ProcessRunning("Spotify")) { Utils.SendVKeyToProcess("Spotify", MediaPlayPause); } else { Utils.Launch("spotify:"); } } }
public static void SetEqValueVM(PioneerDDJSB2 ddjsb2, string parameter, byte inputValue) { // Middle of dial/slider has detent. // VoiceMeter DDJ-SB2 // -12 to +12 0 - 127 const byte middle = 0x40; // Middle Dial Value const float adjust = 12f; const float divisor = 24.0f / 128.0f; float value = (((float)inputValue) * divisor) - adjust; if (inputValue == middle) { value = 0f; } VoiceMeeter.Remote.SetParameter(parameter, value); }
public static void EqDialNotifiedVM(PioneerDDJSB2 ddjsb2, string parameter, IState state) { var dial = state.Control as Dial; SetEqValueVM(ddjsb2, parameter, dial.Controls[0].ControlValue); }