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() чтобы ваша программа остановилась перед переходом к следующему звуку.

Другие вопросы по тегам