void SetupMidiAccess(Context context)
        {
            #if TEST_MIDI_API_BASED_ACCESS
            acc = new Commons.Music.Midi.AndroidMidiAccess.MidiAccess (this);
            #else
            var acc = new FluidsynthMidiAccess ();
            this.acc = acc;
            acc.HandleNativeError = (messageManaged, messageNative) => {
                Android.Util.Log.Error ("FluidsynthPlayground", messageManaged + " : " + messageNative);
                return true;
            };
            acc.ConfigureSettings += settings => {
                settings [ConfigurationKeys.AudioSampleFormat].StringValue = "16bits"; // float or 16bits

                var manager = context.GetSystemService (Context.AudioService).JavaCast<AudioManager> ();

                // Note that SynthSampleRate is NOT audio sample rate but *synthesizing* sample rate.
                // So it is kind of wrong assumption that AudioManager.PropertyOutputSampleRate would give the best outcome...
                //var sr = double.Parse (manager.GetProperty (AudioManager.PropertyOutputSampleRate));
                //settings [ConfigurationKeys.SynthSampleRate].DoubleValue = sr;
                settings [ConfigurationKeys.SynthSampleRate].DoubleValue = 11025;

                var fpb = double.Parse (manager.GetProperty (AudioManager.PropertyOutputFramesPerBuffer));
                settings [ConfigurationKeys.AudioPeriodSize].IntValue = (int) fpb;
                //settings [ConfigurationKeys.SynthThreadSafeApi].IntValue = 0;
            };
            acc.SoundFontLoaderFactories.Add (syn => new SoundFontLoader (syn, new AndroidAssetStreamLoader (context.Assets)));
            SynthAndroidExtensions.GetSoundFonts (acc.SoundFonts, context, predefined_temp_path);
            #endif
        }
 public MainWindow()
 {
     InitializeComponent();
     access        = MidiAccessManager.Default;
     output        = access.OpenOutputAsync(access.Outputs.Last().Id).Result;
     this.KeyDown += new KeyEventHandler(OnButtonKeyDown);
 }
 public TestPage()
 {
     InitializeComponent();
     _access   = MidiAccessManager.Default;
     _messages = new ObservableCollection <string>();
     PopulateMessageTypes();
 }
Beispiel #4
0
        void SetupMidiAccess(Context context)
        {
#if TEST_MIDI_API_BASED_ACCESS
            acc = new Commons.Music.Midi.AndroidMidiAccess.MidiAccess(this);
#else
            var acc = new FluidsynthMidiAccess();
            this.acc = acc;
            acc.ConfigureSettings += settings => {
                settings [ConfigurationKeys.AudioSampleFormat].StringValue = "16bits";                 // float or 16bits

                var manager = context.GetSystemService(Context.AudioService).JavaCast <AudioManager> ();

                // Note that SynthSampleRate is NOT audio sample rate but *synthesizing* sample rate.
                // So it is kind of wrong assumption that AudioManager.PropertyOutputSampleRate would give the best outcome...
                //var sr = double.Parse (manager.GetProperty (AudioManager.PropertyOutputSampleRate));
                //settings [ConfigurationKeys.SynthSampleRate].DoubleValue = sr;
                settings [ConfigurationKeys.SynthSampleRate].DoubleValue = 11025;

                var fpb = double.Parse(manager.GetProperty(AudioManager.PropertyOutputFramesPerBuffer));
                settings [ConfigurationKeys.AudioPeriodSize].IntValue    = (int)fpb;
                settings [ConfigurationKeys.SynthThreadSafeApi].IntValue = 0;
                settings [ConfigurationKeys.AudioDriver].StringValue     = "oboe";
                acc.SoundFontLoaderFactories.Add(syn => new AndroidNativeAssetSoundFontLoader(settings, context.Assets));
            };
            SynthAndroidExtensions.GetSoundFonts(acc.SoundFonts, context, predefined_temp_path);
#endif
        }
        public LaunchPadManager(IMidiAccess access, IMidiInput input, IMidiOutput output)
        {
            if (input == null || output == null)
            {
                throw new ArgumentException("Please choose the connected Launchpad S before going further");
            }

            this.access = access;
            this.input  = input;
            this.output = output;

            StartListener();
        }
        public MainWindow()
        {
            InitializeComponent();

            access = MidiAccessManager.Default;

            LaunchPadInputs.ItemsSource  = access.Inputs.ToList().Select((dev) => { return(dev); });
            LaunchPadOutputs.ItemsSource = access.Outputs.ToList().Select((dev) => { return(dev); });

            LaunchPadInputs.DisplayMemberPath  = "Name";
            LaunchPadOutputs.DisplayMemberPath = "Name";

            LaunchPadInputs.SelectedValuePath  = "Id";
            LaunchPadOutputs.SelectedValuePath = "Id";

            LaunchPadInputs.SelectedIndex  = 0;
            LaunchPadOutputs.SelectedIndex = 1;
        }
Beispiel #7
0
        void SetupMidiDevices()
        {
            access = MidiAccessManager.Default;

            Application.ApplicationExit += delegate {
                if (output != null)
                {
                    output.Dispose();
                }
            };

            if (!access.Outputs.Any())
            {
                MessageBox.Show("No MIDI output device was found.");
                Application.Exit();
                return;
            }

            SwitchToDevice(access.Outputs.First().Id, false);
        }
Beispiel #8
0
        public MidiManager(IMonitor monitor)
        {
            this.Monitor = monitor;
            this.Monitor.Log("Initializing MIDI Framework", LogLevel.Info);
            midi = MidiAccessManager.Default;
            var numdevices = midi.Inputs.Count();

            if (numdevices <= 0)
            {
                this.Monitor.Log("No Devices Found. Please connect MIDI Device to use this mod.", LogLevel.Info);
                this.Monitor.Log("Any Mods requiring this framework will be disabled.", LogLevel.Info);
                return;
            }
            inDevice = new List <IMidiInput>();
            this.Monitor.Log($"Midi Framework Initialized. Found {numdevices} device{ ((numdevices == 0 || numdevices > 1) ? ("s") : ("")) }", LogLevel.Info);
            for (int i = 0; i < numdevices; i++)
            {
                inDevice.Add(midi.OpenInputAsync(midi.Inputs.ElementAt(i).Id).Result);
                this.Monitor.Log($"Device {i}: {inDevice[i].Details.Name}", LogLevel.Debug);
            }
        }
        public static MidiPlayer GetMidiPlayer(IMidiPlayerTimeManager timeManager = null, IMidiAccess midiAccess = null, string resourceId = null)
        {
            var access = midiAccess ?? MidiAccessManager.Empty;
            var music  = resourceId != null?GetMidiMusic(resourceId) : GetMidiMusic();

            var tm = timeManager ?? new VirtualMidiPlayerTimeManager();

            return(new MidiPlayer(music, access, tm));
        }
        public static MidiPlayer GetMidiPlayer(IMidiPlayerTimeManager timeManager, MidiMusic midiMusic, IMidiAccess midiAccess = null)
        {
            var access = midiAccess ?? MidiAccessManager.Empty;
            var music  = midiMusic ?? GetMidiMusic();
            var tm     = timeManager ?? new VirtualMidiPlayerTimeManager();

            return(new MidiPlayer(music, access, tm));
        }
Beispiel #11
0
 public MidiPlayer(MidiMusic music, IMidiAccess access, IMidiPlayerTimeManager timeManager)
     : this(music, access.OpenOutputAsync(access.Outputs.First().Id).Result, timeManager)
 {
     should_dispose_output = true;
 }
Beispiel #12
0
 public MidiPlayer(MidiMusic music, IMidiAccess access)
     : this(music, access, new SimpleAdjustingMidiPlayerTimeManager())
 {
 }
Beispiel #13
0
 public RawMidiProcessor(IMidiAccess access)
     : this(access.OpenOutputAsync(access.Outputs.First().Id).Result)
 {
 }
Beispiel #14
0
 public MidiPlayer(SmfMusic music, IMidiAccess access)
     : this(music, access, new SimpleMidiTimeManager())
 {
 }
Beispiel #15
0
 public MidiPlayer(SmfMusic music, IMidiAccess access, IMidiTimeManager timeManager)
     : this(music, access.OpenOutputAsync (access.Outputs.First ().Id).Result, timeManager)
 {
     should_dispose_output = true;
 }
Beispiel #16
0
 public MidiPlayer(SmfMusic music, IMidiAccess access)
     : this(music, access, new SimpleMidiTimeManager ())
 {
 }