跳转至

🎵 Keyonica

Key + Harmonica = Keyonica — 用键盘演奏口琴,让音乐触手可及!

周末拿出尘封已久的口琴,发现很多谱子不熟悉,早晨太早或者晚上太晚练习可能影响邻居,而且有时候不想动嘴!就产生了这个Rust 键盘口琴, 利用计算机键盘模拟口琴的演奏体验,支持多键并发,具备低延迟的音频响应能力。帮助你享受音乐、记谱子、无聊的时候放松一下。

一款基于 Rust 开发的口琴模拟器,支持键盘实时演奏、和弦演奏、移调功能,并内置自动演示曲目。无论你是音乐爱好者还是编程学习者,都能在这里找到乐趣!

Rust Platform License

✨ 特性亮点

  • 🎹 三排键盘布局 - 覆盖低音、中音、高音三个八度,26个音符任你弹奏
  • 🎸 真实口琴音色 - ADSR 包络 + 泛音合成,告别刺耳的电子音
  • 🎶 演奏 - 同时按下多键演奏和弦,体验口琴魅力
  • 🎼 移调功能 - 支持 ±12 半音移调,轻松切换调性
  • 🤖 演示模式 - 内置《小星星》《两只老虎》等经典曲目自动演奏
  • 🖥️ 跨平台 - Windows、macOS、Linux 全平台支持

效果展示

keyonica1_使用.mp4

keyonica1_上海滩.mp4

注:视频中的电流声是作者录制的电脑喇叭有问题,其它电脑验证没有电流声。

🎮 下载使用

windows选择下面任意一个下载即可,解压zip文件后双击即可执行exe文件,打开Keyonica,即可演奏。

苹果电脑用户,下载application压缩包解压后就可以使用,可以双击也可以拖到Application下使用。

Bash
1
2
3
4
5
6
windows下载链接:
+ https://cdn.jsdelivr.net/gh/KenForever1/CDN/keyonica_x86_64-pc-windows-msvc.zip
+ https://cdn.jsdelivr.net/gh/KenForever1/CDN/keyonica_x86_64-pc-windows-gnu.zip

mac下载链接:
+ https://cdn.jsdelivr.net/gh/KenForever1/CDN/Keyonica.zip

🎹 键位映射

键盘分为三排,对应口琴的三个音区:

第一排 (低音 + 中音)

按键 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 包络

Text Only
1
2
3
4
5
6
7
音量
  ^
1 |    /\
  |   /  \____
  |  /        \
0 |_/          \___
  +--A--D--S----R--> 时间
- Attack (30ms): 柔和起音,避免爆破音 - Decay (80ms): 自然衰减 - Sustain (60%): 持续按住时的音量 - Release (150ms): 松开后平滑消音

3. 口琴音色合成

不同于简单的正弦波,采用泛音叠加模拟真实口琴:

Rust
基频 + 2次泛音×0.3 + 3次泛音×0.2 + 4次泛音×0.1 + 5次泛音×0.05

4. 移调算法

基于十二平均律,每个半音频率比为 2^(1/12)

Rust
实际频率 = 基准频率 × 2^(移调半音数/12)

🎼 内置曲目

曲目 描述
音阶测试 中音区上下行音阶
小星星 经典儿歌完整版
两只老虎 欢快的童谣旋律

🎵 按 Space 开始自动演奏,观看按键高亮跟随音乐跳动!

🎵 用代码奏响音乐,用键盘演绎旋律 🎵

评论