1. 设计一个数字音频类。
【问题描述】
设计一个数字音频类。类框架如下:
public class Sound {
private int[] samples;
public int limitAmplitude(int limit) {
}
public void trimSilenceFromBeginning() {
}
public String toString() {
}
}
整型数字samples用于存储音频数据
1、其中函数limitAmplitude用于音频振幅限制。其功能是对音频振幅限制,假设原始音频数据如下:
0,0,0,0,0,0,0,0,0,0,40,2532,17,-2300,0,0,-17,-4000,0,0,2000,0,1048,-420,33,15,-32,2030,3223
调用函数 limitAmplitude(2400)后音频数据修改如下:
0,0,0,0,0,0,0,0,0,0,40,2400,17,-2300,0,0,-17,-2400,0,0,2000,0,1048,-420,33,15,-32,2030,2400
2、其中函数trimSilenceFromBeginning用于删除音频数据的开始的空白数据。空白数据的值为0。
假设原始音频数据如下:
0,0,0,0,0,0,0,0,0,0,40,2400,17,-2300,0,0,-17,-2400,0,0,2000,0,1048,-420,33,15,-32,2030,2400
调用函数 trimSilenceFromBeginning()后音频数据修改如下:
40,2400,17,-2300,0,0,-17,-2400,0,0,2000,0,1048,-420,33,15,-32,2030,2400
3、重写toString方法输出返回音频数据字符串。
请完成上面三个函数和构造函数,并编写主函数测试。
【输入形式】
无
【输出形式】
Sound [samples=[0, 0, 0, 40, 2400, 17, -2300, 0, 0, -17, -2400, 0, 0, -32, 2030, 2400]]
Sound [samples=[40, 2400, 17, -2300, 0, 0, -17, -2400, 0, 0, -32, 2030, 2400]]
import java.util.Arrays;
public class Sound {
private int[] samples = {0,0,0,0,0,0,0,0,0,0,40,2532,17,-2300,0,0,-17,-4000,0,0,2000,0,1048,-420,33,15,-32,2030,3223}; //用于存储音频数据
public int limitAmplitude(int limit) //用于音频振幅限制
{
int i = 0;
for (; i < samples.length; i++)
{
if (samples[i] > limit)
{
samples[i] = limit;
}
else if(samples[i] < -limit)
{
samples[i] = -limit;
}
}
return 1;
}
public void trimSilenceFromBeginning() //用于删除音频数据的开始的空白数据0
{
int i = 0;
int length = samples.length;
for (; i < length; i++)
{
if (samples[i] != 0)
{
break;
}
}
samples=Arrays.copyOfRange(samples,i,length);
}
@Override
public String toString()
{
return "Sound [samples="+ Arrays.toString(samples) +"]";
}
public static void main(String[] args)
{
Sound s = new Sound();
System.out.println(s);
s.limitAmplitude(2400);
System.out.println(s);
s.trimSilenceFromBeginning();
System.out.println(s);
}
}
结果:
Sound [samples=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 2532, 17, -2300, 0, 0, -17, -4000, 0, 0, 2000, 0, 1048, -420, 33, 15, -32, 2030, 3223]]
Sound [samples=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 2400, 17, -2300, 0, 0, -17, -2400, 0, 0, 2000, 0, 1048, -420, 33, 15, -32, 2030, 2400]]
Sound [samples=[40, 2400, 17, -2300, 0, 0, -17, -2400, 0, 0, 2000, 0, 1048, -420, 33, 15, -32, 2030, 2400]]