【求助】在运行Beep函数的时候无法发出流畅的声音
在运行下面代码的时候,同学运行出的是流畅的音乐,而我则只能放出有较大间隔的单个音,并且在发出前三个音之后就算等待许久也无法继续发出。求大神看看解决方法!!!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
int speed = 1, t;
void menu(void);
void sound1(int freq, int t);
void pause(int t);
void xueronghua(void);
void xiaoxingxing(void);
void happybirthday(void);
void display(char* qm);
int main(void)
{
menu();
return 0;
}
void menu(void)
{
int sel;
do {
system("cls");
printf("\n\t\t********欢迎进入歌曲点播系统********\n\n");
printf("\t\t\t1.雪绒花\n");
printf("\t\t\t2.小星星\n");
printf("\t\t\t3.HAPPY BIRTHDAY\n");
printf("\t\t\t0.退出系统\n");
printf("\n\n\t\t************************************");
printf("\n请选择(0-3)\n");
scanf("%d", &sel);
switch (sel) {
case 1:xueronghua(); break;
case 2:xiaoxingxing(); break;
case 3:happybirthday(); break;
case 0:exit(1);
}
} while (1);
}
void xueronghua(void) /*雪绒花曲谱*/
{
char* jp = (char*)"iddgwwwqqgfffddddfghhhggg ddgwwwqqgfffddgghjqqqqqwpggjhgddgqqq hhqwwqjjjgggddgwwwqqgfffddgghjqqqqqq";
speed = 10;
t = 4 * speed;
//gotoxy(40,20);
printf("\t\t\n请欣赏歌曲:雪绒花");
printf("\n\t\t\t雪绒花,雪绒花,清晨迎着我开放。");
printf("\n\t\t\t小而白,洁而亮,向我快乐的摇晃。");
printf("\n\t\t\t白雪般的花儿,愿你芬芳,永远开花生长。");
printf("\n\t\t\t雪绒花,雪绒花,永远祝福我家乡。\n");
display(jp);
printf("雪绒花欣赏完毕");
printf("按任意键返回主菜单");
_getch();
menu();
}
void xiaoxingxing(void) /*小星星曲谱*/
{
char* jp = (char*)"oaagghhggffddssaaggffddssggffddssaagghhggffddssaaaagghhggffddssaaggffddssggffddssaagghhggffddssaa";
speed = 10;
t = 4 * speed;
//gotoxy(40,20);
printf("请欣赏歌曲:小星星");
printf("\n\t\t\t一闪一闪亮晶晶,满天都是小星星,");
printf("\n\t\t\t挂在天空放光明,好象千万小眼睛。");
printf("\n\t\t\t太阳慢慢向西沉,乌鸦回家一群群,");
printf("\n\t\t\t星星眨着小眼睛,闪闪烁烁到天明。\n");
display(jp);
printf("小星星欣赏完毕");
printf("按任意键返回主菜单");
_getch();
menu();
}
void happybirthday(void) /*生日快乐曲谱*/
{
char* jp = (char*)"ippppbbnnbbaammmmbbnnbbssaaaabbggddaammmhfddaassaaappp";
speed = 5;
t = 4 * speed;
// gotoxy(40,20);
printf("请欣赏歌曲:HAPPY BIRTHDAY");
printf("\n\t\t\tHAAPY BIRTHDAY TO YOU,");
printf("\n\t\t\tHAAPY BIRTHDAY TO YOU,");
printf("\n\t\t\tHAAPY BIRTHDAY TO YOU,");
printf("\n\t\t\tHAAPY BIRTHDAY TO YOU.\n");
display(jp);
printf("HAPPY BIRTHDAY欣赏完毕");
printf("按任意键返回主菜单");
_getch();
menu();
}
void display(char* qm) /*演奏功能*/
{
int i, freq;
while (*qm++ != '\0') {
i = 1;
switch (*qm) {
case 'k': t = 1 * speed; i = 0; break;
case 'l': t = 2 * speed; i = 0; break;
case 'i': t = 4 * speed; i = 0; break;
case 'o': t = 6 * speed; i = 0; break;
case 'p': pause(t); i = 0; break;
case 'a': freq = 523; break;
case 's': freq = 587; break;
case 'd': freq = 659; break;
case 'f': freq = 698; break;
case 'g': freq = 784; break;
case 'h': freq = 880; break;
case 'j': freq = 988; break;
case 'z': freq = 262; break;
case 'x': freq = 294; break;
case 'c': freq = 330; break;
case 'v': freq = 349; break;
case 'b': freq = 392; break;
case 'n': freq = 440; break;
case 'm': freq = 494; break;
case 'q': freq = 1047; break;
case 'w': freq = 1175; break;
case 'e': freq = 1319; break;
case 'r': freq = 1397; break;
case 't': freq = 2568; break;
case 'y': freq = 1760; break;
case 'u': freq = 1976; break;
default: i = 0; break;
}
if (i)
sound1(freq, t);
}
}
void sound1(int freq, int t) /*发声函数*/
{
int n;
Beep(freq, 500);
n = t + clock();
while (n > clock());
Beep(1, 1);
}
void pause(int t) /*暂停函数*/
{
int n;
n = t + clock();
while (n > clock())
Beep(1, 1);
}
相关推荐
蜂鸣器发出指定频率的声音
驱动电脑蜂鸣器发出指定频率的声音,此功能必须有硬件平台蜂鸣器的支持
python调用机器喇叭发出蜂鸣声(Beep)的方法
主要介绍了python调用机器喇叭发出蜂鸣声(Beep)的方法,实例分析了Python调用winsound模块的使用技巧,需要的朋友可以参考下
模拟QQ抖屏同时发出beep声音
C++模拟QQ抖屏同时发出beep声音,初学C++的可以看看,很简单。。。
C++中发声函数Beep用法
本文给大家分享的是Beep函数的用法以及会使扬声器发出简单的声音的示例,有需要的小伙伴可以参考下
通过参数调节beep声音的列子
这是用VB开发的用于调节声音的项目,beep声音是主板发出来的声音,看看该项目中是怎样调节的!


新手乐园
