C 实现的Music

     HappyBirthday

            

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	// 播放  生日快乐
     unsigned FREQUENCY[] = {392,392,440,392,523,494,   
		392,392,440,392,587,523,   
		392,392,784,659,523,494,440,   
		689,689,523,587,523};   

    unsigned DELAY[] = {375,125,500,500,500,1000,   
		375,125,500,500,500,1000,   
		375,125,500,500,500,500,1000,   
		375,125,500,500,500,1000};   
    int i;   
    for (i = 0; i < 25; i++)   
    {   
		Beep(FREQUENCY[i], DELAY[i]);   
    }   
	return 0;
}

 

   小酒窝

enum fy{
	d1 = 262,
	d1_ = 277,
	d2 = 294,
	d2_ = 311,
	d3 = 330,
	d4 = 349,
	d5 = 392,
	d5_= 415,
	d6 = 440,
	d6_= 466,
	d7 = 494,
	z1 = 523,
	z1_ = 554,
	z2 = 578,
	z2_ = 622,
	z3 = 659,
	z4 = 698,
	z4_ = 740,
	z5 = 784,
	z5_ = 831,
	z6 = 880,
	z6_ = 932,
	z7 = 988,
	g1 = 1046,
	g1_ = 1109,
	g2 = 1175,
	g2_ = 1245,
	g3 = 1318,
	g4 = 1397,
	g4_ = 1480,
	g5 = 1568,
	g5_ = 1661,
	g6 = 1760,
	g6_ = 1865,
	g7 = 1976,
	yaya = 0
};

struct yf
{
	enum fy s;
	int t;
};

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
    // 播放  小酒窝

	int n = 0;

	struct yf a[1000]={{z3,125},{z3,50},{z4,100},{z3,50},{z2,50}, //5
	{z2,125},{z2,50},{z5,100},{z2,50},{z1,50}, //10
	{z1,125},{z1,50},{z6,100},{z5,100},    //14
	{z3,125},{z4,25},{z3,25},{z2,100},{z2,100}, //19
	{z3,125},{z3,50},{z4,100},{z5,50},{z3,50}, //24
	{z5,125},{z5,50},{g2,100},{z7,50},{g1,50}, //29
	{g1,200},{g1,50},{z7,50},{z6,50},{z7,50}, //34
	{g1,125},{z7,50},{g1,200},      //37
	{g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{z3,50},{z5,50}, //44
	{z5,250},{z6,50},{z7,50},      //47
	{g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g2,100},{g3,100}, //54
	{g3,300},{z6,50},{z7,50},   //57
	{g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g3,100}, //63
	{z7,50},{z6,50},{z7,50},{z6,50},{z7,50},{z5,50},{z5,50},{g1,50}, //71
	{g1,200},{g3,75},{g4,25},{g4,50},{g3,50}, //76
	{g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //81
	{g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //88
	{g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //96
	{g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{yaya,50},{z7,50}, //103
	{g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //110
	{z6,100},{z5,50},{z6,50},{z7,100},{g3,50},{g4,50}, //116
	{g3,50},{g4,50},{g3,50},{g2,50},{g2,50},{g1,100},{z5,50}, //123
	{z5,50},{z4,50},{z4,50},{g1,50},{g1,50},{g3,50},{g3,50},{g1,50}, //131
	{g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //136
	{g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //143
	{g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //151
	{g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{z3,50},{z7,50}, //158
	{g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //165
	{z6,50},{z7,50},{g1,50},{g2,100},{g3,50},{g4,50}, //171
	{g3,50},{g4,50},{g2,50},{g1,50},{g2,50},{g1,50},{g1,100}, //178
	{g2,50},{g1,50},{g2,50},{z6,50},{g1,100},{g2,50},{g1,50}, //185
	{g1,400},   //186
	{g2,50},{g1,50},{g2,50},{z6,50},{z7,100},{z7,50},{g1,50}, //193
	{g1,400},   //194
	};

	struct yf *atop;
	atop = a;
	n = 194;

	while(n--)
	{
		Beep(atop->s,atop->t*5);
		atop++;
	}

	return 0;
}


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现音乐可以使用C语言的音频库,例如ALSA、PortAudio、SDL等库,这些库都可以在C语言中使用。你可以使用这些库来读取音频文件,将音频数据解码,并将其发送到音频设备进行播放。以下是使用ALSA库实现播放音乐的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <alsa/asoundlib.h> int main(int argc, char *argv[]) { // 打开默认的PCM设备 snd_pcm_t *pcm_handle; int err = snd_pcm_open(&pcm_handle, "default", SND_PCM_STREAM_PLAYBACK, 0); if (err < 0) { printf("Unable to open PCM device: %s\n", snd_strerror(err)); return 1; } // 配置PCM参数 snd_pcm_hw_params_t *params; snd_pcm_hw_params_alloca(&params); snd_pcm_hw_params_any(pcm_handle, params); snd_pcm_hw_params_set_access(pcm_handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); snd_pcm_hw_params_set_format(pcm_handle, params, SND_PCM_FORMAT_S16_LE); snd_pcm_hw_params_set_channels(pcm_handle, params, 2); unsigned int rate = 44100; snd_pcm_hw_params_set_rate_near(pcm_handle, params, &rate, 0); err = snd_pcm_hw_params(pcm_handle, params); if (err < 0) { printf("Unable to configure PCM device: %s\n", snd_strerror(err)); return 1; } // 打开音频文件 FILE *fp = fopen(argv[1], "rb"); if (!fp) { printf("Unable to open file: %s\n", argv[1]); return 1; } // 读取音频数据并写入PCM设备 char buf[1024]; int read_count; while ((read_count = fread(buf, 1, sizeof(buf), fp)) > 0) { err = snd_pcm_writei(pcm_handle, buf, read_count / 4); if (err < 0) { printf("Unable to write PCM device: %s\n", snd_strerror(err)); break; } } // 关闭音频文件和PCM设备 fclose(fp); snd_pcm_close(pcm_handle); return 0; } ``` 你可以将音频文件作为命令行参数传递给该程序,例如: ``` $ ./play_music music.wav ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值