TonyChyi

我在那一角落患过抽风

把 LMMS 的 Midi 导入功能改用 drumstick 实现了
2017年01月08日 文章
啊,更好的方法就是,用他妈的什么 portsmf 用 drumstick 啦 ——@liushuyu 终于折腾好了 带着对 drumstick 的撞憧憬,我终于还是给自己挖了个大坑,把原来 LMMS 在 Midi 文件导入时用到的 portsmf 库换成了 drumstick。 然而这并不是一个有趣的过程。 portsmf 是按顺序返回 Midi 事件,而 drumstick 是基于 Qt 的 Signal/Slot 机制。 于是我先花费了一点时间搞明白 drumstick 是如何工作的。 然后对整个的 MidiImport 插件进行了大拆解——将混乱不堪的代码按照 class 分成了几个文件。 接着写了一个 midiReader 类,用来接收 Midi 事件,并添加到 LMMS 的轨道中。 那么接下来的工作就是实现 midiReader 的 Slot。 在 lmms 的导入过程中,用到了以下 Signal: signalSMFTimeSig(int,int,int,int) “以四分音符为一拍,每小节四拍” signalSMFTempo(int) 节奏,单位是 ms/quarter_note signalSMFError(QString) 错误处理信息 signalSMFCtlChange(int,int,int) 控制器信息 signalSMFPitchBend(int,int) 弯音信息1 signalSMFNoteOn(int,int,int) 音符开始,但最后一个参数为 0 时等同于音符结束 signalSMFNoteOff(int,int,int) 音符结束 signalSMFProgram(int,int) 音色改变2 signalSMFHeader(int,int,int) Midi 文件头信息 这样就完全不用考虑导入的 Midi 文件是格式 0 还是格式 1 了,忽略掉 signalSMFTrackStart() 和 signalSMFTrackEnd() 就可以。
Tags: #LMMS · #MIDI · #drumstick · #C++
修复了 LMMS Pitch Bend Bug
2017年01月04日 文章
@leo_song 对我说,搞报表平台的代码不如研究 LMMS LMMS 有一个存在了很长时间的 BUG:导入 Midi 文件的时候,对 Pitch Bend 不能很好的处理导致走音。 定位 在 Cakewalk 中测试,如果是单纯调整 Pitch Bend,最大范围是 ±2 个半音,而我这里有个文件1甚至可以达到 1 个八度。 经过一番测试,发现是 RPN(0, 12) 这个参数在起作用: 0, 0, Header, 1, 7, 960 1, 0, Start_track 1, 0, Control_c, 0, 101, 0 1, 0, Control_c, 0, 100, 0 1, 0, Control_c, 0, 6, 12 1, 0, Control_c, 0, 38, 0 …… 也就是上面的 Contol_c 事件,先以 101 和 100 控制器发送值 02,然后再用 6 控制器发送 123,最后以 38 控制器发送 0。
Tags: #LMMS · #MIDI
他们指向左,他们指向右,我们还是没脑子
2016年12月29日 文章
他们指向左,他们指向右,我们不能没脑子 ——李志《他们》 这是一首被封杀的歌,但我总觉得它被封杀的原因并不是嘲讽了赵太爷,而是因为歌词比较“下流”1 然而我们还是没脑子。 人日说电影打差评不行,又说可以打差评,妈了个屯的,我们还是被Fooyou。 媒体爆出了某个比较惊人的事件,然而往往就在几天后反转,总感觉自己被带节奏。就像是之前还是胡编的某人,最近画风又变了。真的很迷茫,对现在的媒体完全不敢相信了。 曾经以为自己是在“独立思考”,然而现在却发现,自己从来就没有过。 仍然不知道什么是对的,什么是错的,果然这个“群众”其实什么都不是,一面“眼睛雪亮”,一面“不明真相”。 现在只有吃瓜看戏的份了,不知道能不能闷声发财。 还是不想上班不想工作 一个叫本兮歌手的死,再一次充分暴露了资本主义的残酷性。一个有才华的姑娘被各种公司压榨,又不得自由。 可是又能怎么办涅?毕竟还在异化 至少到现在他的作品《人民不需要自由》还没被封杀 [return]
年末的一些碎碎念
2016年12月12日 文章
气氛上博客已经闲鱼了很久(一个多月)了,不知道还能写什么。 先来抱怨一波吧 很多事情说出来也许会好很多。 感觉结婚后的生活并没有变得多好,反而因为工作的原因越来越累,或者说有可能有了一种厌倦感。虽然在公司的运维团队里我是个主力,很多事情也需要我去把关,可这并没有让我有什么成就感。 能力越大责任越大,闹心的事也越多。很多项目的对接需要我去做,然而与第三方的沟通成了一个大问题,很多事情明明说的很清楚了,却仍然需要一遍一遍的出坑,沟通的成本没有下降反而越来越高。再加上我是个很讨厌别人在聊天工具上问我“在么”的人,有什么事情完全可以直接说的,却非要多这么一步,感觉自己的工作一直被视奸。 和开发也有扯不完的皮踢不完的球和背不完的锅,系统开始变得不太稳定,然而除了救火却无能为力。根本想不出是哪出了问题,是自己不够努力还是确实有些环节在空转影响了效率。 感觉不像以前那样积极,喜欢动手了,更想整天发呆,不想上班。这 TM 就是生活? 越来越暴露的自己的短视和某人的伟大 5 年前,我是个“美分”。痛恨大林,XX东,TG,感觉他们是万恶之源1。感觉某国是人类的希望,然而…… 去你妈的政治正确! 当你把希望寄托在别人身上的时候,就已经立好了注定失望的 flag。 新任的美国各部门的老大清一色的资本家,呵呵哒。 然而国内也没好哪去 果然资本家为了利润都不惜杀鸡取卵了么? 几乎所有的人都在说,要快,快鱼吃慢鱼……这TM不就是激烈竞争导致的么,不还是资本游戏么! 然而我却是个懒人——或者说是慢工出细活的人。工作时的感觉远远不如自己在写开源软件时那样从容。虽然有些项目的推进确实也让人着急,但是每个人都很努力,至少没那么让人绝望。 越来越感觉马克思说的很对,资本主义2就是在剥削啊! 然而这伙计实在太超前了,以至于可能只有我的孩子也许能看到那样一个世界了吧。我真的很想过一段时间去做一些不同的事情,比如做做音乐,写点自己想写的程序,去别的地方看看,顺手占几个 Po,或者就发几天的呆,放空一下自己。 然而,我没钱,也没有时间,总是害怕以后的生活不能维持。也只能怪自己不够 NB,没有财务上的自由,只能努力干活赚钱才可以生存。 所以最近一段时间一直在关注可控核聚变,还有其他可以引发一次剧变的黑科技。 也许当这些技术上线后,人类就可以从这些乱七八糟的事情中解脱了吧,至少漫画家不会因为生存而透支自己,程序员不会因为改不完的需求而加班熬夜,活的还能从容一些。 因为我害怕 自己干的这一行,已经有很多起被活活累死的事情发生了。然而在这种情况下,却不停的听到某厂要 996 甚至 897 的声音,打不完的卡签不完的到。甚至某些除了政治什么都不懂的老板,还要不停的洗脑。人不像人,鬼不像鬼,机器不像机器。 感觉水已经淹到了脖子,要喘口气都太难。 是的,上班有些累了,想要放松一下,手里却总是有事情忙不完。 如果不考虑当时这些人的处境,说什么都是可以的吧,尽管现在看来他们那样做确实有问题,然而艹蛋的现实并没有什么改观 [return] 无论是垄断资本主义还是自由资本主义还是国家资本主义还是权贵资本主义 [return]
用 Go 实现一个守护进程
2016年10月25日 文章
实现一个守护进程,同时还可以调用该程序加特定参数停止该守护进程 package main import ( "fmt" "io/ioutil" "os" "os/exec" "path/filepath" "strconv" "time" ) func main() { // 处理程序后的参数 if len(os.Args[1:]) > 0 { switch os.Args[1] { // 停止守护进程,从 /tmp/pidfile 中获取进程 ID case "stop": bpid, _ := ioutil.ReadFile("/tmp/pidfile") pid, _ := strconv.Atoi(string(bpid)) proc, _ := os.FindProcess(pid) proc.Kill() fmt.Println("Killed.") os.Exit(0) } } // 启动守护进程,即当自身的父进程不为 1 时,就启动一个新的进程, // 并退出自己,直到父进程为 1 (一般是 init)为止 if os.Getppid() != 1 { exePath, _ := filepath.Abs(os.Args[0]) cmd := exec.
Tags: #Go
我常用的软件盘点
2016年10月13日 文章
上网 Chromium(谷歌浏览器开源版) ThunderBird(邮件、IRC客户端) Telegram(聊天工具) Transmission(开车工具) Filezilla(FTP 工具) 办公 WPS Evince(PDF 阅读) 图像 GIMP (相当于 PS) Inkscape (相当于 Ai) SweetHome3D (家装设计软件) 音频制作 Audacity(相当于 CoolEdit) Ardour(多轨音频工作站) LMMS(相当于 FL Studio) TuxGuitar(相当于 Guitar Pro) 视频制作 Kdenlive(功能很强) HandBrake(DVD 转换工具) 音乐&视频 VLC(非常强大) RhythmBox(库管理很好) EasyTag(改 MP3 文件标签) 网易云音乐 开发 VIM(最好的编辑器) Atom(当 IDE 用) VirtualBox(虚拟机) 输入法 Fcitx(轻量,简单好用) 终端模拟器 Terminator(可以分屏) Zsh(太强大了) 其他 Steam(砍手利器) K3b(光盘刻录)
Tags: #盘点
近期要搞一个大新闻
2016年10月08日 文章
ModuleAB 第一个公开版本即将发布! 这应该是我第一个独立完成的比较完整的开源项目,为了解决阿里云上数据和日志的备份/归档问题而设计的。 ModuleAB —— Module Archive and Backup 目前由三个部分组成: Server 端,Beego 框架 Agent 端,自己写的,运行在各机器上,使用 inotify 机制监控文件变化 Web 端,集成在 Server 端,Angular.JS 1.x 框架,Bootstrap 样式库 另外还支持服务端策略,可以根据一定的规则将 OSS 上的备份转存至 OAS 归档,或者定期删除旧的备份/归档 目前进入最后的调试和测试阶段,近期发布 项目地址:GitHub,以 GPL v3 发布,欢迎加星,欢迎 PR
Tags: #ModuleAB · #阿里云 · #OSS · #OAS · #归档
GPG Key 变动
2016年10月01日 声明
原ID DF625F9C0A0C298F 声明作废
Tags: #GPG
“羊叫兽”岂可再乎
2016年08月11日 文章
这两天微博再次提起了杨永信及其控制下的临沂“网戒中心”的事情,算是引起了我一些回忆,写篇文章吧 我曾经关注过的这件事 2009年,我第二次高考完,在家等成绩的时候,看到了一篇新闻,是关于杨永信的“网戒中心”被卫生部禁止电击1的事情。 然后我就关注了杨永信的贴吧,看了里面那些孩子的遭遇,简直被毁三观了。 被送进去的孩子各种各样,有玩游戏“上瘾”的,有打架的,有谈恋爱2的,有跟父母顶嘴的——总的来说,只要“不听话”3,就会被送进去。然后呢,被一种已经禁用的设备电击——不确定当年的革命烈士能不能忍受——备受摧残。 除去电击之外,还有各种各样的规定,如果不遵守,被电应该是免不了的。总之,这里用尽了一切办法,消灭个性,只有服从——服从父母,服从“羊叫兽”。 你以为出来以后就解放了?不不不,你要是“不听话”,还会被抓回去的。 事实上,后果已经显现出来了,一部分人变得情绪极端4或者压抑。我想这其中可能还有人得了严重的斯德哥尔摩综合征。 为何他们还活着 上了大学以后,各种原因,就没再继续关注此事,然而那个时候,看到了豆瓣网上的一个小组——父母皆祸害。 有些父母的控制欲极强5,简直吓人。也难怪有人会说,开个车还要考驾照,做父母却不用任何证照。 这些父母毁掉的,是孩子独立的人格。然而孩子长大了,他们的控制力又无法控制孩子的时候,也肯定会觉得这样的机构是他们的救命稻草,觉得治疗一通之后,孩子就会顺从他们。 然而这些父母既可怜,又可恨。 这些父母怎么想的 在这些父母眼里,孩子应该服从他们对未来的规划:考个好大学,找个好工作(公务员),相亲结婚,生个男娃……。 一旦孩子不按他们设定的走,就觉得自己的理想破灭了,为了自己那点理想不破灭,只能把孩子绑回到他们所认为的“正路”上来。 嗯,他们从来不想这个生活是不是孩子想要的,大丈夫だよ!他们看着舒服就好了嘛!孩子的想法都是胡来,不重要。等他们长大了就明白父母的苦心了。 是的,等他们的孩子长到他们的年纪,也就成了他们。然后他们也很满意。 于是,孩子那些没有完成的梦想,又成了他们孩子们的枷锁。 何去何从 首先有句话我觉得得先说下: 无论孩子什么样子,总得把这个世界交给他们 到了明年,我也会成为一个孩子的父亲,我想我有必要提前把一些事情想明白,尽量少走弯路。 总之,就算是自己老了,也要继续跟进年轻人的文化,要不断的学习,还是要保持开放的心态。 社会就是这样,后浪总会把前浪拍在沙滩上。我想就我自己而言,玩游戏,玩手机,讲污段子,性观念还算开放。 真想不到等自己孩子长大了会喜欢什么,但我希望他们的存在能让这个社会更加文明、开放、宽容和自由。 但只要是不违法,就没有理由不支持孩子吧? 总之,“羊叫兽”的事情,不应该再发生了。但是,在10-20年内,此题无解6,他仍然可能会摧残更多的孩子。 PS:文中所说的“不听话”排除了某些人渣,但他们应该接受法律制裁而不是被电 PS:实在说不出什么了,就这样吧 2009年,卫生部发布《关于停止电刺激(或电休克)治疗“网瘾”技术临床应用的通知》 [return] 我反对使用“早恋”这个词语,这是对青春期少年的不尊重。 [return] 或者说是孩子的行为挑战了父母的控制欲。 [return] http://zhihu.com/question/24183980/answer/59020707 [return] 就中国社会目前的情况而言,任何父母多少都会有些控制欲吧 [return] 事实上这个“网戒中心”已经绑架了当地的经济,再加上腐败因素 [return]
我们中出了一个 Ubuntu
2016年06月30日 文章
我觉得有必要写一篇文章,来谈谈 Ubuntu 是怎么背叛了自由软件 一、我的黑历史 我在上小学(2000年左右)的时候就已经知道有个操作系统叫 Linux 了。然而那时候的我毕竟是个鼠标党,讨厌打字,家里没上网(电话费谁受的了),英文没学过。只是有时候去新华书店会看一些 Linux 的书,还只是看图(就是书中讲到 Xwindow 这一章的时候)。 然后到了上初中的时候,在一本书里看到了 Ubuntu,只知道这个系统挺 NB,能导入 Windows 系统的用户名和一些设置。然后还是没有用,毕竟没上网。 到高考完的暑假,下载 QQ 客户端的时候看到 QQ 出了 Linux 版,然后就在网上找了个红旗(RedFlag) Linux(我 TM 是有多 2),装在虚拟机里,然后并不会安装软件,放弃。 二、我也用过 Ubuntu 然后到了 2010 年我上大二的时候,Windows 7 玩烦了(还是花了¥700 买的正版),就想玩 Linux,然后就入坑 Ubuntu 了,10.04 LTS。 然后当时没过几天 Ubuntu 10.10 就发布了,升级。 不得不说这个时候的 Ubuntu 还是很良心的,开机快,也很稳定,双系统相处很愉♂快。嗯,我也是玩 Linux 的人了(Ahh,That’s good)。 可以说我是在 Ubuntu 下完成了对整个 Linux 世界的启蒙。直到我膝盖中了一箭 Ubuntu 发布 11.04。 三、Ubuntu 的罪状 1、Unity —— who is watching you 其实一开始的时候我对 Unity 还是很期待的,毕竟界面设计巅覆了我对 UI 最原始的认识。然而它并不好用,而且当时 Gnome 3 也快出了,本来很期待 11.

 

TonyChyi © 2018 GPLv2