AI脑洞板
完整教案
自学课件
第 13 课 · 共 35 课

喇叭 —— 板子的嘴巴 板子的嘴巴

你好呀,我是吴老师。

上一课板子学会了听:把声音变成一串数字,存了起来。

今天要教它反过来做 —— 把数字变回声音。

这一课有个好处:你一按就能听见结果,不用盯着屏幕猜。

读完之后,你应该能:说出喇叭和话筒是什么关系;让板子发出指定的音;说清"按住响、松开停"为什么必须用 tone_on;分清"板子自己发声"和"放音乐文件"是两回事。

用时:约 45 分钟。准备:板子、数据线。


一、喇叭做的事,正好和话筒相反

上一课那个"真相",今天要反过来用:

板子自己不会发出声音,它只会让喇叭抖。

抖得快 → 声音高;抖得慢 → 声音低。

所以那串数字是这么走的:

话筒:声音变数字;喇叭:数字变声音 —— 一条路,两个方向

一条路,两个方向。

💡 这也解释了为什么喇叭和话筒长得有点像 —— 它们其实是同一种零件的两种用法。

二、发一个音

给它一个数 + 一个时长,它就出声了:

你要给它是什么例子
第一个频率 —— 每秒抖多少下440
第二个响多久(毫秒)500 = 半秒

第二个可以不写,默认 200 毫秒。

⭐ 就这么两个数。 这一课后面讲的全是"第一个数该填几"。

三、音高,就是一个数

这里没有"do re mi",只有数字。而且规矩特别简单:

数字越大,音越高。

课本上那七个音,对应的数就这几个 —— 看波形,越往右抖得越快:

音高就是一个数:do re mi fa sol la si 对应的频率,波形一路变密

⭐ 把这一串念一遍,记住它。

记住之后,你就能让板子唱任何歌 —— 只要把简谱上的数字,换成这几个数。 简谱里的 1 就是 262,2 就是 294,依次往下。

连着弹下来,就是一个音阶。

💡 它凭什么唱歌? 因为"曲子"说到底就是一串数字的先后顺序。 你只要按顺序把这些数喂给它,它就能唱出来 —— 不用懂什么叫音乐。

四、⚠️ 有一件事要先分清

板子会自己发声,但它不会放音乐文件。

板子行不行
发出一个指定高低的音✅ 行(就是这一课要做的)
放一首存在板子里的歌❌ 不行

💡 为什么不行?

因为它做的是自己抖出一串纯净的音,不是"把录好的声音原样播出来"。 这两件事听起来像,其实是完全不同的活儿。

**想听真正的音乐,得联网。**那是后面第 16 课的事,先记着。

五、钢琴的秘密:按住响,松开停

先用上面那个 play_tone 做个钢琴试试 —— 你会发现做不出来。

因为它有个毛病:

假设让它响 2 秒 —— 这 2 秒里,程序就"停在那儿等"。

于是这 2 秒里你抬手,它也读不到 —— 程序正忙着放音呢。

所以用"放一个音"的做法做钢琴,只能做成"点一下、响一声",按住没用。

要"按住多久响多久",得换另一对做法:

⭐ 区别就一句话:

做法意思
放一个音"把这个音放完" —— 程序得等着
开始响 / 停"开始响",什么时候停 —— 你说了算
你要做的东西该用哪种
放一小段旋律放一个音(放完才轮到下一个,正好当节拍)
钢琴那种按住发声开始响 / 停(不卡住程序)

⚠️⚠️ tone_on 会一直响下去,千万别忘了关。

应用退出前必须调一次 tone_off() —— 不然回到桌面之后那个音还在响, 听上去就像板子坏了。

六、动手做

任务一:音阶

请帮我做一个最简单的发声应用:
1. 屏幕上画 7 个按钮,从左到右排成一排
2. 每个按钮写一个音名:do re mi fa sol la si
3. 点哪个按钮,就发出那个音,响 ___ 毫秒
4. 用中文注释

💡 第 3 条那个数字你自己定。改完记得听听区别 —— 太短会听不清,太长会拖泥带水。

参考值(不是标准答案)

200 毫秒左右比较顺耳。demo01_tones 用的是 200。

做好之后屏幕上就是这样 —— ⭐ 注意每个键底下还画着它的频率数字: 这一排数字就是这一课的全部内容。

板子上的音阶应用:七个键,每个键底下印着它的频率 —— 262 到 494

做完试着从右往左点一遍 —— 听起来和刚才有什么不一样?

任务二:玩一台现成的钢琴

板子上已经有一台做好的钢琴了 —— 不用你从零做。

先去把它装上:打开 aiesp32.ai-scratch.cn/apps/install, 在示例应用里找到**「钢琴」**,装到板子上(和你第 3 课学的一样)。

装好之后屏幕上就是这样 —— 白键黑键都在,按住的那个键会变蓝:

板子上那台钢琴:八个白键、五个黑键,按住的那个白键变成了蓝色

装上之后,请你亲手试这三件事:

试什么看什么
按住一个键 3 秒不放它是响 3 秒,还是响一下就停?
按住一个键,手指滑到旁边的键音变了没有?
点「弹一首」听听它弹的是什么歌?

然后想一个问题:它为什么做得到?

因为用的是 tone_on / tone_off,不是 play_tone。

tone_on 不卡住程序,所以每帧都能重新看一眼"手指现在在哪"—— 滑过去换音这件事,代码反而变得很短。

⭐ 给你留一个问题: 如果这台钢琴用的是 play_tone,上面第一件和第二件事还做得到吗?

先自己想,再翻回第五节看看答案。

💡 想看它是怎么写的? 直接问 AI: "把板子上那台钢琴的代码找出来,用我能听懂的话讲讲它怎么知道手指在哪个键上。"

任务三:游戏音效

做好之后屏幕上就是四个按钮 —— 每个按钮背后是"一串音",不是"一个音":

游戏音效:得分 / 失败 / 过关 / 开始 四个按钮

请帮我做一套游戏音效:
1. 屏幕上 4 个按钮:得分 / 失败 / 过关 / 开始
2. 每个按钮响一个不同的音,长度也不一样
3. 得分要往上走的感觉,失败要往下掉的感觉
4. 用中文注释

⭐ 注意"一串音"这件事。

得分不是"响一声",是 262 → 330 → 392 连着往上跳三个音。 失败也不是"响一声",是 392 → 330 → 262 连着往下掉。

音效好不好听,靠的是"排列",不是单个音。 得分:262 → 330 → 392;失败:392 → 262。

七、只改一个条件

挑一个来改,先说出你的预测,再动手:

✏️ 可以直接在表格里填写
我改的条件我预测会怎样实际怎样
把 262 改成 524
把 262 改成 131
把自己做的音阶改成"按住才响、松开就停"
退出前忘了 tone_off()

💡 前两个是翻倍和减半 —— 听听像不像"同一个音,高一些 / 低一些"。 最后一个是"回到了桌面还在响",听上去很吓人,但改回来就好了。

八、自检小测

正在加载本课自检小测…

九、还想玩点什么

想做什么可以这样描述给 AI
电子琴加上黑键,能弹半音,还能换八度
音乐盒子把《小星星》存进去,点一下就自动弹完
会唱歌的闹钟到点弹一小段旋律叫你起床
声控小游戏用不同的音表示得分、失败、过关
两个人合奏一个人按前面的键、一个人按后面的键

⭐ 下一节课,我们要让板子连上网。

为什么现在才教联网?因为前面这些课都不需要它 —— 存东西、画图、录音、发声,板子自己就能干。

但从下一课开始,事情要变样了:板子要开始跟外面说话。 而那扇门,第一道就是 WiFi。

本节演示

音阶

音阶

七个按钮,点一下响一个音

游戏音效

游戏音效

得分往上走,失败往下掉