아래 코드에서 볼 수있는 것처럼 변수 vol
을 사용하여 Java에서 사운드를 재생하는 기능이 있습니다. 이 변수 vol
은 0과 1 사이의 십진수입니다. 0
을 재생할 때 사운드는 기본적으로 가능한 가장 작은 볼륨이며, 1로 재생하면 소리가 가능한 한 크게 들립니다. 프로그램의 소리가 어떤 decibles인지 어떻게 알 수 있습니까? 주어진 vol
의 십분 사료를 알고 싶습니다.자바 사운드와 관련된 데시벨
public static final AudioFormat DEFAULTAUDIOFORMAT = new AudioFormat(44100, 16, 2, true, true);
private void generateTone() {
int channels = DEFAULTAUDIOFORMAT.getChannels();
int sampleSizeInBytes = DEFAULTAUDIOFORMAT.getSampleSizeInBits() /8;
float sampleRate = DEFAULTAUDIOFORMAT.getSampleRate();
int timedSample = (int) (sampleRate * msecs/1000f);
int len = timedSample * channels * sampleSizeInBytes;
int shapeLen = (int) (.05 * timedSample);
buf = new byte[len];
double scale;
for (int i = 0, j = 0; i < timedSample; ++i)
{
int wave = (int)(vol * 32767.0 * Math.sin(2.0 * Math.PI * hz * i/sampleRate));
scale = 1.0;
if (i <= shapeLen) {
scale = i/(double)shapeLen;
}
else if (i >= timedSample - shapeLen) {
scale = 1.0-((i- timedSample + shapeLen)/(double)(shapeLen-1));
}
wave = (int)(scale * wave);
buf[j++] = (byte)(wave >>> 8);
buf[j++] = (byte) wave;
buf[j++] = (byte)(wave >>> 8);
buf[j++] = (byte) wave;
}
}
스피커 앞에 미터를 삽입하면 되나요? Java는 신호를 생성 한 후 증폭이 얼마나 적용되는지를 알 수있는 방법이 없습니다. – Affe