突然想弹钢琴,但钢琴太贵,不是我这种无业游民可以随便玩的,所以打算自己在电脑上编个弹钢琴的软件,win下的我知道已经有了,不过我只有linux。有个flash的弹钢琴软件,但按一次只能响一下,不能控制音符的时值。想到以前玩赛车游戏,只要按着方向键不松,车就能一直前进,所以我想,编程里应该有个读取按键时间的函数。还有就是dos.h里有个函数可以通过读取声音的频率控制音调,但这个头文件我又找不到,搜了下,说是turbo C里的函数,还和DOS有关,linux下可能不能用
现在说说我要解决的问题:
控制音调的函数
通过按住键盘控制时间的函数
pl_014 于 2010-10-23 13:51:52发表:
[i=s] 本帖最后由 pl_014 于 2010-10-23 13:53 编辑 [/i]
5# wangyu
呃,我还是头一次听说pascal比C难,或许是语言本身要难一些吧,但lazarus学起来确一点也不难,至少是入门,用起来和delphi7的感觉非常像,就是除了能跨平台以外,其它的功能比Delphi7要少,入门比GTK和QT都要容易。至于具体的学习,只要找一本delphi7入门的书看就行了,语法基本上都一样,操作也差不多,不必找专门的lazarus的资料。
wangyu 于 2010-10-22 17:39:11发表:
4# pl_014
是Pascal 吧,呵,我没学过,不过花点时间学下也不错。听说比C要难一点,等考完研,这些一定要折腾一下。
生命不息,折腾不止
pl_014 于 2010-10-22 13:29:32发表:
3# wangyu
我在lazarus下试了文本框,几乎是支持任意键,或许你也可以在文本框下试试,只是那个KeyDown、KeyPress在实践中几乎就是分不出来,Delphi7也如此,基本上文本框下多一个字框,这两个事件就都触发,只是一先一后而己。
如果没有搞错的话,lazarus使用的是GTK,GTK应该能搞的出来,至于QT,应该也行,怎么说QT也归诺基亚了
wangyu 于 2010-10-21 17:49:54发表:
2# pl_014
哈哈,谢谢啊,这东西还真不好搞呢。QT我找过一次,没找到,GTK的有空再翻吧,basic下我也见过有KeyDown等,但只是用shift的,如果gambas支持任意键的就好了
pl_014 于 2010-10-20 07:40:19发表:
[i=s] 本帖最后由 pl_014 于 2010-10-20 07:42 编辑 [/i]
你要通过这种方式来弄出一个音乐吗?但我觉得这种方式弄出来的效果并不好,因为我也玩过dos游戏,一般的精心制作的也就像轩辕剑1、2那样,效果好一些的估计也超不过金庸群侠传dos版,但金庸群侠传dos版的音乐也是依靠音频文件的。你可以试试作曲大师如何。
关于键盘延时,如果按下一个键和松开一个键都可以算作一个信号的话,可以利用信号来解决这样的问题。我知道lazarus下有个KeyDown、KeyPress事件,分别响应按下键盘和输入一个字符的事件,KeyUp响应键盘按下后被释放的事件,C里面应该也有这样的信号,可以看看GTK或QT下有没有
关于linux下音频编程,我倒找到几个,你可以看看
http://www.ibm.com/developerworks/cn/linux/l-audio/
http://www.examda.com/linux/fudao/20100122/091957660.html
http://linux.chinaitlab.com/c/801214.html
http://apps.hi.baidu.com/share/detail/14852526
http://callmecjm.blog.0795cl.com/cce13218f1h1.cn