我想编写一个可以播放音乐的音乐软件,可以检测从计算机麦克风获取的声音的音高(使用使用声音过滤器过滤频率的算法),并启用良好的用户界面。类似于 smartmusic 的东西:http ://smartmusic.com
对于编写此类软件最合适的语言有什么建议吗?有谁知道smartmusic是用什么语言编码的?
谢谢
我想编写一个可以播放音乐的音乐软件,可以检测从计算机麦克风获取的声音的音高(使用使用声音过滤器过滤频率的算法),并启用良好的用户界面。类似于 smartmusic 的东西:http ://smartmusic.com
对于编写此类软件最合适的语言有什么建议吗?有谁知道smartmusic是用什么语言编码的?
谢谢
使用专门用于计算机音乐和dsp的语言,否则您将重新发明轮子。
最好的语言很可能是您最了解的语言,只要它是一种良好的多用途语言,可以轻松访问音频(麦克风/扬声器)硬件。Visual Basic、C#、C++、Java 都可以快速轻松地编写,并且让您可以很好地访问硬件等。
但归根结底,音频处理非常简单,录音/播放 API 也很常见——所以最好的语言可能是你最有信心使用的语言。你总是可以从一个基本的实验开始(录制和播放一些音频)——如果你对它的进展感到满意,那么它的音频处理方面在任何语言中都是一样的。
我假设您正在尝试实时或近实时地执行上述操作?在这种情况下,您肯定会查看编译语言而不是解释脚本语言,因为这种分析所需的数学很可能需要解释语言的太多处理能力。
大多数处理此类信号处理的软件往往是用 C 等非常低级的语言编写的。您甚至可能会发现针对您的特定平台有可用于此类处理的库。除非您出于求知欲来实现这些算法,否则这肯定是我首先要开始寻找的地方。根据您找到的库,您可以找到一种可以使用它们的编程语言,这可能会或可能不会将您带回 C 语言系列(即 C、C++、Objective-C,具体取决于您的平台) .
您似乎不需要编写复杂的效果和数字声音处理功能......所以您不需要像 C++ 这样的低级语言。我认为你应该最关注用户界面和可用性。我看到有人建议使用 Java。即使 Java 易于使用,Java 用户界面编程也不是很实用。我宁愿选择 Python、C# 或 Java 这样的高级语言,并使用更实用的工具包。例如,您可以在 C# 中使用 WPF 或 Winforms。或者用于 Python 的 Qt 或 Gtk(甚至还有 Java 绑定......但我不确定它的状态。)。无论如何,使用可以让您轻松编码的东西,以便您可以专注于可用性和其他东西。
我用德尔福。它结合了上述所有功能,经过编译,拥有强大的音频处理库(BASS),并具有出色的用户界面功能。有了它,我编写了一个混音器、一个命令行播放器、一个频谱分析器、一个声音和静音搜索器以及一个音乐比较器。
我建议Java。
它有自己的声音处理 API,而且相当容易学习。
http://java.sun.com/products/java-media/sound/
“Tux Guitar”(开源)是用 Java 编写的,并说明了什么是可能的:
如果你在学校熟悉 Pascal 语言,那么我建议你去 Delphi。它基于 Object Pascal,它具有 C++ 的大部分功能(如果不是更多的话),而且它使您远离大多数高级编程概念。你可以在知之甚少的情况下取得很多成就。
前面提到的音频库(Bass、Fmod 等)都有 Pascal 接口。在 GUI 构建方面,VCL 是一个易于使用的解决方案,如果你想去多平台,FMX。
Delphi、FMX 和 Bass 的组合是最强大的音频编码设置,适合初学者或没有经验的程序员(如我)。几乎所有其他事情都意味着需要更多的努力或更多的专业知识。