🎵 Keyonica¶
Key + Harmonica = Keyonica — 用键盘演奏口琴,让音乐触手可及!
周末拿出尘封已久的口琴,发现很多谱子不熟悉,早晨太早或者晚上太晚练习可能影响邻居,而且有时候不想动嘴!就产生了这个Rust 键盘口琴, 利用计算机键盘模拟口琴的演奏体验,支持多键并发,具备低延迟的音频响应能力。帮助你享受音乐、记谱子、无聊的时候放松一下。
一款基于 Rust 开发的口琴模拟器,支持键盘实时演奏、和弦演奏、移调功能,并内置自动演示曲目。无论你是音乐爱好者还是编程学习者,都能在这里找到乐趣!
✨ 特性亮点¶
- 🎹 三排键盘布局 - 覆盖低音、中音、高音三个八度,26个音符任你弹奏
- 🎸 真实口琴音色 - ADSR 包络 + 泛音合成,告别刺耳的电子音
- 🎶 演奏 - 同时按下多键演奏和弦,体验口琴魅力
- 🎼 移调功能 - 支持 ±12 半音移调,轻松切换调性
- 🤖 演示模式 - 内置《小星星》《两只老虎》等经典曲目自动演奏
- 🖥️ 跨平台 - Windows、macOS、Linux 全平台支持
效果展示¶
注:视频中的电流声是作者录制的电脑喇叭有问题,其它电脑验证没有电流声。
🎮 下载使用¶
windows选择下面任意一个下载即可,解压zip文件后双击即可执行exe文件,打开Keyonica,即可演奏。
苹果电脑用户,下载application压缩包解压后就可以使用,可以双击也可以拖到Application下使用。
| Bash | |
|---|---|
🎹 键位映射¶
键盘分为三排,对应口琴的三个音区:
第一排 (低音 + 中音)¶
| 按键 | Q | W | E | R | T | Y | U | I | O | P |
|---|---|---|---|---|---|---|---|---|---|---|
| 唱名 | 1. | 2. | 3. | 4. | 5. | 6. | 7. | 1 | 2 | 3 |
| 音区 | 低 | 低 | 低 | 低 | 低 | 低 | 低 | 中 | 中 | 中 |
第二排 (中音 + 高音)¶
| 按键 | A | S | D | F | G | H | J | K | L |
|---|---|---|---|---|---|---|---|---|---|
| 唱名 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 1’ | 2’ |
| 音区 | 中 | 中 | 中 | 中 | 中 | 中 | 中 | 高 | 高 |
第三排 (高音)¶
| 按键 | Z | X | C | V | B | N | M |
|---|---|---|---|---|---|---|---|
| 唱名 | 1’ | 2’ | 3’ | 4’ | 5’ | 6’ | 7’ |
| 音区 | 高 | 高 | 高 | 高 | 高 | 高 | 高 |
💡 提示:第二排 A-J 与第一排 I-P 部分重叠,方便不同指法习惯
⌨️ 快捷键¶
| 按键 | 功能 |
|---|---|
Space |
开始/停止 演示播放 |
← → |
切换演示曲目 |
↑ |
升调 (+1 半音) |
↓ |
降调 (-1 半音) |
Esc |
重置为原调 |
核心设计¶
1. 音频引擎¶
- 基于 rodio 实现低延迟音频播放
- 每个按键独立
Sink,支持真正的演奏 - 采用 mixer 混音,多音同时播放无冲突
2. ADSR 包络¶
- Attack (30ms): 柔和起音,避免爆破音 - Decay (80ms): 自然衰减 - Sustain (60%): 持续按住时的音量 - Release (150ms): 松开后平滑消音3. 口琴音色合成¶
不同于简单的正弦波,采用泛音叠加模拟真实口琴:
| Rust | |
|---|---|
4. 移调算法¶
基于十二平均律,每个半音频率比为 2^(1/12):
| Rust | |
|---|---|
🎼 内置曲目¶
| 曲目 | 描述 |
|---|---|
| 音阶测试 | 中音区上下行音阶 |
| 小星星 | 经典儿歌完整版 |
| 两只老虎 | 欢快的童谣旋律 |
🎵 按
Space开始自动演奏,观看按键高亮跟随音乐跳动!
🎵 用代码奏响音乐,用键盘演绎旋律 🎵
