因此,我做了这个小功能,它将从.txt文件读取音符的频率和持续时间并播放音符,这样我就可以播放一些小调。但是有时,在演奏它们时,某些音符听起来会很奇怪,就像失真一样。显然有问题。所以我很担心,因为Windows的Beep()函数不是出于此目的而编写的,所以使用它播放歌曲可能会损坏我的声卡。这样的事情会发生吗?这是我正在使用的功能,
int PlaySong()
{
ifstream File("\Text.txt");
if (File.is_open() == false)
return -1;
int F = 0;
int D = 0;
while (File.eof() == false)
{
File >> F >> D;
Beep(F, D);
}
return 0;
}
最佳答案
简短答案-不。如果声音不正确,则可能是声卡驱动程序或超出范围的参数所致。
您尚未透露输入数据,但频率变化非常短的非常短的时间可能少于音乐,并且会因音调不完整而产生不受控制的谐波。当周期小于1 / F时,尤其如此,但是任何突然的频率开关都会引入不连续性,从而产生谐波,并且可以清晰地听到此声音。
至少从Windows 7起,似乎已经明确定义Beep()可以与声卡一起使用。在此之前,它将不被支持,或者将直接从计时器芯片驱动扬声器。
从MSDN Beep documentation:
关于c++ - Win中的Beep()函数会损坏我的声卡吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23904188/