因此,我做了这个小功能,它将从.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/

10-11 15:41