在我的高中,我们可以参加一个学期的课程,我们基本上可以自己学习一门学科。我在想我想学习“声音编程”,但我意识到我不知道这意味着什么。例如,我有兴趣了解合成器的工作原理以及声音在计算机科学中的工作原理。我真的想专注于低级代码部分,而不是组合部分。这是一个可行的课题吗?对于完全不熟悉这个的人来说,有什么好的教程吗?我知道 C++ 并且正在使用 Windows。第一个答案是我感兴趣的事情(尽管它在我的头上)。
3 回答
“声音编程”是一个非常广泛的领域。首先,这绝对是一个可行的科目,但是由于您需要将东西塞进一个学期,因此您需要限制您的范围。我可以看到您正在寻找一个开始的地方,所以这里有一些想法可以让您思考。
由于您提到了“声音在计算机科学中的工作原理”和“合成器”,因此值得指出模拟声音、采样声音和合成声音之间的区别,因为它们是不同的概念。我将在这里简要解释它们。
模拟声音是我们人类通常解释的声音——人耳感知到的空气振动。您可以将声音视为一维信号,其中自变量是时间,因变量是振动幅度。模拟声音在时域和幅度域中都是连续的。较旧的录音方法(例如磁带)使用模拟声音表示。计算机不经常使用模拟声音(计算机不擅长存储连续域数据),但理解模拟信号仍然很重要。如果你沿着这条路走,预计会看到大量的数学(例如复数、傅里叶变换)。
采样声音是很适合用计算机处理的声音表示。人们最熟悉通过 CD 和其他音乐录音采样的声音。模拟信号以某个频率进行采样(例如,用于 CD 录制的 44.1KHz)。因此,采样的声音信号在时域中是离散的。如果信号被量化,那么它在幅度域中也是离散的。MP3 等格式是采样格式。如果您有兴趣,可以在这个领域研究很多东西,例如恢复(去除静态等)和压缩(同样,编解码器 MP3、Ogg Vorbis)。这很有趣,因为有很多实验和代码。
模拟声音和采样声音都深入研究了一个称为数字信号处理的领域。谷歌一下,以了解它的感觉。它经常在大学里作为一门课程教授,所以如果你真的很感兴趣,你可以看看一些讲座幻灯片,甚至可以尝试一些更早的、更简单的项目。
合成声音是一种适合再现音乐曲目的表示,其中播放曲目的乐器是事先已知的。把它想象成电脑的乐谱。必须有人写乐谱——你不能像模拟或采样声音一样录制它。这使得合成声音与模拟声音和采样声音完全不同此外,计算机需要知道乐器是什么(例如钢琴),以便它可以播放(合成)曲目。如果它不知道乐器,它要么放弃,要么选择一个接近的匹配(例如用电子键盘代替钢琴)。我以前从未使用过合成器,所以我无法评论它们的学习曲线。
所以,根据我写的内容——选择一个你更感兴趣的方向,谷歌搜索,然后完善你的问题。
编辑
这是一本好书。您可能可以在亚马逊上查看相关标题并找到更新的内容,但是我已经有一段时间没有进行音频处理购物了。
如果你有半个小时的空闲时间,那就看看这个视频教程。它涵盖了声音、图像和视频处理——它们实际上是密切相关的领域。
考虑阅读“谁是傅立叶?:数学冒险”一书。您可以调整这些示例以进行演示基本概念的小型编程任务。完成后,您应该能够在发音元音 a、e、i、o、u 时使用 fft 制作语音频谱图——识别每个元音的基频和共振峰。
I recommend learning Python and the modules NumPy, SciPy, and matplotlib (there's a ton there, so beyond the basic tutorials, just learn as you go). The iPython shell has the option "-pylab -p scipy" to automatically import the most common tools into your namespace. You can record and play audio using PyAudio. There's also Pygame, which expands on SDL (Simple DirectMedia layer), and pyglet, which uses OpenAL (the OpenGL of audio; it does 3D audio and effects).
As to C/C++, there's IT++, SPUC, and FFTW for signal processing, and SDL/SDL_mixer and OpenAL/ALmixer for interfacing with hardware and audio files.
I would recommend this book : http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=8218 (part of it is available here : http://books.google.com/books?id=nZ-TetwzVcIC&printsec=frontcover&dq=computer+musical+tutorial&hl=pt-BR&ei=D-dKTaKsBMOB8gbF4KDcDg&sa=X&oi=book_result&ct=result&resnum=1&ved=0CDgQ6AEwAA#v=onepage&q=computer%20musical%20tutorial&f=false )
And another thing you could look is at puredata , it's a open source graphical environment for sound programming, and it's great for beginners. ( http://puredata.info/ )