示例#1
0
        // ------

        private void SetProgram(int channel, int programNumber, ToneItem tone, bool forceChange = false)
        {
            if (!forceChange && toneParameterList[channel] == tone.ToneParameter)
            {
                toneVolumes[channel] = tone.Volume;
                SetPanpot(channel, tone.Panpot);
                return;
            }

            toneParameterList[channel] = tone.ToneParameter;
            programNumbers[channel]    = programNumber;
            toneVolumes[channel]       = tone.Volume;
            SetPanpot(channel, tone.Panpot);
            SendProgramChange(channel);
            //Console.WriteLine($"Perc: {tone.Name} - {tone.PercussionNumber}");
        }
示例#2
0
        public void NotifyChangeTone(ToneItem toneItem)
        {
            if (toneItem == null || !toneItem.ProgramNumberAssigned)
            {
                return;
            }

            var i = 0;

            for (; i < 16; i++)
            {
                if (toneParameterList[i] == toneItem.ToneParameter)
                {
                    break;
                }
            }

            if (i == 16)
            {
                return;
            }

            ProgramChange(i, toneItem.ProgramNumber, true);
        }