예제 #1
0
        public ModulatorType(System.IO.Stream stream)
        {
            var data = StreamHelperLe.ReadUInt16(stream);

            Type      = (SourceType)(data >> 10);
            Polarity  = (SourcePolarityType)((data >> 9) & 0x01);
            Direction = (SourceDirectionType)((data >> 8) & 0x01);

            if (((data >> 7) & 0x01) == 0)
            {
                Source = (ControllerSourceType)(data & 0x3F);
            }
            else
            {
                Source     = ControllerSourceType.MidiController;
                MidiSource = (MidiControllerType)(data & 0x3F);
            }
        }
예제 #2
0
        /// <summary>
        /// Creates a new midi controller message object.
        /// </summary>
        /// <param name="channel">The (zero-based) midi channel number.</param>
        /// <param name="controller">The type of continuous controller.</param>
        /// <param name="value">The (optional) parameter (usually value) of the controller.</param>
        /// <returns>Returns a new instance.</returns>
        public MidiControllerMessage CreateControllerMessage(byte channel, MidiControllerType controller, byte value)
        {
            Contract.Ensures(Contract.Result <MidiControllerMessage>() != null);
            Check.IfArgumentOutOfRange <byte>(channel, 0, 15, "channel");

            MidiData data = new MidiData();

            data.Status     = (byte)((int)MidiChannelCommand.ControlChange | channel);
            data.Parameter1 = (byte)controller;
            data.Parameter2 = value;

            MidiControllerMessage message = (MidiControllerMessage)this.Lookup(data);

            if (message == null)
            {
                message = new MidiControllerMessage(data);

                this.Add(message);
            }

            return(message);
        }
예제 #3
0
        /// <summary>
        /// Creates a new midi controller message object.
        /// </summary>
        /// <param name="channel">The (zero-based) midi channel number.</param>
        /// <param name="controller">The type of continuous controller.</param>
        /// <param name="value">The (optional) parameter (usually value) of the controller.</param>
        /// <returns>Returns a new instance.</returns>
        public MidiControllerMessage CreateControllerMessage(byte channel, MidiControllerType controller, byte value)
        {
            Check.IfArgumentOutOfRange <byte>(channel, 0, 15, nameof(channel));

            var data = new MidiData
            {
                Status     = (byte)((int)MidiChannelCommand.ControlChange | channel),
                Parameter1 = (byte)controller,
                Parameter2 = value
            };

            var message = (MidiControllerMessage)Lookup(data);

            if (message == null)
            {
                message = new MidiControllerMessage(data);

                Add(message);
            }

            return(message);
        }