土豆泥
我一直很好奇早期的 MacOS 里面到底有什么。 为了解答这个问题,我安装了 BasiliskII 并在其中安装了 MacOS 71, 好吧,看起来还不错。 体验完了以后,我看了一下磁盘镜像 [email protected]: ~/os7 > file MacOS7 MacOS7: Macintosh HFS data (bootable) block size: 33280, number of blocks: 64527, volume name: MacOS 嗯,是 HFS,果断安装 hfsprogs,然后挂载这个镜像 下面我列了一下整个磁盘中的文件及相关信息 总用量 67031 -rw-r--r-- 1 root root 19696 5月 31 1996 About System 7.5 drwxr-xr-x 1 root root 6 3月 6 2017 Apple Extras -rw-r--r-- 1 root root 133120 3月 6 2017 Desktop DB -rw-r--r-- 1 root root 328322 3月 6 2017 Desktop DF drwxr-xr-x 1 root root 2 3月 6 2017 Desktop Folder -rw-r--r-- 1 root root 0 10月 13 1995 SimpleText drwxr-xr-x 1 root root 17 3月 6 2017 System Folder drwxr-xr-x 1 root root 2 3月 6 2017 Trash -rw-r--r-- 1 root root 68157440 3月 6 2017 VM Storage ./About System 7.5 -rw-r--r-- 1 root root 19696 5月 31 1996 ./About System 7.5 ./Apple Extras 总用量 0 drwxr-xr-x 1 root root 5 3月 6 2017 About the MacOS drwxr-xr-x 1 root root 4 3月 6 2017 AppleCD Audio Player drwxr-xr-x 1 root root 7 3月 6 2017 AppleScript?
2017年03月06日 #MacOS #Apple
LMMS 的代码里其实已经有了一个 MIDI 文件的导出功能。但是代码里的注释告诉我,那个是坏的,而且主界面的代码里把 MIDI 导出的菜单项给注释掉了。 既然 Midi 导入的功能已经改成了 Drumstick,那就更干脆点,直接把导出功能也解决了吧。 原代码功能 原来的 Midi 导出代码是将项目的内容转成 Qt 的 DOM 视图,然后从视图中读取信息,另外再实现一个自己的 Midi 写入的类。 但是这个代码似乎只能导出音符信息,控制器信息却不能导出,这就意味着,像 Pitch bend/Volume/Panning 这些信息要丢掉,也没法导入到其他的软件中。 原代码可以参考这里 新的需求 我的目标是,做一个 GM 兼容的 MIDI 导出功能,不仅导出音符,还要能让导出的 MIDI 文件直接可以拿来听! 接下来就是试验一下 Drumstick 如何写入一个 MIDI 文件。 我们需要这样做1: 首先调用 setFileFormat() 设定文件版本,这里就强制设 1 吧2 然后调用 setDivision() 设定一个四分音符的 Tick 数,同样强制 960 吧。 这样,一个 Header 就完成了,接下来写每个轨道的信息。 扫描整个项目,将使用 Sf2 Player 的轨道记下来,统计数量,调用 setTracks() 设为轨道数 +1s 同样也把 AutomationTrack 也记下来。 Drumstick 按轨写入的方法是,发送一个 signalSMFWriteTrack(int track),然后设置一个 Slot 去接收它。
2017年01月20日 #LMMS #MIDI #C++ #Qt
啊,更好的方法就是,用他妈的什么 portsmf 用 drumstick 啦 [email protected] 终于折腾好了 带着对 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
2017年01月08日 #LMMS #MIDI #drumstick #C++
@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,最后以
2017年01月04日 #LMMS #MIDI
他们指向左,他们指向右,我们不能没脑子 ——李志《他们》 这是一首被封杀的歌,但我总觉得它被封杀的原因并不是嘲讽了赵太爷,而是因为歌词比较“下流”1 然而我们还是没脑子。 人日说电影打差评不行,又说可以打差评,妈了个屯的,我们还是被Fooyou。 媒体爆出了某个比较惊人的事件,然而往往就在几天后反转,总感觉自己被带节奏。就像是之前还是胡编的某人,最近画风又变了。真的很迷茫,对现在的媒体完全不敢相信了。 曾经以为自己是在“独立思考”,然而现在却发现,自己从来就没有过。 仍然不知道什么是对的,什么是错的,果然这个“群众”其实什么都不是,一面“眼睛雪亮”,一面“不明真相”。 现在只有吃瓜看戏的份了,不知道能不能闷声发财。 还是不想上班不想工作 一个叫本兮歌手的死,再一次充分暴露了资本主义的残酷性。一个有才华的姑娘被各种公司压榨,又不得自由。 可是又能怎么办涅?毕竟还在异化 至少到现在他的作品《人民不需要自由》还没被封杀 [return]
2016年12月29日 #胡说八道
气氛上博客已经闲鱼了很久(一个多月)了,不知道还能写什么。 先来抱怨一波吧 很多事情说出来也许会好很多。 感觉结婚后的生活并没有变得多好,反而因为工作的原因越来越累,或者说有可能有了一种厌倦感。虽然在公司的运维团队里我是个主力,很多事情也需要我去把关,可这并没有让我有什么成就感。 能力越大责任越大,闹心的事也越多。很多项目的对接需要我去做,然而与第三方的沟通成了一个大问题,很多事情明明说的很清楚了,却仍然需要一遍一遍的出坑,沟通的成本没有下降反而越来越高。再加上我是个很讨厌别人在聊天工具上问我“在么”的人,有什么事情完全可以直接说的,却非要多这么一步,感觉自己的工作一直被视奸。 和开发也有扯不完的皮踢不完的球和背不完的锅,系统开始变得不太稳定,然而除了救火却无能为力。根本想不出是哪出了问题,是自己不够努力还是确实有些环节在空转影响了效率。 感觉不像以前那样积极,喜欢动手了,更想整天发呆,不想上班。这 TM 就是生活? 越来越暴露的自己的短视和某人的伟大 5 年前,我是个“美分”。痛恨大林,XX东,TG,感觉他们是万恶之源1。感觉某国是人类的希望,然而…… 去你妈的政治正确! 当你把希望寄托在别人身上的时候,就已经立好了注定失望的 flag。 新任的美国各部门的老大清一色的资本家,呵呵哒。 然而国内也没好哪去 果然资本家为了利润都不惜杀鸡取卵了么? 几乎所有的人都在说,要快,快鱼吃慢鱼……这TM不就是激烈竞争导致的么,不还是资本游戏么! 然而我却是个懒人——或者说是慢工出细活的人。工作时的感觉远远不如自己在写开源软件时那样从容。虽然有些项目的推进确实也让人着急,但是每个人都很努力,至少没那么让人绝望。 越来越感觉马克思说的很对,资本主义2就是在剥削啊! 然而这伙计实在太超前了,以至于可能只有我的孩子也许能看到那样一个世界了吧。我真的很想过一段时间去做一些不同的事情,比如做做音乐,写点自己想写的程序,去别的地方看看,顺手占几个 Po,或者就发几天的呆,放空一下自己。 然而,我没钱,也没有时间,总是害怕以后的生活不能维持。也只能怪自己不够 NB,没有财务上的自由,只能努力干活赚钱才可以生存。 所以最近一段时间一直在关注可控核聚变,还有其他可以引发一次剧变的黑科技。 也许当这些技术上线后,人类就可以从这些乱七八糟的事情中解脱了吧,至少漫画家不会因为生存而透支自己,程序员不会因为改不完的需求而加班熬夜,活的还能从容一些。 因为我害怕 自己干的这一行,已经有很多起被活活累死的事情发生了。然而在这种情况下,却不停的听到某厂要 996 甚至 897 的声音,打不完的卡签不完的到。甚至某些除了政治什么都不懂的老板,还要不停的洗脑。人不像人,鬼不像鬼,机器不像机器。 感觉水已经淹到了脖子,要喘口气都太难。 是的,上班有些累了,想要放松一下,手里却总是有事情忙不完。 如果不考虑当时这些人的处境,说什么都是可以的吧,尽管现在看来他们那样做确实有问题,然而艹蛋的现实并没有什么改观 [return] 无论是垄断资本主义还是自由资本主义还是国家资本主义还是权贵资本主义 [return]
2016年12月12日 #胡说八道
实现一个守护进程,同时还可以调用该程序加特定参数停止该守护进程 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 :=
2016年10月25日 #Go
上网 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(光盘刻录)
2016年10月13日 #盘点
ModuleAB 第一个公开版本即将发布! 这应该是我第一个独立完成的比较完整的开源项目,为了解决阿里云上数据和日志的备份/归档问题而设计的。 ModuleAB —— Module Archive and Backup 目前由三个部分组成: Server 端,Beego 框架 Agent 端,自己写的,运行在各机器上,使用 inotify 机制监控文件变化 Web 端,集成在 Server 端,Angular.JS 1.x 框架,Bootstrap 样式库 另外还支持服务端策略,可以根据一定的规则将 OSS 上的备份转存至 OAS 归档,或者定期删除旧的备份/归档 目前进入最后的调试和测试阶段,近期发布 项目地址:GitHub,以 GPL v3 发布,欢迎加星,欢迎 PR
2016年10月08日 #ModuleAB #阿里云 #OSS #OAS #归档
Design pdevty