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); }
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); } } }