C# Воспроизвести список звуков
У меня есть простая клавиатура пианино, которая играет ноту при каждом нажатии клавиши. Я хочу сохранить каждую заметку в списке, а затем воспроизводить все заметки друг за другом, когда нажата кнопка "Воспроизведение". Я уже создал список и добавляю каждую заметку в список. Но у меня проблемы с просмотром списка и воспроизведением каждого звука.
MusicNote mn = new MusicNote(count, duration, bNoteShape, xLoc, mk.musicNote);
notes.Add(mn);
mn.Location = new Point(xLoc, yLoc);
this.panel1.Controls.Add(mn.drawNote());
private void Play_Click(object sender, EventArgs e)
{
foreach(MusicNote mn in notes)
{
textBox2.Text += mn.ToString();
sp.SoundLocation = @"C:/Users/Daryl/Desktop/mapped/" + mn.musicNote + ".wav"; //change this to the location of your "mapped" folder
sp.Play();
}
}
К сожалению, после нажатия кнопки воспроизводится только последняя нота.
1 ответ
Возможно, причина в том, что вы не дожидаетесь окончания каждого звука, и звук "переопределяется". Таким образом, вы слышите только последний. Вы должны убедиться, что воспроизведение звука закончено, прежде чем переходить к другому на вашей итерации.
Если предположить, sp
в вашем коде это экземпляр SoundPlayer
учебный класс. Ты можешь использовать sp.PlaySync()
чтобы ваша программа остановилась перед переходом к следующему звуку.