c语言实现音乐波形图

使用bass库和easyx实现

部分代码:

static int define_music(string music_name)//"open D:\\source\\music\\Sign.mp3 alias BGM"
{
	string prefix = "open D:\\source\\music\\";
	string suffix = ".mp3 alias BGM";
	string  define_music_name = prefix + music_name + suffix;
	cout << "音乐播放中的处理后的名字为" << define_music_name << endl;
	//char File_name[] = "open D:\\source\\music\\Sign.mp3 alias BGM";//"D:\source\music\我只在乎你_邓丽君.mp3"
	mciSendString(define_music_name.c_str(), NULL, NULL, NULL);//D:\\source\\music\\Marshmello_Anne_FRIENDS(V0).mp3
	mciSendString("play BGM", 0, 0, 0);//不能增加wait//否则会阻塞
	
	return 0;
}
static void draw_photo(string photo_name,string p_suffix)// "D:\source\photo\Sign\Sign1.jpg"
{
	IMAGE img;
	string prefix = "D:\\source\\photo\\";//"D:\\source\\photo\\";
	string prefixfile = "\\";
	string suffix = ".jpg";
	string name_photo = prefix+ photo_name + prefixfile + photo_name + p_suffix + suffix;
	loadimage(&img, name_photo.c_str(), 640, 440, true);
	putimage(300, 200, &img);
}
static int music_pause_judge()
{
	settextstyle(font_h, font_w, _T("Consolas"));
	settextcolor(BLACK);
	setbkmode(TRANSPARENT);
	char tip[][30] = { "shift+p=音乐暂停","shift+s=音乐播放","ESC=退出音乐播放" };
	for (int i = 0, top = 700, bottom = 840,left=0,right=426; i < 3; left+=426,right+=426, i++)
	{
		RECT r = { left,top,right,bottom };
		drawtext(tip[i], &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX);
	}
	
	if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('P') & 0x8000))//同时按下shift和p暂停
	{
		printf("暂停播放\n");
	    mciSendString("pause BGM", 0, 0, 0);
		while (1)//阻塞程序直到按下
		{
		if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('S') & 0x8000))//同时按下shift和r继续播放
			{
				mciSendString("resume BGM", 0, 0, 0);//播放暂停的音乐
				printf("继续播放\n");
				return 1;
			}

		if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)//按下esc键,退出程序  //防止在阻塞中无法退出
			{
					printf("关闭音乐退出播放界面\n");
					mciSendString("close BGM", 0, 0, 0);
					return 0;
			}
		}
	}
	if (GetAsyncKeyState(VK_ESCAPE) & 0x8000)//按下esc键,退出程序
	{
		printf("关闭音乐退出播放界面\n");
		mciSendString("close BGM", 0, 0, 0);
		return 0;
	}
	if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('L') & 0x8000))//切换下一首
	{
		printf("切换下一首");
		mciSendString("close BGM", 0, 0, 0);
		return 3;
	}
	if ((GetAsyncKeyState(VK_SHIFT) & 0x8000) && (GetAsyncKeyState('R') & 0x8000))//切换上一首
	{
		printf("切换上一首");
		mciSendString("close BGM", 0, 0, 0);
		return 2;
	}
	return 1;
}

运行截图

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值