示例#1
0
        public void UpdateAction()
        {
            Data.SpeakerAssignment assignment = Data.SpeakerAssignment.Default;
            bool random = randomButton.Checked;

            if (!random && !defaultButton.Checked)
            {
                if (oneSpeakerButton.Checked)
                {
                    switch (oneSpeakerBox.SelectedIndex)
                    {
                    case 0:
                        assignment = Data.SpeakerAssignment.LeftFront;
                        break;

                    case 1:
                        assignment = Data.SpeakerAssignment.RightFront;
                        break;

                    case 2:
                        assignment = Data.SpeakerAssignment.Center;
                        break;

                    case 3:
                        assignment = Data.SpeakerAssignment.LeftBack;
                        break;

                    case 4:
                        assignment = Data.SpeakerAssignment.RightBack;
                        break;

                    case 5:
                        assignment = Data.SpeakerAssignment.LeftCenterBack;
                        break;

                    case 6:
                        assignment = Data.SpeakerAssignment.RightCenterBack;
                        break;

                    case 7:
                        assignment = Data.SpeakerAssignment.Subwoofer;
                        break;

                    default:
                        assignment = Data.SpeakerAssignment.Default;
                        break;
                    }
                }
                else if (twoSpeakersButton.Checked)
                {
                    switch (twoSpeakersBox.SelectedIndex)
                    {
                    case 0:
                        assignment = Data.SpeakerAssignment.BothFronts;
                        break;

                    case 1:
                        assignment = Data.SpeakerAssignment.BothRears;
                        break;

                    case 2:
                        assignment = Data.SpeakerAssignment.BothCenterRears;
                        break;

                    case 3:
                        assignment = Data.SpeakerAssignment.CenterAndSubwoofer;
                        break;

                    default:
                        assignment = Data.SpeakerAssignment.Default;
                        break;
                    }
                }
                else if (allSpeakersButton.Checked)
                {
                    assignment = Data.SpeakerAssignment.AllSpeakers;
                }
            }
            Action.SetData(true, random, assignment);
        }
示例#2
0
        private static BASSFlag GetSpeakerFlag(ISoundFile file)
        {
            if (file.Effects == null || !file.Effects.SpeakerAssignment.Active)
            {
                return(BASSFlag.BASS_DEFAULT);
            }
            Data.SpeakerAssignment assignment = file.Effects.SpeakerAssignment.Assignment;
            int speakers = Bass.BASS_GetInfo().speakers;

            while (true)
            {
                if (file.Effects.SpeakerAssignment.Random)
                {
                    assignment = (Data.SpeakerAssignment)(PlayingModule.Randomizer.Next(1, speakers + 1));
                }
                BASSFlag flag = BASSFlag.BASS_DEFAULT;
                int      neededNrOfSpeakers = 2;
                switch (assignment)
                {
                case Data.SpeakerAssignment.LeftFront:
                    flag = BASSFlag.BASS_SPEAKER_FRONTLEFT;
                    break;

                case Data.SpeakerAssignment.RightFront:
                    flag = BASSFlag.BASS_SPEAKER_FRONTRIGHT;
                    break;

                case Data.SpeakerAssignment.LeftBack:
                    flag = BASSFlag.BASS_SPEAKER_REARLEFT;
                    neededNrOfSpeakers = 5;
                    break;

                case Data.SpeakerAssignment.RightBack:
                    flag = BASSFlag.BASS_SPEAKER_REARRIGHT;
                    neededNrOfSpeakers = 5;
                    break;

                case Data.SpeakerAssignment.Center:
                    flag = BASSFlag.BASS_SPEAKER_CENTER;
                    neededNrOfSpeakers = 5;
                    break;

                case Data.SpeakerAssignment.LeftCenterBack:
                    flag = BASSFlag.BASS_SPEAKER_REAR2LEFT;
                    neededNrOfSpeakers = 7;
                    break;

                case Data.SpeakerAssignment.RightCenterBack:
                    flag = BASSFlag.BASS_SPEAKER_REAR2RIGHT;
                    neededNrOfSpeakers = 7;
                    break;

                case Data.SpeakerAssignment.Subwoofer:
                    flag = BASSFlag.BASS_SPEAKER_LFE;
                    neededNrOfSpeakers = 5;
                    break;

                case Data.SpeakerAssignment.BothFronts:
                    flag = BASSFlag.BASS_SPEAKER_FRONT;
                    break;

                case Data.SpeakerAssignment.BothRears:
                    flag = BASSFlag.BASS_SPEAKER_REAR;
                    neededNrOfSpeakers = 5;
                    break;

                case Data.SpeakerAssignment.BothCenterRears:
                    flag = BASSFlag.BASS_SPEAKER_REAR2;
                    neededNrOfSpeakers = 7;
                    break;

                case Data.SpeakerAssignment.CenterAndSubwoofer:
                    flag = BASSFlag.BASS_SPEAKER_CENLFE;
                    neededNrOfSpeakers = 5;
                    break;

                case Data.SpeakerAssignment.AllSpeakers:
                    flag = BASSFlag.BASS_DEFAULT;
                    break;

                default:
                    break;
                }
                if (flag == BASSFlag.BASS_DEFAULT)
                {
                    return(BASSFlag.BASS_DEFAULT);
                }
                if (neededNrOfSpeakers > speakers)
                {
                    if (file.Effects.SpeakerAssignment.Random)
                    {
                        // just choose another speaker
                        continue;
                    }
                    else
                    {
                        ErrorHandling.BassErrorOccurred(file.Id, StringResources.SpeakerNotAvailable);
                        return(BASSFlag.BASS_DEFAULT);
                    }
                }
                else
                {
                    return(flag);
                }
            }
        }