数字图像的最小单位是像素。 什么是最小的数字声音单位? 什么可以被认为是声音的像素? 我们如何使用java来操作它?
答案 0 :(得分:5)
最小的声音单位称为帧。对于8位单声道,它将是一个字节。对于立体声16位,它将是4个字节。
我们如何使用Java来操作它?
这取决于你想用它做什么。你需要更加具体才能得到合理的答案。
一些可能的操作是:
..扬声器能产生多少赫兹或样本?
这在很大程度上取决于发言者。扬声器具有所有不同类型的动态范围,通常采用一种没有绝对上限或下限的“钟形曲线”。
这是否意味着存储1秒音乐CD质量需要44KB?
每个CD质量声音帧包含4个字节,因为它是立体声,16位。将4个字节乘以44100以计算每秒的字节数。
单声道和立体声有什么区别?
Mono有一个频道,立体声有两个。
我想要做的是操纵单个声音单位,以及 - 创建自定义乐器/合成器。
在代码中生成简单的正弦声音并不困难。有关示例,请参阅Beeper
。
通过使用声音的ADSR(Attack,Decay,Sustain,Release)包络可以创建许多其他效果。例如,将吉他音符的ADSR包络应用于钢琴音符会使其听起来像钢琴一样神奇,反之亦然。
什么是频道?它是否像扬声器 - 左扬声器是一个声道,右扬声器是另一个?
差不多。单声道听起来像垃圾(IMO),而立体声可以使不同的乐器听起来像来自不同的位置,就像乐队坐在你面前一样。
5.1声道声音稍微复杂一点,通常 1 它只是简单地“欺骗”。
答案 1 :(得分:2)
数字声音的最小单位是一个样本 - 特定时间点的信号电平。 [但请参阅下面的附录。]
使用Java来操作它:如果你不得不问这个问题,你可能想去寻找别人写的库。
但是如果你想知道一般涉及什么:读入声音文件。如果是压缩格式(如MP3),请将其解压缩。这将为您提供非常长的样本数组/向量。您可以对其中的部分进行剪切和粘贴以编辑录制,或者对其进行缩放以使其更柔和或更响亮(注意“剪裁”,当您尝试超过最大音量时会产生“剪裁”)。更复杂的操作是可能的,但这是digital signal processing
中的完整课程,我不打算在这里尝试 - 网络搜索该短语,特别是与sound
或audio
或music
应该找到更多信息。
您还可以通过编程方式生成示例来生成自己的音频。从样品到样品的正弦变化的信号产生纯音。其他重复形状添加各种泛音。改变重复的频率会改变音高。将几个信号加在一起(同时注意剪切)将它们混合成一个信号。等等。
请注意,MIDI不是“数字声音” - 它是数字得分。它描述了什么时候应该播放的音符,但是由合成器将它变成声音。
ADDENDUM:我之前没有听过“框架”一词(请参阅安德鲁的回答),但我会相信的。我想到了样本,因为我正在思考硬件层,但是从样本中区分出音频剪辑是一件好事,所以我敢打赌帧确实更正确/最新。
答案 2 :(得分:0)
在java中,您通常使用AudioInputStream实例(您从Java声音API定义的类中获取)。这些是按字节读取的,用于播放。 我自己从未做过操作,但据我所知,这主要是通过Java sound的混音器类完成的。
下面的教程应该包含您要查找的所有信息: http://docs.oracle.com/javase/tutorial/sound/playing.html