Exemplo n.º 1
0
            public override IMidiInput CreateVirtualOutputReceiver(PortCreatorContext context)
            {
                var       nclient = new MidiClient(context.ApplicationName ?? "managed-midi virtual out");
                MidiError error;
                var       portName  = context.PortName ?? "managed-midi virtual out port";
                var       nendpoint = nclient.CreateVirtualDestination(portName, out error);

                nendpoint.Manufacturer = context.Manufacturer;
                nendpoint.DisplayName  = portName;
                nendpoint.Name         = portName;
                var details = new CoreMidiPortDetails(nendpoint);

                return(new CoreMidiInput(details));
            }
Exemplo n.º 2
0
		public async void MidiTest (UILabel label)
		{
			this.label = label;
			CreateAUGraph ();
			ConfigureAndStartAudioProcessingGraph (processingGraph);

			virtualMidi = new MidiClient ("VirtualClient");
			virtualMidi.IOError += (object sender, IOErrorEventArgs e) => {
				Console.WriteLine ("IO Error, messageId={0}", e.ErrorCode);
			};

			virtualMidi.PropertyChanged += (object sender, ObjectPropertyChangedEventArgs e) => {
				Console.WriteLine ("Property changed: " + e.MidiObject + ", " + e.PropertyName);
			};

			MidiError error;
			virtualEndpoint = virtualMidi.CreateVirtualDestination ("Virtual Destination", out error);

			if (error != MidiError.Ok)
				throw new Exception ("Error creating virtual destination: " + error);
			virtualEndpoint.MessageReceived += MidiMessageReceived;

			var sequence = new MusicSequence ();

			var midiFilePath = NSBundle.MainBundle.PathForResource ("simpletest", "mid");
			var midiFileurl = NSUrl.FromFilename (midiFilePath);

			sequence.LoadFile (midiFileurl, MusicSequenceFileTypeID.Midi);

			var player = new MusicPlayer ();

			sequence.SetMidiEndpoint (virtualEndpoint);

			var presetUrl = CFUrl.FromFile (NSBundle.MainBundle.PathForResource ("Gorts_Filters", "sf2"));

			LoadFromDLSOrSoundFont (presetUrl, 10);

			player.MusicSequence = sequence;
			player.Preroll ();
			player.Start ();

			MusicTrack track;
			track = sequence.GetTrack (1);
			var length = track.TrackLength;

			while (true) {
				await Task.Delay (TimeSpan.FromSeconds (3));
				double now = player.Time;
				if (now > length)
					break;
			}

			player.Stop ();
			sequence.Dispose ();
			player.Dispose ();
			label.Text = "Done";
		}
Exemplo n.º 3
0
        public async void MidiTest(UILabel label)
        {
            this.label = label;
            CreateAUGraph();
            ConfigureAndStartAudioProcessingGraph(processingGraph);

            virtualMidi          = new MidiClient("VirtualClient");
            virtualMidi.IOError += (object sender, IOErrorEventArgs e) => {
                Console.WriteLine("IO Error, messageId={0}", e.ErrorCode);
            };

            virtualMidi.PropertyChanged += (object sender, ObjectPropertyChangedEventArgs e) => {
                Console.WriteLine("Property changed: " + e.MidiObject + ", " + e.PropertyName);
            };

            MidiError error;

            virtualEndpoint = virtualMidi.CreateVirtualDestination("Virtual Destination", out error);

            if (error != MidiError.Ok)
            {
                throw new Exception("Error creating virtual destination: " + error);
            }
            virtualEndpoint.MessageReceived += MidiMessageReceived;

            var sequence = new MusicSequence();

            var midiFilePath = NSBundle.MainBundle.PathForResource("simpletest", "mid");
            var midiFileurl  = NSUrl.FromFilename(midiFilePath);

            sequence.LoadFile(midiFileurl, MusicSequenceFileTypeID.Midi);

            var player = new MusicPlayer();

            sequence.SetMidiEndpoint(virtualEndpoint);

            var presetUrl = CFUrl.FromFile(NSBundle.MainBundle.PathForResource("gorts_filters", "sf2"));

            LoadFromDLSOrSoundFont(presetUrl, 10);

            player.MusicSequence = sequence;
            player.Preroll();
            player.Start();

            MusicTrack track;

            track = sequence.GetTrack(1);
            var length = track.TrackLength;

            while (true)
            {
                await Task.Delay(TimeSpan.FromSeconds(3));

                double now = player.Time;
                if (now > length)
                {
                    break;
                }
            }

            player.Stop();
            sequence.Dispose();
            player.Dispose();
            label.Text = "Done";
        }