少多's profileLucas'PhotosBlogListsMore ![]() | Help |
Lucas'October 30 ganK the Synthesizer Installer/ganK软件合成器ganK the Synthesizer is a free soft synth developed by Lucas. It is presented in both VSTi format and Windows standalone application.
ganK is an additive/substractive synth with 3 oscillators , a moog filter, a lfo, effects like an 8-band eq and a delay component.
Have fun.
Download URL/下载地址:
updating/有改动会随时更新。
@ToDo: replace .xml saving by .fxp saving..(must get this fixed after mid-term)
October 27 纪念ganK工程结束说是结束,但是vsti插件还没做。后悔当时没有仔细看Juce的doc,juce里有个类StandaloneFilterWindow,原来是可以直接用juce按vst开发的,然后用这个类直接做成桌面独立程序。悔!无奈,只能重新布置代码了。
总结一下吧。
工程从7月底开始,当时感觉知识储备充分了,开始打代码。主要时间当然还是花在了编写声音上,开发途中随着问题的产生也在不断修炼合成知识。一个ganK合成器做出来,也只能说是合成的最基本最传统的知识掌握了。投身合成领域后,每每听歌听到合成器的声音就触动情绪,但那些却一般是被大众忽略的声音,pop,anime song/BGM,game song/BGM,这些类型的音乐合成器的比重很大,尤其anime和game。
说远了。继续总结。一个ganK做出来,副收获就是对使用合成器“大通”,对面向对象小熟。所以说,对我cs上的学业的帮助不能说一点没有,却也少之又少。但也总比没有好。
往后,每天布置一点gank vst的代码,运气好的时候调一调gank音色,然后存在预置音色里。这里提供一个gank应用程序的下载,免安装。
在关于界面里放上了人大信息和爱乐人徽标。 October 12 ganK的界面终于完工今天终于把gank的界面拼装出来了,剩下就是把核心合成代码整装进去。
GUI的绘图找的周经纬哥哥,有点对不起他,工作那么忙,还无偿给我画画。他现在在中影集团下属的动画公司做动画前期,目前在画长江七号电影版,春节上映但是他说要是那时候能完成进度就创纪录了。。他的导演现在点名要他天天加班到九点,在此略表同情。
言归正传,我对这个gui是很满意的,因为我肯定画不出来。周说他也是第一次要按像素要求绘图,也不专业。其实没事,很好了,这些没有客观硬性标准,仁者见仁的东西,只要自成一体就能符合绝大多数的审美。
至于说把核心的合成代码从我原来的程序里整合进gank去,这事可能得稍微拖得久一点,毕竟要改一些封装上的东西,之前就为了调音色,类写得很乱。所以打算正好借我现在写合成引擎代码的机会,用新写的引擎的类。引擎就叫ARIA Synth Engine,因为最近看了久负盛名的《水星领航员》(ARIA),这动画真是慢得可以,每看必睡,是进入深度睡眠的好催眠素材。
管它名字叫什么,反正是逗自己玩,叫着舒服的没意义的东西。现在开始慢慢封装吧。
August 16 啊咔~ 最近改动不少~今天更新合成器ganK,把lfo撤了,暂时先不理会。上周如愿以偿把总输出的release做了出来,implemented后暗骂自己当初遇难而退,其实很简单的实现,当时应该再多想一会,还是太急功近利了。besides,这回还给每个振荡器做了detune功能,给方波加了调宽度的功能,给每个加了一个double(自己起得名字),其实是附加一个低几十音分的wave
不过,这做出来才知道,有release效果一下好不少。
后来,又用了几天把做了filter的envelope,就是对cutoff进行小调制。
往后想增强一下立体声效果。但还没思路。现在只是做了个delay。
现在是这个样子,现在正在筹备均衡器eq和gui.
下载地址(skydrive):
August 02 漫无止境的八月,开始First of August, 属于我的漫无止境的八月开始了,我居然深井冰地又看了一遍suzumiya haruhi,真有够缺的。新的收获就是阿虚吐槽真疯,以及op ed的变调就像片中的时空一样扭曲。 Understanding Digital Signal Processing一书确实能给我这样的初学者带来不少收获。不过到了一定程度想简单也简单不了了。现在停在了IIR这里,只能看懂FIR。 通过这几天阅读的知识储备,今天拿matlab做了一些fft和ifft的试验,然后开始着手用FIR做一个EQ,尽管网上说EQ都用IIR做,但谁叫还不明白IIR。。那就没辙了。 我的思路就是写一个FIR的类,然后纸上画一个想要的滤波器的频率响应,然后用matlab做逆fft得到FIR的滤波器系数,然后做成插件看看。于是很快地写了代码,32抽头FIR。方便起见,就把它做成vst插件了,build完了把dll放在Nuendo的vst-plugin里调用。我随意画了一个频率响应,但总体上是低通。现在,该EQ的效果实质为毁坏频谱。
July 21 First synth [加减法,JUCE]尽管能调的东西还不多,声音也还不够dynamic,但仅是做到这样,也确实花了不少精力和时间,熟悉运用JUCE是一方面,学习合成知识是另一方面。 总之,这个synth trial的全部知识来自The Computer Music Tutorial以及网络资源,后者包括www.musicdsp.org。滤波器的代码还没有能力实现,所以用的是在musicdsp.org上找到的Moogfilter伪代码,是一个效果不错的低通滤波器。其他部分都自己完成,当然,我这个合成器里除了filter似乎也没什么难的了。 做了3个振荡器(可以产生4种波形,可以打开或关闭振荡器,图中上面3个),一个低通滤波器(中间一排左边两个),一个overall amplitude包络(中间的中间3个),一个LFO(中间右边3个),LFO在这里没什么应用,因为这个LFO只能对最终输出信号作用(一般lfo不这么用)。 最下面是一个产生midi信息的键盘。支持复音数为5,即最多能同时按5个键。当你用鼠标点过里面的虚拟键盘后,可以用电脑键盘的A和Q所在的两行来触发midi信息,可以称之为弹琴吧~哈。不过一旦转了转盘或者点了按钮,就不响应电脑键盘了(焦点问题?不知道怎么解决),需要重新点一下虚拟键盘才能再次获得电脑键盘的焦点。 做这个Synth用的原理真的是不能再基础了。振荡器(oscillator)每个是一个波表,键盘触发midi信息后程序得到所触发的音的频率,如A4标准音是440Hz,然后根据公式: increment = wavetableSize * note frequency / samplerate, 这里的samplerate当然是44100Hz,wavetableSize我用的是4096 (2^12),如果note frequency是440Hz,由此就可以得到增量increment的值,这个值是读取波表时每读一次索引值的增加量,超过最大索引值(4095,我的tablesize是4096)后就做取余,这也是为什么选2的方幂做tablesize的原因,因为要跟4095 (4096 - 1)取余。 振荡器没有做interpolation(内插值算法),因为还不懂。用内插值是必要的。因为得到的increment不会是整数值,但是wavetable(数组)的索引都是int,所以不能仅仅就近取值,应该通过数学方法获得最接近原函数的值,这就要用interpolation。我看到的方法中一般有linear interpolation(线性内插),spline interpolation(不知道怎么翻译),里面的原理好像是要解出一个3次方程组的系数(一般就弄到3次,cubic spline interpolaion)。期待着能做出的那天。 现在这个先停了,以后要再做修改,要能让振荡器设置所在8度。再做对滤波器的包络,以便得到更动态的声音。 The Computer Music Tutorial看到了FM,打算也要实现一下基本功能。 这个合成器Juce1.exe可以从skydrive里下载。 July 17 用JUCE自己做的Snake和Tetris这是我在JUCE框架下diy的贪食蛇和俄罗斯方块,贪食蛇是直接绘图,所谓paint里再draw,俄罗斯方块后来实在忍不了,还是用了图片。算法是自己的,但肯定是一般人都能想得到的那种。 Snake: Tetris: 对于俄罗斯方块,不仅不是bug-free,而是bug's spawn。 skydrive 里有下载: JUCE(c++ classes) Library当初在逛kvraudio论坛的时候第一次得知JUCE这个类库,一直到现在总在跟它打交道。
"JUCE is a powerful cross-platform C++ toolkit for developing applications and plugins on Windows, Mac OSX and Linux."
这个类库原本是作为一个音频软件的一部分的一个分支项目,但后来独立出来了。最终的结果就是一个对音频、MIDI方面有很多支持的类库。百度百科有JUCE的介绍,也是我写的。
官网以及类库的下载:http://www.rawmaterialsoftware.com/
JUCE的GUI类似MAC,可以用官方提供的附带软件JUCER自行设计GUI,并自动生成代码。 但其实JUCE的主要优势和用途还是音频,它还wrap了vst, RTAS等的sdk。可以做plug in。很多音频厂商都是JUCE用户:presonus, cycling 74, Imageline(水果那个公司),m-audio, native instrument等等,够大牌的了我觉得。
如下是Imageline的几个用JUCE开发的合成器:
morphine
Poizone:
当然,JUCE还可以给学生学习编程用。
我现在用的就是vs2005 + JUCE,目前为止感觉很方便。再发些日志贴我用JUCE做的东西吧,然后也放在skydrive里。
得重拾space了,校内毕竟不公开,用这里来做学习积累希望space能让我满意。
大一转瞬即逝,自己尽管没有什么漂亮的成绩,但确实充实了不少东西,尤其在专业方面,可以算是进门了,知道了CS领域极其周边到底是个什么地形地貌。从不入门到入门都很容易,再往后走就艰难困阻了。但是,入了门总比门还都没入好吧!?想到这,慰藉充满心胸。
编程确实挺有意思,准确的说,是software developing有意思。从一点想法,到最后的实现,曲折而又刺激。
这一年做了多少不该做的事呢,呵呵。熟悉了vst2.4 sdk(其实也就是看了一些),用MFC做了最简单的贪食蛇,然后认识了JUCE,用JUCE做了贪食蛇和Tetris,算是对JUCE有了了解。在开始学computer music以后,知道最近,完成了一个很学生很基本的所谓“加减法合成器”。其实这些都是大一下做的,是最近一个学期的事。
现在来说,c++这把刀已经能比霍了,但是离开刃还早。
|
|
||||
|
|