跳到教程内容
教程首页
App Inventor 2 教程 音乐制作器
准备开始
动手创造 · PROJECT LAB

音乐制作器

准备探索你的新作品
0%
★★ 项目难度每一步,都离作品更近

先了解你将做出什么

应用介绍

做一个可以现场”编曲”的App:屏幕上一排乐器按钮,点一下鼓开始循环打节奏, 再点一下钢琴叠上旋律,几个音轨同时响,就是一段你自己的音乐。

这一篇和前面几篇不太一样——界面长什么样由你自己定。 教程给的是思路和关键技巧,具体做成什么样,看你想要什么风格。

建议先做完《我的钢琴》再来做这一篇,那边讲的按钮和播放器这里要接着用。

教程主图

界面示意图

音乐制作器教程(难度系数:★★)

找素材并上传

这一篇的素材要你自己准备,需要两类:

  1. 循环音轨,建议 4 段左右,比如:鼓点、贝斯、钢琴、合成器。 关键要求是”能接得上”——一段放完立刻从头再放,听不出接缝。 这种素材叫 loop(循环乐句),网上搜「free drum loop」「免费循环素材」能找到不少免费的。
  2. 乐器图标,每种乐器一张,贴在按钮上比写字好看得多。

优先用 mp3,别用 wav。

同样一段 4 秒的鼓点,wav 可能有 1~2MB,转成 mp3 只要几十 KB。 素材一多,wav 会让你的 apk 大得离谱,安装和加载都慢。

音质上,做背景循环用 mp3 完全够。

先想清楚界面怎么排

动手拖组件之前,先决定两件事:

第一,横屏还是竖屏。 选中 Screen1,改 屏幕方向 属性: 竖屏选「垂直」,横屏选「水平」。做音乐类App横屏往往更舒服,按钮能排得开。

第二,按钮怎么摆。 靠的是两种布局组件:

  • 水平布局 —— 放进去的组件并排,从左到右。
  • 垂直布局 —— 放进去的组件竖排,从上到下。

两种可以互相嵌套,比如”一个垂直布局里放三个水平布局”,就得到了三行按钮。

布局方向示意图

宽高一律用百分比

这一篇按钮多,最容易翻车的就是尺寸。记住一条:宽度高度都用百分比,别写死像素。

写法 效果
充满 撑满它所在的那个容器(按钮的容器是布局,布局的容器一般是屏幕)
30% 占容器的三成
100 像素 固定 100 像素——换个手机就可能错位,尽量别用

一行放三个按钮,每个给 30% 左右刚好(留一点边距)。 外层的水平布局记得把 宽度 设成 充满,否则它会缩成刚好包住按钮的一小条。

每个乐器配一个播放器

这是整篇最关键的一点:几个乐器要同时响,就得有几个播放器组件。 一个播放器同一时刻只能放一个音,共用的话后一个会把前一个顶掉,叠不起来。

所以从「多媒体」里拖 4 个音频播放器进来,按乐器分别重命名: 音频播放器_鼓钢琴播放器音频播放器_合成器……

每个播放器都要设两个属性:

  • 源文件 —— 选对应的那段循环音频。
  • 循环播放 —— 勾上,这样一段放完会自动从头再来,节奏才不会断。

播放器属性示意图

播放和停止

代码简单到不能再简单,一个按钮开、一个按钮关:

when 按钮_鼓.Click() {
  音频播放器_鼓.Start()
}

when 按钮_停鼓.Click() {
  音频播放器_鼓.Stop()
}

其他乐器照着来,把组件名换掉就行。

做到这里就可以连 AI伴侣 测了:点鼓、再点钢琴,两个音轨应该同时在响。 如果后一个把前一个盖掉了,回去检查是不是两个按钮用了同一个播放器。

进阶:一个按钮管开关

一个乐器占两个按钮太浪费地方了。用 是否正在播放 这个属性判断一下,一个按钮就够:

when 按钮_合成器.Click() {
  if 音频播放器_合成器.IsPlaying {
    音频播放器_合成器.Stop()
    按钮_合成器.Text = "合成器"
  } else {
    音频播放器_合成器.Start()
    按钮_合成器.Text = "停止"
  }
}

顺手把按钮上的字也改掉,用户一眼就知道再点一下会发生什么。 这种”一个控件两种状态”的写法,以后做播放器、开关、收藏按钮都用得上。

用变量记 是否在播 当然也能做,但没必要——播放器自己就知道自己在不在播, IsPlaying 直接读就是了。

能从组件直接问到的状态,就别自己再存一份。 自己存的那份一旦忘了更新, 就会和真实情况对不上,这类bug特别难找。

开始测试

连上 AI伴侣,重点试这几样:

  1. 几个乐器能不能同时响(这是这个App的灵魂)。
  2. 循环接得顺不顺,有没有明显的卡顿或空白。
  3. 开关按钮点两下能不能正确切换,按钮上的字跟着变没有。
  4. 换个屏幕尺寸不同的手机看看,布局有没有错位——这一步能验证你的百分比设得对不对。

剩余工作

这个App的上限很高,可以一直往下做:

  • 加暂停暂停停止 不一样:暂停再播是接着放,停止再播是从头放。试试听出区别。
  • 音量调节。加个滑动条组件,拖动时改播放器的 音量,就能给各个音轨配平。
  • 录下来。用录音机组件把你现场编的这段录下来,再用一个播放器回放给朋友听。
  • 做一个节拍器。加个计时器,按固定间隔闪烁或者响一下,帮你踩准拍子。
  • 换更多乐器。素材是这个App最大的变量,多找几段好听的循环,效果立刻不一样。

做出好听的记得录下来分享ヾ(◍°∇°◍)ノ゙