# LibWaveSynther
上古神器 II : 可编程软波表音频发生器
曾几何时, 我们问道: “难道, 单片机发出的声音, 只能是单调的蜂鸣器滴滴响么……?”
**绝! 对! 不! 是!**
这个项目只需消耗你的少量CPU和内存资源, 还你一个如同YM2413等MIDI音频合成芯片的高级音质!
做提示音丰富的软件? 做游戏? 跑音效轨? 都不是问题!
**注意: 该项目因涉及大量整型运算优化, 需要32位机方可运行**
**请放弃手里的51单片机吧, 建议使用STM32/ESP8266/ESP32等更加先进且便宜的设备来运行**
# 它可以做什么?
- 多通道88键音频发生器, 每个通道可同时产生一个音符
- 不限制最高通道数量, 如果你想, 那就直到用光所有CPU资源为止!
- 双缓冲设计, 无惧短暂的CPU抢占或突发音符
- 16位音质高质量渲染, 时代变了, 让我们和8bit说再见!
- ADSR(按下、衰减、保持、释放)包络支持! 轻松打造吹奏乐器和弹奏乐器等不同乐器风格!
- 算法无除法和浮点, 极限优化, 在STM32F103C6T6(64MHz HSI)环境下能够稳定6通道44100Hz输出或15通道28000Hz输出
- 每个声道都可以定义一个不同的音色(512长度16bit带符号波表)
- 你想不到的内存占用, 最小可以小到不足2KB!
- 你甚至可以使用这个来当音效发生器!
- 项目甚至提供了将MIDI文件直接转换格式的Python脚本, 以及各种各样需要用到的其他代码生成脚本……
# 所以这又是个什么黑科技?
这个库源于一个非常古老的技术 —— 软波表合成器技术, 在早期的PC游戏、FC游戏机、SFC游戏机、GBA游戏机等曾经被大规模应用.
后随着时间的流逝和技术的发展, 这项技术逐渐被丰富的空余资源和更高的处理器性能所遗忘.
如今这项技术就像是消失在了互联网上, 几乎再也找不到它的影子了. 更有很多人听都没听说过这种音频合成技术.
这个项目就是想将这一种古老而高效的技术保存下来, 让大家重新有机会能够学习到这种技术 —— 原来只有几个波形也可以合成一个完整的音乐!
# 所以能给我讲讲它的原理么?
当然可以!
一首完整的音乐, 虽然可以被直接录制下来, 然后播放 —— 但是这样就占用了非常多的存储资源来将整首曲子完整记录.
即使是被MP3格式压缩过的音乐文件, 也是大部分都要MB级别. 这显然是我们无法接受的.
那么…… 如果将曲谱记录下来, 在CPU运行的时候, 动态弹奏生成…… 岂不是能够节省下大量资源么?
这就是这项技术的全部原理.
我们只要得到一个简单的波表, 并将其按照一定的频率不断的循环播放, 加上音量控制(包络), 就能做出一些基本的乐器来.
之后改变这个播放的频率, 就能还原钢琴的整个88键音域 —— 这就是这个项目的全部工作啦!
这样的计算并不复杂, 所以这个算法高效且可行, 且并不难实现.
# 所以有没有Example代码呢?
目前已经提供x86版本(Windows下DirectSound接口输出)的Example代码和exe文件.
STM32版本正在整理, 大家莫急.
# Demo中用到的曲子是什么?
东方Project的《恋娘 ~湖上ノ旋律~》.
# 所以最后, 开源许可证呢?
MIT License, 代码无任何担保. 不过, 如果你发现了什么BUG, 欢迎提出issue或者开pull request.
没有合适的资源?快使用搜索试试~ 我知道了~
能够运行在单片机上的可编程软波表合成器.zip
共48个文件
h:14个
c:14个
py:3个
需积分: 2 0 下载量 77 浏览量
2024-01-16
10:35:22
上传
评论
收藏 447KB ZIP 举报
温馨提示
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。 [1] 从二十世纪九十年代开始,单片机技术就已经发展起来,随着时代的进步与科技的发展,目前该技术的实践应用日渐成熟,单片机被广泛应用于各个领域。现如今,人们越来越重视单片机在智能电子技术方面的开发和应用,单片机的发展进入到新的时期,无论是自动测量还是智能仪表的实践,都能看到单片机技术的身影。当前工业发展进程中,电子行业属于新兴产业,工业生产中人们将电子信息技术成功运用,让电子信息技术与单片机技术相融合,有效提高了单片机应用效果。作为计算机技术中的一个分支,单片机技术在电子产品领域的应用,丰富了电子产品的功能,也为智能化电子设备的开发和应用提供了新的出路,实现了智能化电子设备的创新与发展。 [2] 单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。 由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。
资源推荐
资源详情
资源评论
收起资源包目录
能够运行在单片机上的可编程软波表合成器.zip (48个子文件)
SJT-code
Examples
x86_Windows_DirectSound
tools
touhou
output.mid 4KB
notetable_touhou.c 12KB
notetable_touhou.h 208B
keydelta.c 749B
FunctionWave.py 3KB
KeyDeltaGenerator.py 2KB
wavetable.c 3KB
MidiConvert.py 5KB
piano_wave.wav 8KB
x64
Release
WavetableSynth_C.pdb 588KB
WavetableSynth_C.ipdb 18KB
WavetableSynth_C.iobj 54KB
WavetableSynth_C.exe 18KB
Debug
WavetableSynth_C.pdb 572KB
WavetableSynth_C.exe 99KB
WavetableSynth_C.ilk 605KB
WavetableSynth_C
notetable_touhou.c 12KB
WavetableSynth_C.vcxproj 8KB
synthtable.h 323B
synther.h 5KB
keydelta.c 751B
notetable_secondary.c 856B
WavetableSynth_C.vcxproj.filters 2KB
main.cpp 31KB
adsr_functions.h 795B
notetable_bass1.c 3KB
keydelta.h 524B
notetable_bass2.c 4KB
synther.c 20KB
notetable.h 874B
adsr_functions.c 1KB
notetable_touhou.h 208B
WavetableSynth_C.vcxproj.user 162B
WavetableSynth_C.psess 3KB
WavetableSynth_C.sln 1KB
LibWaveSynther
notetable_touhou.c 19KB
synthtable.h 328B
synther.h 5KB
keydelta.c 770B
A_MOTHOD.h 484B
adsr_functions.h 832B
notetable_touhou.c.bak 8KB
keydelta.h 544B
synther.c 20KB
notetable.h 874B
adsr_functions.c 1KB
notetable_touhou.h 208B
README.md 3KB
共 48 条
- 1
资源评论
JJJ69
- 粉丝: 6135
- 资源: 5674
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功