Затруднение с синхронным воспроизведением двух звуков и более - 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;

Объяснение кода листинга программы

  1. Объявлена процедура с именем ckb1_CheckedChanged.
  2. В начале процедуры объявлена случайная переменная типа Double с именем random.
  3. Создается новый объект типа MediaPlayer с именем Player1.
  4. Открывается файл с музыкой с помощью метода Open объекта Player1.
  5. Файл для воспроизведения выбирается с помощью строки формата 'amb' + (PABCSystem.Random(6) + 1) + '.mp3', где PABCSystem.Random(6) генерирует случайное число от 0 до 5, а (PABCSystem.Random(6) + 1) преобразует его в строку, которую затем добавляют к строке 'amb'.
  6. Если флажок ckb1.checked установлен в момент вызова процедуры, то начинается воспроизведение файла с помощью метода Play() объекта Player1.
  7. Если флажок ckb1.checked не установлен в момент вызова процедуры, то воспроизведение файла останавливается с помощью метода Stop() объекта Player1.

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы