I持っているのArrayListに保存されている音符を再生するための、次のプレイ方法:C#設定した時間とプレイはArrayListの中に保存された音を連続して
public void Play(Duration d){
int duration = 1;
if (d == Duration.SemiBreve)
{
duration = 16;
}
else if (d == Duration.DotMin)
{
duration = 10;
}
else if (d == Duration.minim)
{
duration = 8;
}
else if (d == Duration.Crotchet)
{
duration = 4;
}
else if (d == Duration.Quaver)
{
duration = 2;
}
else if (d == Duration.SemiQuaver)
{
duration = 1;
}
player = new SoundPlayer();
player.SoundLocation = "pathToLocation";
//set timer
time = new Timer();
time.Tick += new EventHandler(clockTick);
time.Interval = duration * 150;
player.Play();
time.Start();
}
私はボタンでメソッドを呼び出すとき:
private void PlayButton_Click(object sender, EventArgs e)
{
//Loops through the collection and plays each note one after the other
foreach (MusicNote music in this.staff.Notes)
{
music.Play(music.Dur)
}
}
を
最後の音だけが再生されます。 PlaySync()では、すべての音符が再生されますが、継続時間は認識されません。私はまた、スレッドをこのように使用しようとしました:
foreach (MusicNote music in this.staff.Notes)
{
Thread t = new Thread(playMethod=>music.Play(music.Dur));
t.Start();
t.Join();
}
しかし、どちらも動作しません。 PlaySyncのようにファイルを連続して再生する方法はありますか?
一度に1つの音符を演奏するには、いくつかのロジックを追加する必要があります。ボタンがクリックされた後にただ1つの音符を演奏するように、それを動作させるようにしてください。その後、タイマーを追加します。 – CodingBarfield