属性 of { return 60000 / bpm } 总是 returning 600ms?
Property of { return 60000 / bpm } always returning 600ms?
我正在尝试构建一个稳定的节拍器,让每个节拍都滴答作响,但似乎有问题。
节拍器等待每个节拍的时间由以下公式确定:60000 / BPM
但是,无论您将什么值插入 BPM,该值似乎都是 return 特定数字。
我有一个 属性,它 return 是这个公式的值,还有一个 bpm 整数:
static private int bpm = 125;
static private int BeatLength
{
get
{
return 60000 / bpm;
}
}
static public int beat = 0;
这里是负责节拍器的函数(它在专用线程上运行):
public static void RhythmUpdate()
{
lock (threadLock)
{
while (true)
{
Thread.Sleep(BeatLength); // Sleep until the next beat
AddRequest(BeatLength * beat);
beat++;
DefaultSounds.def_CowBell.Play();
OnBeat?.Invoke();
}
}
}
断点 def_CowBell.Play();
时,Visual Studio 指出循环需要大约 600 毫秒。这就是我知道价值的方式。
额外信息:
我正在使用 OpenGL
如果被问到可能会更多...
在此先感谢您的帮助。
事实证明,我一直在一个函数上设置 BPM,每当我对其初始化进行更改时,它就会被新的 BPM 覆盖。
public static void StartBeat(int startingBPM)
{
rhythmThread = new Thread(new ThreadStart(RhythmUpdate)); // Initialize new thread
bpm = startingBPM; // < This piece of codde was the source.
rhythmThread.Name = "BeatThread";
rhythmThread.Start(); // Start the thread
}
目前,我将在测试时禁用该行代码。
我正在尝试构建一个稳定的节拍器,让每个节拍都滴答作响,但似乎有问题。
节拍器等待每个节拍的时间由以下公式确定:60000 / BPM
但是,无论您将什么值插入 BPM,该值似乎都是 return 特定数字。
我有一个 属性,它 return 是这个公式的值,还有一个 bpm 整数:
static private int bpm = 125;
static private int BeatLength
{
get
{
return 60000 / bpm;
}
}
static public int beat = 0;
这里是负责节拍器的函数(它在专用线程上运行):
public static void RhythmUpdate()
{
lock (threadLock)
{
while (true)
{
Thread.Sleep(BeatLength); // Sleep until the next beat
AddRequest(BeatLength * beat);
beat++;
DefaultSounds.def_CowBell.Play();
OnBeat?.Invoke();
}
}
}
断点 def_CowBell.Play();
时,Visual Studio 指出循环需要大约 600 毫秒。这就是我知道价值的方式。
额外信息:
我正在使用 OpenGL
如果被问到可能会更多...
在此先感谢您的帮助。
事实证明,我一直在一个函数上设置 BPM,每当我对其初始化进行更改时,它就会被新的 BPM 覆盖。
public static void StartBeat(int startingBPM)
{
rhythmThread = new Thread(new ThreadStart(RhythmUpdate)); // Initialize new thread
bpm = startingBPM; // < This piece of codde was the source.
rhythmThread.Name = "BeatThread";
rhythmThread.Start(); // Start the thread
}
目前,我将在测试时禁用该行代码。