4441|17

5276

帖子

5

TA的资源

裸片初长成(中级)

楼主
 

播放音乐仅用一个喇叭一个低通30行代码 [复制链接]

谁有兴趣研究研究怎么得到的那一行代码?是什么原理?还能达到什么效果?能不能给讲讲?

Music with only a speaker, a LP, and 30 lines of code
国外网站,说不定要翻墙

声音效果可以看这个页面:
http://wurstcaptures.untergrund.net/music/
不支持html5的浏览器(如果浏览器版本不是很新)可以看FLASH演示的效果, 顶部的那行代码是可以更改的:http://entropedia.co.uk/generative_music/

[ 本帖最后由 wangfuchong 于 2013-6-28 10:25 编辑 ]

最新回复

这个有点意思,试听了一下音乐。mark  详情 回复 发表于 2013-12-18 09:44

点评

谢谢分享,我没翻墙,好像我已经越狱了  详情 回复 发表于 2013-6-28 08:42
 
点赞 关注

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

回复 楼主wangfuchong 的帖子

谢谢分享,我没翻墙,好像我已经越狱了
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复

4008

帖子

0

TA的资源

版主

板凳
 
pwm变频率就是了,音乐就是频率...
只有一个喇叭就只有一个极性,声音会小些.

点评

晕,问的就是那行代码有什么规律,不能乱发声吧?你随便弄一行代码来也行么?  详情 回复 发表于 2013-6-28 10:49
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
原帖由 huo_hu 于 2013-6-28 10:43 发表
pwm变频率就是了,音乐就是频率...
只有一个喇叭就只有一个极性,声音会小些.
晕,问的就是那行代码有什么规律,不能乱发声吧?你随便弄一行代码来也行么?
 
 
 

回复

672

帖子

0

TA的资源

版主

5
 
  1. #include "msp430g2553.h"

  2. #define MCLK                                                8000000
  3. #define OUTPUT_SAMPLES_PER_SECOND                        8000

  4. #define PIN_SPEAKER                                        BIT2

  5. unsigned long t = 0;

  6. unsigned char sample;

  7. void main(void) {
  8.         WDTCTL = WDTPW + WDTHOLD;
  9.        
  10.         DCOCTL = CALDCO_8MHZ;
  11.         BCSCTL1 = CALBC1_8MHZ;

  12.         P1SEL |= PIN_SPEAKER;
  13.         P1DIR |= PIN_SPEAKER;

  14.         TA0CTL = TASSEL_2 | MC_1;
  15.         TA0CCR0 = (0x0001 << 8) - 1;
  16.         TA0CCTL1 |= OUTMOD_7;

  17.         TA1CTL = TASSEL_2 | MC_1;
  18.         TA1CCR0 = MCLK / OUTPUT_SAMPLES_PER_SECOND - 1;
  19.         TA1CCTL0 |= CCIE;

  20.         _enable_interrupts();

  21.         while(1){
  22.                 sample = ((t<<1)^((t<<1)+(t>>7)&t>>12))|t>>(4-(1^7&(t>>19)))|t>>7;
  23. //                sample = t*(((t>>12)|(t>>8))&(63&(t>>4)));
  24. //                sample = (t*(t>>5|t>>8))>>(t>>16);
  25. //                sample = t*(((t>>9)|(t>>13))&(25&(t>>6)));
  26. //                sample = t*(((t>>11)&(t>>8))&(123&(t>>3)));

  27. //                sample = (t*5&t>>7)|(t*3&t>>10);
  28. //                sample = (t&t%255)-(t*3&t>>13&t>>6);
  29. //                sample = t>>4|t&((t>>5)/(t>>7-(t>>15)&-t>>7-(t>>15)));
  30. //                sample = (t*9&t>>4|t*5&t>>7|t*3&t/1024)-1;
  31. //                sample = ((t*(t>>12)&(201*t/100)&(199*t/100))&(t*(t>>14)&(t*301/100)&(t*399/100)))+((t*(t>>16)&(t*202/100)&(t*198/100))-(t*(t>>17)&(t*302/100)&(t*298/100)));
  32. //                sample = t*(t^t+(t>>15|1)^(t-1280^t)>>10);
  33. //                sample = t&t>>8;

  34.                 //44 khz
  35. //                sample = ((t/2*(15&(0x234568a0>>(t>>8&28))))|t/2>>(t>>11)^t>>12)+(t/16&t&24);
  36. //                sample = ((t*("36364689"[t>>13&7]&15))/12&128)+(((((t>>12)^(t>>12)-2)%11*t)/4|t>>13)&127);

  37.                 t++;
  38.                 LPM0;
  39.         }
  40. }

  41. #pragma vector = TIMER1_A0_VECTOR
  42. __interrupt void T1A0_ISR(void)
  43. {
  44.         TA0CCR1 = sample;
  45.         LPM0_EXIT;
  46. }
复制代码
w=t>>9,k=32,m=2048,a=1-t/m%1,d=(14*t*t^t)%m*a,y=[3,3,4.7,2][p=w/k&3]*t/4,h="IQNNNN!!]]!Q!IW]WQNN??!!W]WQNNN?".charCodeAt(w/2&15|p/3<<4)/33*t-t,s=y*.98%80+y%80+(w>>7&&a*((5*t%m*a&128)*(0x53232323>>w/4&1)+(d&127)*(0xa444c444>>w/4&1)*1.5+(d*w&1)+(h%k+h*1.99%k+h*.49%k+h*.97%k-64)*(4-a-a))),s*s>>14?127:s

这段代码复制进去  听声音好有感觉!
手头没有launchpad  不然真想试试

[ 本帖最后由 柠檬酸钠 于 2013-6-28 15:11 编辑 ]

点评

你下边的是什么代码? 反正好像大都数效果适用于游戏之类的 [ 本帖最后由 wangfuchong 于 2013-6-28 16:29 编辑 ]  详情 回复 发表于 2013-6-28 15:38
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

6
 

回复 5楼柠檬酸钠 的帖子

你下边的是什么代码?

反正好像大都数效果适用于游戏之类的

[ 本帖最后由 wangfuchong 于 2013-6-28 16:29 编辑 ]

点评

w=t>>9,k=32,m=2048,a=1-t/m%1,d=(14*t*t^t)%m*a,y=[3,3,4.7,2][p=w/k&3]*t/4,h=\"IQNNNN!!]]!Q!IW]WQNN??!!W]WQNNN?\".charCodeAt(w/2&15|p/37&&a*((5*t%m*a&128)*(0x53232323>>w/4&1)+(d&127)*(0xa444c444>>w/4&1  详情 回复 发表于 2013-6-28 16:03
 
 
 

回复

4008

帖子

0

TA的资源

版主

7
 
谁给跑一个把sample的结果贴出来看看,不然看不懂额

点评

来一次中断,就从LPM0退出来,又算一次while里面的东西  详情 回复 发表于 2013-6-29 11:48
声音效果在帖子中的网址网页中就可以模拟出来了,打开音箱听  详情 回复 发表于 2013-6-28 16:17
 
 
 

回复

4008

帖子

0

TA的资源

版主

8
 
貌似就是随机的,因为sample的值在while(1)循环里被重复不断的改写,而真正变频的时刻是在isr中实现的
 
 
 

回复

4008

帖子

0

TA的资源

版主

9
 
额不对LPM0关闭cpu时钟了
 
 
 

回复

672

帖子

0

TA的资源

版主

10
 

回复 6楼wangfuchong 的帖子

  1. w=t>>9,k=32,m=2048,a=1-t/m%1,d=(14*t*t^t)%m*a,y=[3,3,4.7,2][p=w/k&3]*t/4,h="IQNNNN!!]]!Q!IW]WQNN??!!W]WQNNN?".charCodeAt(w/2&15|p/3<<4)/33*t-t,s=y*.98%80+y%80+(w>>7&&a*((5*t%m*a&128)*(0x53232323>>w/4&1)+(d&127)*(0xa444c444>>w/4&1)*1.5+(d*w&1)+(h%k+h*1.99%k+h*.49%k+h*.97%k-64)*(4-a-a))),s*s>>14?127:s
复制代码
你把上面这个复制到  http://www.bemmu.com/music/index.html 这个框里,
这段代码实在是看不懂 ,求高人指点

点评

还真是效果不错 不知道你这个代码和网站从哪里看来的? 就是对于简单的短代码,是个什么原理,我没有花时间去想,哪位了解的可否分析一下?  详情 回复 发表于 2013-6-28 16:28
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

11
 
原帖由 huo_hu 于 2013-6-28 15:55 发表
谁给跑一个把sample的结果贴出来看看,不然看不懂额
声音效果在帖子中的网址网页中就可以模拟出来了,打开音箱听
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

12
 
原帖由 柠檬酸钠 于 2013-6-28 16:03 发表
w=t>>9,k=32,m=2048,a=1-t/m%1,d=(14*t*t^t)%m*a,y=[3,3,4.7,2][p=w/k&3]*t/4,h="IQNNNN!!]]!Q!IW]WQNN??!!W]WQNNN?".charCodeAt(w/2&15|p/37&&a*((5*t%m*a&128)*(0x53232323>>w/4&1)+(d&127)*(0xa444c444>>w/4&1)*1 ...
还真是效果不错

不知道你这个代码和网站从哪里看来的?

就是对于简单的短代码,是个什么原理,我没有花时间去想,哪位了解的可否分析一下?
 
 
 

回复

618

帖子

0

TA的资源

一粒金砂(中级)

13
 
不错哦,支持一下!
 
 
 

回复

5015

帖子

12

TA的资源

裸片初长成(初级)

14
 

回复 7楼huo_hu 的帖子

来一次中断,就从LPM0退出来,又算一次while里面的东西

点评

明白,听着不像是音乐,没什么规律.  详情 回复 发表于 2013-6-29 15:50
 
个人签名《MCU工程师炼成记》作者之一
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

15
 
好像很有趣的样子,先收藏一下,等忙完了也看看
 
 
 

回复

4008

帖子

0

TA的资源

版主

16
 

回复 14楼wstt 的帖子

明白,听着不像是音乐,没什么规律.
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

17
 

演示msp430播放一种叫ByteBeat类型的电子音

本人演示msp430播放一种叫ByteBeat类型的电子音乐
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

18
 
这个有点意思,试听了一下音乐。mark
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表