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));
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        // 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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
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);
            }
        }
Ejemplo n.º 9
0
        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();
            }
        }
Ejemplo n.º 10
0
        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();
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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:");
                }
            }
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        public static void EqDialNotifiedVM(PioneerDDJSB2 ddjsb2, string parameter, IState state)
        {
            var dial = state.Control as Dial;

            SetEqValueVM(ddjsb2, parameter, dial.Controls[0].ControlValue);
        }