大家好,最近在学习c++。学了一些基础之后,总想找点项目练练手,于是重新完善了之前的keysound。
1.动机
当我用 vim 编程时,我发现了一个有趣的插件:
这个插件会在你打字的时候发出类似于机械键盘敲击的声音。我觉得很有趣。但是这个插件只能在vim中使用,不能在其他软件中使用游戏策划,即不能全局使用。该插件不支持混音。当您连续按下两个按钮时,第二个按钮的音效将停止第一个按钮的音效。体验不是很好。
之前尝试写过一个支持全局音效的程序:
但是这样做存在很多问题,比如CPU占用率高,无法检测键盘热插拔,没有混音等,体验极差。最近刚好在学习c++,可以通过完善这个项目来练习c++。
虽然项目很简单,但是我从中学到了很多东西。比如在音频方面,我学习了如何分析wav格式,理解了采样率、声道数、比特率、混音等概念电脑键盘打字声音特效电脑键盘打字声音特效,计算了一段数据的播放时间;在系统编程方面地图场景,学习了多线程、设备热插拔的监控、命令行参数、信号的分析等;这个项目还让我学会了弹钢琴,哈哈哈。
2.优点
本项目支持全局按键音效,无论在键盘上按下哪个软件,都能发出声音;支持为每个按钮自定义音效;支持混音;支持键盘设备热插拔检测;播放多个音频后可以选择结束。
3.使用
详细用法请看:
4.程序运行视频
程序可选择不同配置启动,支持后台运行。
5.使用audio/piano.json配置播放钢琴曲
哈哈哈,其实我是个小白,那天突然按简谱弹了。编号上有七个数字,所以我的拇指对应1(dao),食指对应2(rai),中指对应3(mi)无名指对应4(fa)小指对应到5(sao)和剩下的6(la)和7(xi)都是用小指弹奏的,这样一看到简谱上的数字,我就直接对应按哪个手指就行了。
青花瓷
士嘉堡博览会
好久不见
按照编号打了一遍之后,我们就可以按照打出来的字母进行盲打了。请忽略我的手伤,我盲打不是很流畅
我还使用了audio/piano.json的配置来播放很多歌曲的简谱。您可以尝试根据以下字母进行触摸打字:
像我这样的人
jk;k;kjk jk;k;kjk xcncncxcn jkjkcnj jk;k;kjk jk;kj;k xcncncxcn jjnnjk khh//’k;
jnnnncnk khh//’.’k; jnnnncn jk;k;kjk jk;k;jk xcncncxcn jjnnjk ‘/h/h’/i
iuiuiiiuh/ h/h/hui ihh//’/’kl jnnnncn
2.丁香花
dkjkjjkk njkcncncc cnncnjj lllnnjk dkjkjjkk dkjkjncc cnncnj
klllnjkk jnjnjkj nkkjjnncc dnnnncn vvvvvcv k’k;’’’
’h’;’;kjk ckjk’’n k’’k’.. k’k;’’’ ‘h’;’;kjk ckjkkkcvvvjnvc
3.追梦人
k’’’/h/’;;’/’k jk j k ;; ;k jk;’.h/’/;;;’ /’ ’ //hhuuiuippiuh
ihu/huh/’h/;;’/’
最后放上程序的链接: