I want to introduce a not-very-new project I start working with recently. That is IceOrgan-R.
About a year ago I wrote IceOrgan. That is is a free and open source real-time implementation of the hedOrgan pipe-organ soundfont written by Ziya Mete Demircan. Due to the limitation of the sf2 soundfont, it can be just used for note writing software such as Musescore, so IceOrgan-R does not directly load the soundfont's sf2 file. It works standalone. To be more simplified, that is a completely standalone digital virtual organ program.
I played a song with IceOrgan. You can see the video here: https://lbry.tv/@IceGuye:a/O-Canada-Organo-Pleno-Ver:9
Now I start rewritting it in Rust programming language, and named the project "IceOrgan-R". Similar to IcePiano, Python binding cannot the take all the powerful benefits from the SDL2. For instance, the fadeout function is hard hacked; there is occassionally sound clipping; the program may have some delays that sometime human can actually even feel the delays. This is why I really want to rewrite this program by using Rust. The Rust binding for the SDL2 is much stable. Similar to IcePiano-R, I am planning to use some multi-threading on the IceOrgan-R too, because concurrence programming is fearless on Rust. IceOrgan-R is still in early development, if you want to see the codes, you can go here: https://gitlab.com/iceguye/iceorgan-r
I am not a rewrite-all-to-rust guy. For example, I didn't rewrite PerfectHS to Rust. It works okay on Python. Currently, There are 3 programs that I am rewritting. All of them are real-time program, like a video game.
This is it. Happy Lunar New Year to all who celebrate.
介绍一个我最近正在做的“不是很新的”开源软件—— IceOrgan-R。
大约一年前,我编写了IceOrgan。它是一个开源自由的虚拟管风琴软件。它的来自于Ziya Mete Demircan 编写的一个教堂管风琴的sf2文件。但是介于sf2文件本身的限制,它不能被用于实时演奏,只能用于例如Musescore之类的编曲软件中。所以, IceOrgan 不读取任何sf2文件,只是借用了它的数据,然后,完全独立的运作。
我曾经使用IceOrgan演奏了一首乐曲,你可以在这里看到视频: https://lbry.tv/@IceGuye:a/O-Canada-Organo-Pleno-Ver:9 。
现在我正在用Rust编程语言重写它,我把它命名叫"IceOrgan-R"。与IcePIano之前遇到的问题类似,由于Python的SDL2封装不能完全体现SDL2的全部的能力。比如说,“声音渐弱”这个功能就必须是我自己使用一些硬核的方法来重写的;还有就是有些时候声音会出现杂音,这是由于CPU的cache限制造成的;还有的时候程序运行的延迟很大,以至于人类都能感知出来。这就是为什么我要用Rust编程语言来重写它。Rust的SDL2封装完整地体现了原版C语言的SDL2的全部能力。与IcePiano-R类似,我会肆无忌惮地使用多线程技术。多线程技术在Rust语言里面是非常安全和高效的。IceOrgan-R仍在早期开发阶段,你可以从这里获取源代码: https://gitlab.com/iceguye/iceorgan-r 。
我本人并不是一个支持“用Rust重写整个世界”的人。比如说,我之前编写的PerfectHS就没有使用Rust来重写,因为Python就能很好的运行。现在我有3个程序正在使用Rust来重写,因为它们3个都是实时运行的程序(就像是一个电脑游戏一样)。
好了,就说那么多了,祝大家新春快乐。