![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KeyboardPiano
Tiny_A
这个作者很懒,什么都没留下…
展开
-
KeyboardPianoV0.0 项目介绍
KeyboardPianoV0.0 项目介绍该项目是基于 java 环境开发的个人项目——Keyboard Piano,即键盘钢琴通过键盘按键绑定,响应音频播放,从而模拟钢琴的演奏。说人话就是,按一个键,发一个声。。。所以整个项目其实也没什么技术难点,不懂就猜,不会就查。这样瞎鸡巴把项目给搞起来了也正因为如此,萌生了写博客记录学习过程的念头,也好总结一番,跟大伙分享一...原创 2019-09-16 10:55:34 · 352 阅读 · 0 评论 -
KeyboardPianoV1.7.3 线程池
文章目录详细步骤例行说明代码分析相关链接详细步骤例行说明Thread creation and destruction is very expensive由此引入线程池科学管理线程,又根据音频播放的并发性以及数量的不确定性,选择缓存线程池 CacheThreadPool 管理音频播放其特点是:线程数没有限制,线程重用率高,并且有一个超时回收机制,当空闲的线程超过 1 分钟就...原创 2019-09-22 14:22:54 · 129 阅读 · 0 评论 -
KeyboardPianoV1.7.2 Debug(音频优化)
文章目录详细步骤例行说明具体步骤优化过程Option相关链接后记详细步骤例行说明V1.7.1 主要在 MyButton 中处理贴图优化,这个版本开始整顿 MusicPlayer具体步骤Task Manager => 内存猛增 => JConsole => 堆内存泄露 => Memory Analyzer => 分析原因优化的过程:Clip 播放 +...原创 2019-09-22 12:14:29 · 254 阅读 · 0 评论 -
KeyboardPianoV1.7.1 Debug(贴图优化)
文章目录详细步骤例行说明具体步骤代码分析Option详细步骤例行说明Debug 开篇引言——越往后越难,情况越多越复杂,坐稳啦V1.5.1 中 switchCase & graphicsImageSet() 的代码解释下有引出一个 BUG每 paint 一次,就会初始化一次按钮的贴图,重复的初始化,导致无缘无故地消耗内存,属于代码逻辑错误具体步骤正确的处理...原创 2019-09-22 11:44:24 · 144 阅读 · 0 评论 -
KeyboardPianoV1.6.*(忽略版本)
V1.6.* 的版本都是 Debug 版本,更合适地讲是试错的版本,而且 BUG 处理不完整,总之就是一个字,乱(代码乱,逻辑乱)所以,很负责任地讲,V1.6.* 的版本没必要看,没有教程说明,也不用去看代码。以免误导视听,扰乱思路!后面的版本会详细、系统地分析说明所以说,写这篇博文也只是滥竽充数,进一步的学习请直接跳到 V1.7.1 Debug(贴图优化) (V1.7 只做排版而已,同样建...原创 2019-09-22 11:46:28 · 97 阅读 · 0 评论 -
KeyboardPianoV1.6 MusicPlayer
文章目录详细步骤例行说明具体步骤代码分析OptionsOption1后记详细步骤例行说明本着最小代价/资源化原则,使用 java 自带的音频播放器(位于 javax.sound.sampled 包内),格式上仅限于 wav 音频(MP3 翻车不支持,且对 wav 频率&位 有范围限制)这里博主使用 44100 Hz, 16 bit 的格式所以与其说是选择了 wav,倒不如说是选...原创 2019-09-19 16:50:50 · 362 阅读 · 0 评论 -
KeyboardPianoV1.5.3 鼠标事件
文章目录详细步骤例行说明具体步骤代码分析相关链接详细步骤例行说明首先贴一张贴 全键按下图 (可见于 KeyboardPianoV0.0 项目介绍)即使一个人把所有按键一次性全部按下,也未必能达到这种效果,因为即使是那种全键无冲的键盘,也可能有翻车 ←_←那博主是怎么做到的呢?其实问题的关键就是一开始选用的开关按钮 JToggleButton,使用鼠标点击一次,按钮就不会弹起来,所以才...原创 2019-09-19 10:57:29 · 133 阅读 · 0 评论 -
KeyboardPianoV1.5.1 MyButton(调用)
文章目录详细步骤例行说明具体步骤代码分析==Attention==OptionsOption1Option2相关链接详细步骤例行说明V1.5 已构建好 MyButton,等待 V1.5.1 的调用,调用实现按钮的贴图修边美化具体步骤MyButton 构造方法初始化按钮,消去边框,设置大小paintComponent() 画按钮组件 => switchCase() 按...原创 2019-09-19 10:51:52 · 220 阅读 · 0 评论 -
KeyboardPianoV1.5 MyButton(创建)
文章目录详细步骤例行说明代码分析详细步骤例行说明还是原先的老套路,先实现后调用,先把 MyButton 做出来,到后续版本再调用之所以要自己做个 MyButton, 是因为 JToggleButton 功能比较有限,但又不完全没有用,所以选择了 extends,这样即继承 JToggleButton 的所有功能,又可以添加新的功能进去,就一个字 爽 ∩ω∩代码分析set...原创 2019-09-19 09:02:06 · 142 阅读 · 0 评论 -
KeyboardPianoV1.4.1 配置管理
文章目录详细步骤例行说明具体步骤代码分析OptionsOption1相关链接详细步骤例行说明就如之前 V1.3 - V1.3.1 的关系一样,V1.3 做前期准备,V1.3.1 做调用处理这里 V1.4 - V1.4.1 也是同个道理,但这个版本只做配置管理,为下个版本做调用前准备具体步骤新建一个 PropertiesManage 配置管理类这里实际上有一入另一种设计模式 ...原创 2019-09-18 11:49:12 · 180 阅读 · 0 评论 -
KeyboardPianoV1.4 音频贴图
文章目录详细步骤例行说明分类介绍具体步骤OptionsOption1Option2相关链接详细步骤例行说明该版本主要做前期资源准备,包含音频、贴图、配置文件等分类介绍键盘按键 按照形状划分成 6 种,按颜色分成 5 种(左右手+按下抬起+空)wav 音频分类,这里要看 pitch 分 7 种,Octave 分 9 种由于博主对音调音高一窍不通,就不在这里瞎 BB 了,有...原创 2019-09-18 11:15:51 · 235 阅读 · 0 评论 -
KeyboardPianoV1.3.1 按钮绑定(调用)
文章目录详细步骤例行说明具体步骤代码分析BUG 记录OptionsOption1详细步骤例行说明上一个版本已经把键盘监听的框架搭好了,就差调用绑定了具体步骤callback() => switchKey() => select() 没了代码分析callback() 监听键盘事件,把 vkCode & wparam 传递给 switchKey() 进行按...原创 2019-09-17 22:28:58 · 323 阅读 · 0 评论 -
KeyboardPianoV1.3 按钮绑定(搭建)
文章目录详细步骤例行说明具体步骤代码分析相关链接详细步骤例行说明有了各个键值 vkCode,就可以做按钮绑定了上个版本 V1.2.2 还不是严格意义上的写代码,从 V1.0 到现在一行代码都没写,手都开始痒起来了。。。具体步骤首先需要用到两个 jar 包,按照以下链接下载并导入,img1链接:https://pan.baidu.com/s/1n7kIidocxo0tAGoo...原创 2019-09-17 22:24:01 · 158 阅读 · 0 评论 -
KeyboardPianoV1.2.2 vkCodes
文章目录详细步骤例行说明具体步骤OptionsOption1Option2Option3相关链接详细步骤例行说明有了 104 个按钮后,就需要绑定键盘上的按键,使其一一对应那问题来了,怎么做 按键绑定 呢?实际上键盘上的每个按键都有一个特定的值(vkCode),所以在做绑定之前,是不是应该把这些 识别码 给找出来呀!单纯知道这些值并没有什么卵用,将其成员化为我所用才是硬道理,所以该版...原创 2019-09-17 17:42:30 · 367 阅读 · 0 评论 -
KeyboardPianoV1.1.1+V1.2+V1.2.1 代码调整
文章目录KeyboardPianoV1.1.1 按钮修正KeyboardPianoV1.2 按钮重命名KeyboardPianoV1.2.1 按钮调整KeyboardPianoV1.1.1 按钮修正Debug 版本去除位于数字键盘上方的 4 个多余按钮 img1但是遗留了一个 BUG 数字键盘 0 号键 被分割,该 BUG 于 V1.2 更正当然也可以两个 BUGs 一起处理,只...原创 2019-09-16 22:21:09 · 183 阅读 · 0 评论 -
KeyboardPianoV1.1 布局调整
文章目录详细步骤例行说明具体步骤OptionsOption1Option2Option3Option4后记详细步骤例行说明V1.0 的版本运行不了,出来混的,总是要还的嘛。V1.1 就来解决这个运行问题,顺便把多余的包清除掉注:由于博主能力有限,没能把 GitHub 强大的版本控制功能用好,所以用了一个最蠢的办法做项目的版本管理,倘若有兴趣了解的童鞋,请移步到 Option1 查看...原创 2019-09-16 21:14:24 · 268 阅读 · 0 评论 -
KeyboardPianoV1.0 界面搭建
文章目录详细步骤例行说明具体步骤OptionsOption1Option2Option3Attention相关链接详细步骤例行说明项目一上来,就是要把界面搭起来。万事开头难,V1.0 会啰嗦一点,图多话多,要耐心其实界面搭建没啥技术含量,只要有耐心 + 、小技巧,轻轻松松搭完界面,而且不用写一行代码有视频教程,也有书面教程;既有中文版,也有英文版。就是这么拽 ^ ^具体步骤...原创 2019-09-16 17:27:50 · 359 阅读 · 0 评论 -
KeyboardPianoV1.8 Debug(Unhook)
文章目录详细步骤例行说明具体步骤代码分析相关链接详细步骤例行说明V1.3.1 BUG 记录 中写到,使用 Hook 钩子函数拦截系统按键信息,并屏蔽系统按键,导致一个问题,只要程序运行着,即使程序最小化,系统也无法正常按键,所以这个版本将修正该 BUG具体步骤当程序窗口获得焦点时,启用钩子函数监听系统按键反之,当程序窗口失去焦点时,取消监听屏蔽,恢复系统按键代码分析Key...原创 2019-09-22 15:17:52 · 225 阅读 · 0 评论