这个程序着实花费了我好长的时间,我本身对音乐一窍不通,先是跟着girl friend学习了简谱,根据c调44拍的《千本樱》写下了下面的程序。

 #include<stdio.h>
#include<dos.h>
void mysound(unsigned int freq,int times)
{
int i;
union
{
int divisor;
char c[];
} count;
char bits;
count.divisor=/freq;
outportb(0x43,0xb6);
outportb(0x42,count.c[]);
outportb(0x42,count.c[]);
bits=inportb(0x61);
outportb(0x61,bits|);
for(i=; i<times; i++)
delay();
outport(0x61,bits&0xfc);
outportb(0x61,bits);
}
int main()
{
int freq[]= {,,,,,,,};
int song[]= {,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,, ,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,, ,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,, ,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,, ,,,,,,,,
,,,,,,-,,
,,,,,,,,
,,,,,, ,,,,,,,,
,,,,,,-,,
,,,,,,,,
,,,,,, ,,,,
,,,-,-,-,-,
-,,-,,,
,,,,,, ,,,,
,,,-,-,-,-,,
,,,,,
,,,,, ,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,, ,,,,,,,
,,,,,,,
,,,,
,,,,,,, ,,,,,,
,,,,
,,,, };
float div[]= {,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,, ,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,, ,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,, ,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,, ,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,, ,,,,,,,,
,,,,,,,,
,,,,,,,,
,,,,,, ,,,,
,,,,,,,
,,,,,
,,,,,, ,,,,
,,,,,,,,
,,,,,
,,,,, ,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,, ,,,,,,,
,,,,,,,
,,,,
,,,,,,, ,,,,,,
,,,,
,,,, };
unsigned int f;
int times,i;
for(i=; song[]; i++)
{
if(song[i]<)
f=freq[-song[i]]/;
else if(song[i]>)
f=freq[song[i]%]*;
else if(song[i]==)
f=;
else
f=freq[song[i]];
times=/div[i];
mysound(f,times);
}
return ;
}

再附上两首简单音乐的代码:

   int song[]={   ,,,,,,,,
,,,,,,
,,,,,
,,,,,,
,,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,
,,,,,,
,,,,,
,,,,, };
float div[]={ ,,,,,,,,
,,,,,,
,,,,,
,,,,,,
,,,,,,,
,,,,,,
,,,,,,
,,,,,,
,,,,,
,,,,,,
,,,,,
,,,,, };
  int song[]= {
,,,,,,,
,,,,,
,,,,,,,
,,,,, ,,,,,
,,,,,
,,,,,,
,,,,,
,,,,,, ,,,,,
,,,,,,-,
,,-,,
,,,,,,
,,,,
,,, };
float div[]= {
,,,,,,,
,,,,,
,,,,,,,
,,,,, ,,,,,
,,,,,
,,,,,,
,,,,,
,,,,,, ,,,,,
,,,,,,,
,,,,
,,,,,,
,,,,
,,,
};

c语言乐曲演奏——《千本樱》的更多相关文章

  1. VHDL 乐曲演奏电路设计

    前言 无源蜂鸣器在直流信号下不会响,需要方波驱动.输入不同频率的方波会发出不同音调的声音,方波的幅值决定了声音的响度. 目标 乐曲发生电路在节拍(4Hz)的控制下根据乐谱产生合适的分频系数.分频器根据 ...

  2. LeCun自曝使用C语言23年之久,2年前才上手Python,还曾短暂尝试Lua!

    程序员圈子的流行风潮,过几年就怀旧风走一波. 这不,最近Twitter上刮起了一阵编程语言使用历史的风潮. 连图灵奖得主.CNN之父-- Yann LeCun 也参与进来了. 他自曝使用C语言时间最长 ...

  3. [转]MIDI常识20条

    原文链接:http://www.midifan.com/modulearticle-detailview-488.htm Keyboard杂志老资格编辑Jim Aikin在纪念MIDI诞生20的时候发 ...

  4. [日常]蒟蒻的高一生活 Week 1~3

    博主在三周前成功晋级为高中生OwO终于不再是假的HZOIer感受一波HZ的真正生活...(然而实际上级部不少监督一直没启动23333) (然而三周过去好多事情都忘了QAQ瞎写好了(逃)) Week 1 ...

  5. P2614 计算器弹琴

    题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilibili.com/vide ...

  6. 洛谷 P2614 计算器弹琴

    P2614 计算器弹琴 题目描述 总所周知,计算器可以拿来干很多它本不应该干的事情,比如写作文.(参看洛谷P2549) 小A发现了一个计算器的另一个隐藏功能——弹琴. http://www.bilib ...

  7. Javascript规范

    本文地址: http://www.hicss.net/evolve-your-javascript-code/ 方才在程序里看到一段JS代码,写法极为高明,私心想着若是其按照规范来写,定可培养对这门语 ...

  8. 引爆你的Javascript代码进化

    转自:http://www.hicss.net/evolve-your-javascript-code/ 方才在程序里看到一段JS代码,写法极为高明,私心想着若是其按照规范来写,定可培养对这门语言的理 ...

  9. 选择Asp for javascript,非.net。

    写Web类型的程序我使用过的服务器端语言有C#和Python.PHP稍Copy过几段代码,Asp很早听说过.C#我主要用来写Web服务比较多,C#这种强类型语言写Web不太爽,特别构造复杂的JSON数 ...

随机推荐

  1. laravel4.2 union联合,join关联分组查询最新记录时,查询条件不对,解决方案

    需求: 分组联合查询,或者最新记录. 问题:  mysql分组的时候默认会查询第一条记录,存在gourp by时 order by 无效. 一般解决办法就是 ,select * from ( sele ...

  2. day 29 socketserver ftp功能的简单讲解

    1.上传下载的简单示例 server: import socket import struct import json   server =socket.socket() server.bind((' ...

  3. 如何在HHDI中进行数据质量探查并获取数据剖析报告

    通过执行多种数据剖析规则,对目标表(或一段SQL语句)进行数据质量探查,从而得到其数据质量情况.目前支持以下几种数据剖析类型,分别是:数字值分析.值匹配检查.字符值分析.日期值分析.布尔值分析.重复值 ...

  4. OpenWrt超时检测

    参考http://www.right.com.cn/forum/thread-261702-1-1.html vim /home/ihid/chaos_calmer/feeds/luci/module ...

  5. A1041

    输入n个数,找出第一个只出现一次的数,输出它. 如果没有,输出none. 思路: 将输入的数值作为HashTable的数组下标即可. #include<cstdio> ], hashTab ...

  6. 【转】Odoo开发之:工作流 workflow

    在OpenERP中,工作流是管理一组“所做的事情”(与一些数据模型的记录关联)的人为现象.工作流提供了高级别的方式来组织记录要上做的事情. 具体地说,工作流是一个定向的路径,这里节点称为活动并且弧线称 ...

  7. 佛山Uber优步司机奖励政策(1月4日~1月10日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. JavaScript---复选框全选的多种实现

    <script language=javascript> //第一种方法 function selectall1() {    var a = document.getElementsBy ...

  9. SpringBoot入门(一)——开箱即用

    本文来自网易云社区 Spring Boot是什么 从根本上来讲Spring Boot就是一些库的集合,是一个基于"约定优于配置"的原则,快速搭建应用的框架.本质上依然Spring, ...

  10. 问题:MongoDB C# driver异常:Truncation resulted in data loss

    问题描述: 原因分析: MongoDB C#驱动在读取数据记录遇到数值类型字段时,如果没有设置允许截断,将抛出TruncationException. 解决方法: [BsonRepresentatio ...