大连好人 发表于 2013-1-25 22:08:48

让我回想起刚上大学时在 386 上用 C 控制 PC 喇叭奏东方红的时光,支持一下楼主。。。。。

丧心病狂 发表于 2013-2-4 14:55:32

谢谢楼主~找个喇叭去试试!

探索者 发表于 2013-2-5 16:19:07

新人,好贴顶起

maplezxcwc 发表于 2013-2-20 11:56:45

牛X啊,学习了。。。

Fortware 发表于 2013-2-27 18:10:44

赠人玫瑰,手留余香。
一份好的资料,放在机器中会成为垃圾文件;
如果共享出来,就能有成千上万的朋友受益;
每人贡献一点,中国的电子技术将迅速提高。:lol
佩服啊

丧心病狂 发表于 2013-3-2 20:56:45

感觉d3用365比较好听一点。。。

丧心病狂 发表于 2013-3-2 21:24:13

365还是不对。。。真的好难试。。。

wali 发表于 2013-3-3 09:58:10

丧心病狂 发表于 2013-3-2 21:24 static/image/common/back.gif
365还是不对。。。真的好难试。。。

370呢前面有人说的 你试试

万马奔腾 发表于 2013-3-24 21:51:30

好东西收藏了 但是我有个问题怎么将人说的话解码放在ARDUINO上播放出来呢?

浅缘 发表于 2013-4-6 21:28:21

果断顶起!!!

温暖冰岩 发表于 2013-4-9 23:42:40

{:soso_e132:} 改了好几遍,改成下面的样子,在每句后面加一点休止符,好一点。不过到第五行往后面就乱了,不明白是什么原因,谱子是最简单的(两只老虎)。帮忙指点指点吧,大哥?{:soso_e160:}


#define NOTE_G0 -1
#define NOTE_G1 393
#define NOTE_G2 441
#define NOTE_G3 495
#define NOTE_G4 556
#define NOTE_G5 624
#define NOTE_G6 661
#define NOTE_G7 742

#define NOTE_GL1 196
#define NOTE_GL2 221
#define NOTE_GL3 234
#define NOTE_GL4 262
#define NOTE_GL5 294
#define NOTE_GL6 330
#define NOTE_GL7 371

#define NOTE_GH1 786
#define NOTE_GH2 882
#define NOTE_GH3 990
#define NOTE_GH4 1049
#define NOTE_GH5 1178
#define NOTE_GH6 1322
#define NOTE_GH7 1484
//以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,后面可以随意编写D调的各种歌,我这里用NOTE_D+数字表示音符,NOTE_DH+数字表示上面有点的那种音符,NOTE_DL+数字表示下面有点的那种音符。这样后面写起来比较好识别。
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.125
#define SIXTEENTH 0.625
//这部分是用英文对应了拍子,这样后面也比较好看



int tune[]=
{
        NOTE_G1,NOTE_G2,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G1,NOTE_G2,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_G4,NOTE_G5,NOTE_G0,
        NOTE_G3,NOTE_G4,NOTE_G5,NOTE_G0,
        NOTE_G5,NOTE_G6,NOTE_G5,NOTE_G4,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G5,NOTE_G6,NOTE_G5,NOTE_G4,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_GL5,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_GL5,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_GL5,NOTE_G1,NOTE_G0,

};//这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数
float duration[]=
{
        1,1,1,1,0.125,
        1,1,1,1,0.125,
        1,1,1,1+1,0.25,
        1,1,1,1+1,0.25,
        0.5,0.5,0.5,0.5,1,1,0.125,
        0.5,0.5,0.5,0.5,1,1,0.125,
        1,1,1+1,0.25,
        1,1,1+1,0.25,
        1,1,1+1+0.125,
};//这部分是整首曲子的接拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)
int length;//这里定义一个变量,后面用来表示共有多少个音符
int tonePin=5;//蜂鸣器的pin

void setup()
{
pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
length = sizeof(tune)/sizeof(tune);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符
}

void loop()
{
for(int x=0;x<length;x++)//循环音符的次数
{
    tone(tonePin,tune);//此函数依次播放tune序列里的数组,即每个音符
    delay(800*duration);//每个音符持续的时间,即节拍duration,400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧
    noTone(tonePin);//停止当前音符,进入下一音符
}
delay(5000);//等待5秒后,循环重新开始
}

温暖冰岩 发表于 2013-4-9 23:44:41

#define NOTE_G0 -1
#define NOTE_G1 393
#define NOTE_G2 441
#define NOTE_G3 495
#define NOTE_G4 556
#define NOTE_G5 624
#define NOTE_G6 661
#define NOTE_G7 742

#define NOTE_GL1 196
#define NOTE_GL2 221
#define NOTE_GL3 234
#define NOTE_GL4 262
#define NOTE_GL5 294
#define NOTE_GL6 330
#define NOTE_GL7 371

#define NOTE_GH1 786
#define NOTE_GH2 882
#define NOTE_GH3 990
#define NOTE_GH4 1049
#define NOTE_GH5 1178
#define NOTE_GH6 1322
#define NOTE_GH7 1484
//以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,后面可以随意编写D调的各种歌,我这里用NOTE_D+数字表示音符,NOTE_DH+数字表示上面有点的那种音符,NOTE_DL+数字表示下面有点的那种音符。这样后面写起来比较好识别。
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.125
#define SIXTEENTH 0.625
//这部分是用英文对应了拍子,这样后面也比较好看



int tune[]=
{
        NOTE_G1,NOTE_G2,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G1,NOTE_G2,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_G4,NOTE_G5,NOTE_G0,
        NOTE_G3,NOTE_G4,NOTE_G5,NOTE_G0,
        NOTE_G5,NOTE_G6,NOTE_G5,NOTE_G4,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G5,NOTE_G6,NOTE_G5,NOTE_G4,NOTE_G3,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_GL5,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_GL5,NOTE_G1,NOTE_G0,
        NOTE_G3,NOTE_GL5,NOTE_G1,NOTE_G0,

};//这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数
float duration[]=
{
        1,1,1,1,0.125,
        1,1,1,1,0.125,
        1,1,1,1+1,0.25,
        1,1,1,1+1,0.25,
        0.5,0.5,0.5,0.5,1,1,0.125,
        0.5,0.5,0.5,0.5,1,1,0.125,
        1,1,1+1,0.25,
        1,1,1+1,0.25,
        1,1,1+1+0.125,
};//这部分是整首曲子的接拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)
int length;//这里定义一个变量,后面用来表示共有多少个音符
int tonePin=5;//蜂鸣器的pin

void setup()
{
pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
length = sizeof(tune)/sizeof(tune);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符
}

void loop()
{
for(int x=0;x<length;x++)//循环音符的次数
{
    tone(tonePin,tune);//此函数依次播放tune序列里的数组,即每个音符
    delay(800*duration);//每个音符持续的时间,即节拍duration,400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧
    noTone(tonePin);//停止当前音符,进入下一音符
}
delay(5000);//等待5秒后,循环重新开始
}

fangtaonj 发表于 2013-4-10 10:24:35

非常好的帖子!感谢楼主!

马仔 发表于 2013-4-13 16:18:10

大强悍了!!!{:soso_e179:}

马仔 发表于 2013-4-13 23:40:55

小星星
#define NOTE_D0 -1
#define NOTE_D1 262
#define NOTE_D2 294
#define NOTE_D3 330
#define NOTE_D4 350
#define NOTE_D5 393
#define NOTE_D6 441
#define NOTE_D7 495

#define NOTE_DL1 131
#define NOTE_DL2 147
#define NOTE_DL3 165
#define NOTE_DL4 175
#define NOTE_DL5 196
#define NOTE_DL6 221
#define NOTE_DL7 248

#define NOTE_DH1 525
#define NOTE_DH2 589
#define NOTE_DH3 661
#define NOTE_DH4 700
#define NOTE_DH5 786
#define NOTE_DH6 882
#define NOTE_DH7 990
//以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,后面可以随意编写D调的各种歌,我这里用NOTE_D+数字表示音符,NOTE_DH+数字表示上面有点的那种音符,NOTE_DL+数字表示下面有点的那种音符。这样后面写起来比较好识别。
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//这部分是用英文对应了拍子,这样后面也比较好看
int tune[] =
{
NOTE_D1,NOTE_D1,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D0,
NOTE_D4,NOTE_D4,NOTE_D3,NOTE_D3,NOTE_D2,NOTE_D2,NOTE_D1,NOTE_D0,
NOTE_D5,NOTE_D5,NOTE_D4,NOTE_D4,NOTE_D3,NOTE_D3,NOTE_D2,NOTE_D0,
NOTE_D5,NOTE_D5,NOTE_D4,NOTE_D4,NOTE_D3,NOTE_D3,NOTE_D2,NOTE_D0,
NOTE_D1,NOTE_D1,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D0,
NOTE_D4,NOTE_D4,NOTE_D3,NOTE_D3,NOTE_D2,NOTE_D2,NOTE_D1,NOTE_D0,

};//这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数

float duration[]=
{
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,

};//这部分是整首曲子的接拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)
int length;//这里定义一个变量,后面用来表示共有多少个音符
int tonePin=5;//蜂鸣器的pin

void setup()
{
pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
length = sizeof(tune)/sizeof(tune);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符
}

void loop()
{
for(int x=0;x<length;x++)//循环音符的次数
{
    tone(tonePin,tune);//此函数依次播放tune序列里的数组,即每个音符
    delay(400*duration);//每个音符持续的时间,即节拍duration,400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧
    noTone(tonePin);//停止当前音符,进入下一音符
}
delay(5000);//等待5秒后,循环重新开始
}
页: 1 2 3 4 [5] 6 7 8 9 10
查看完整版本: Arduino学习心得-简单制作各种歌曲