望断云山 发表于 2014-4-26 10:53

用51实现的和弦音乐(5楼有新的音色效果,欢迎试听哈)

本帖最后由 望断云山 于 2014-4-26 17:51 编辑

近日阴雨绵绵,工地也没什么人搬砖,厨房的酱油也不要打得那么勤了。
闲着也是闲着,从旮旯里捡起一片stc12c5a60s2,码几行代码消磨下时间。
代码三两下就搞定了,很是轻松愉快。
倒是拿着音乐的曲谱很头大,花了很多时间才把曲谱变成0xff之类的东西。
又花了n多时间查错,现在音乐里好像还有蛮多音符不太对,实在是不想再查了,
咱目的是消磨时间,可不能让时间消磨咱。
再说俺们又不是要听音乐哈。

好吧,闲话休说,电路图就是这样子的

烧写文件在这里

效果在这里,用耳机听着好像比这个录音的效果要好些

代码在这里,呃!代码不在这里,代码是用汇编随意乱写的,没什么章法,就不出来丢人现眼了。

xyz549040622 发表于 2014-4-26 11:03

顶起,不错!本版块我记得以前有人发过一个自己做的上位机软件,将曲谱变为代码的一个小软件,楼主找找看!

望断云山 发表于 2014-4-26 12:55

xyz549040622 发表于 2014-4-26 11:03 static/image/common/back.gif
顶起,不错!本版块我记得以前有人发过一个自己做的上位机软件,将曲谱变为代码的一个小软件,楼主找找看! ...

谢谢版主
找了一下,没找到你说的那个软件

huangxz 发表于 2014-4-26 14:47

望断云山 发表于 2014-4-26 12:55 static/image/common/back.gif
谢谢版主
找了一下,没找到你说的那个软件

贴代码出来丢一下人嘛,不丢人不好玩也

望断云山 发表于 2014-4-26 17:47

经过改进,效果已接近吉他弹奏
录音在这里

coody 发表于 2014-4-26 21:13

高手,绝对支持。
能否贴代码学习一下? 很有兴趣,我也很喜欢电子音乐。

567 发表于 2014-4-26 21:42

电路还可以简化,使用两路PWM直接驱动喇叭即可。
以前用来放过wav,只不过由于IO输出电流有限,声音不是很响亮。

ilikepanda007 发表于 2014-4-30 18:13

求贴代码!!

pangencao 发表于 2014-5-7 20:16

很不错。
你需要的乐谱格式是什么样的(字节含义?),我改个导出软件给你;

jxw82284134 发表于 2014-5-8 13:20

很不错,值得学习

zbcai 发表于 2014-5-9 10:01

求原理!

1个端口产生这类音色的原理,可否解释下?

望断云山 发表于 2014-5-9 23:46

1.波形合成,产生基准音高,事先生成一个正弦波形表,查表实现
2.谐波混频,产生几个奇次谐波适量混入基频,改变音色,也可在波形表里直接使用含各次谐波的波形数据,而省略此步骤,但音色效果便不能灵活改变
3.包络调制,产生弹奏型或吹奏型或打击型效果,事先生成各种包络数据,查表,
4.多通道混合,以上123用多个通道分别实现主旋律\伴奏\等,只要单片机速度允许.
5.pwm做da输出,
第1步决定音调,第2和第3步决定音色效果,比如混入适量方波,使用吹奏型包络调制,可产生类似长笛小号萨克斯效果,使用弹奏型包络则有吉他或电吉他效果,如音调较高 则有风铃或八音盒效果.单纯的正弦波声音暗哑无光,必须在正弦波里混入一些谐波或制造一点失真,产生的音色才会丰满,明亮
波形数据在进行运算时要按有符号数处理,最后进行直流偏置,如果按无符号数处理,不做直流偏置,则音符和音符之间有咔哒声

限量_个性。 发表于 2014-5-10 11:21

想问问这种绘原理图软件是什么呢。

望断云山 发表于 2014-5-10 14:01

这个原理图是什么软件画的我也不知道,在网上随便找了一张最小系统图,就是下面这张
然后用"画图"剪切/复制/粘贴/旋转等拼凑而成

望断云山 发表于 2014-5-10 14:33

pangencao 发表于 2014-5-7 20:16 static/image/common/back.gif
很不错。
你需要的乐谱格式是什么样的(字节含义?),我改个导出软件给你;
...

谢谢!我写这个代码纯属无聊,也没有写很多首曲谱在代码里的意思.
音符字节定义是这样的
DWABCDh
AB为一字节
A:取值0-7,0表示休止符,1-7表示哆来咪发唆拉西
B:取值0-9,覆盖10个八度音,,比如1=C的曲谱,低音哆就是13,中音哆是14,高音哆是15,低音西就是73,中音西是74,高音西是75
CD:一字节,表示音符节拍长度,04h表示1/16拍,08h表示1/8拍,10h表示1/4拍,20h表示1/2拍,40h表示一拍,80h表示2拍,C0H表示3拍,FFh表示4拍

pangencao 发表于 2014-5-12 21:32

望断云山 发表于 2014-5-10 14:33 static/image/common/back.gif
谢谢!我写这个代码纯属无聊,也没有写很多首曲谱在代码里的意思.
音符字节定义是这样的
DWABCDh





由midi文件导出乐谱,含c语言源码,自行修改下即可;
已能导出拍子,音符,休止符等;

导出格式:
[音轨-00] 音-34, 计时-60, 节拍-08/16
[音轨-00] 音-37, 计时-30, 节拍-04/16
[音轨-00] 音-3b, 计时-30, 节拍-04/16
[音轨-00] 音-40, 计时-60, 节拍-08/16
[音轨-00] 音-3b, 计时-60, 节拍-08/16
[音轨-02] 音-1c, 计时- 241, 节拍-32/16
[音轨-00] 音-2f, 计时-60, 节拍-08/16
[音轨-00] 音-37, 计时-30, 节拍-04/16
[音轨-00] 音-3b, 计时-30, 节拍-04/16
[音轨-00] 音-40, 计时-60, 节拍-08/16
[音轨-00] 音-3b, 计时-60, 节拍-08/16
[音轨-02] 音-17, 计时- 241, 节拍-32/16
[音轨-00] 音-34, 计时-60, 节拍-08/16
[音轨-00] 音-37, 计时-30, 节拍-04/16
[音轨-00] 音-3b, 计时-30, 节拍-04/16
[音轨-00] 音-40, 计时-60, 节拍-08/16
[音轨-00] 音-3b, 计时-60, 节拍-08/16
[音轨-02] 音-1c, 计时- 241, 节拍-32/16
[音轨-00] 音-2f, 计时-60, 节拍-08/16
[音轨-00] 音-37, 计时-30, 节拍-04/16
[音轨-00] 音-3b, 计时-30, 节拍-04/16
[音轨-00] 音-40, 计时-60, 节拍-08/16
[音轨-00] 音-3b, 计时-60, 节拍-08/16
[音轨-04] 休止节拍-128/16
[音轨-02] 音-17, 计时- 241, 节拍-32/16
[音轨-05] 休止节拍-128/16

hwx123 发表于 2014-12-19 16:03

也想弄一个,有教程就好了

amazing030 发表于 2015-6-10 10:36

听了感觉还不错,希望楼主能贴出程序,对音乐实在不通

meisk 发表于 2016-3-29 09:31

能否用无源压电蜂鸣器或者无源动圈式蜂鸣器作为发声元件达到类似效果啊?

DDBDOG 发表于 2017-4-23 16:04

能不能用开发板实现效果
页: [1] 2
查看完整版本: 用51实现的和弦音乐(5楼有新的音色效果,欢迎试听哈)