Затруднение с синхронным воспроизведением двух звуков и более - PascalABC.NET
Формулировка задачи:
Использую SystemMediaPlayer и sound.play, но когда проигрывается один звук и резко начинает воспроизводиться второй, то он его как бы перекрывает, т.е отключает и сам проигрывается, а мне нужно, чтобы они воспроизводились синхронно и не перекрывали друг друга. Мне говорили, что дело в потоках, что нужно сделать как-то больше их, но как?
Решение задачи: «Затруднение с синхронным воспроизведением двух звуков и более»
textual
Листинг программы
procedure Form1.ckb1_CheckedChanged(sender: Object; e: EventArgs); begin randomize; var Player1 := new System.Windows.Media.MediaPlayer; Player1.Open( new System.Uri('amb\'+(PABCSystem.Random(6)+1)+'.mp3', System.UriKind.Relative)); if ckb1.checked then begin Player1.Play(); end else Player1.Stop(); end;
Объяснение кода листинга программы
- Объявлена процедура с именем ckb1_CheckedChanged.
- В начале процедуры объявлена случайная переменная типа Double с именем random.
- Создается новый объект типа MediaPlayer с именем Player1.
- Открывается файл с музыкой с помощью метода Open объекта Player1.
- Файл для воспроизведения выбирается с помощью строки формата 'amb' + (PABCSystem.Random(6) + 1) + '.mp3', где PABCSystem.Random(6) генерирует случайное число от 0 до 5, а (PABCSystem.Random(6) + 1) преобразует его в строку, которую затем добавляют к строке 'amb'.
- Если флажок ckb1.checked установлен в момент вызова процедуры, то начинается воспроизведение файла с помощью метода Play() объекта Player1.
- Если флажок ckb1.checked не установлен в момент вызова процедуры, то воспроизведение файла останавливается с помощью метода Stop() объекта Player1.