안드로이드로 악보배열코드를 받아서 이제 그 코드로 악보를 만들려고 하는데여 일단 샘플주파수 뽑는건 해봤는데
이 440hz 하나로 여러게 계이름을 어떻게 해야 만들수 있나여??
private class AudioSynthesisTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params){
final int SAMPLE_RATE = 11025;
int minSize = AudioTrack.getMinBufferSize(SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, SAMPLE_RATE,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minSize,
AudioTrack.MODE_STREAM);
audioTrack.play();
short[] buffer = new short[minSize];
float angular_frequency =
(float) (2*Math.PI)*synth_frequency/SAMPLE_RATE;
float angle = 0;
while(keepGoing){
for(int i = 0; i<buffer.length;i++){
buffer[i] = (short) (Short.MAX_VALUE*((float)Math.sin(angle)));
angle += angular_frequency;
}
audioTrack.write(buffer, 0, buffer.length);
}
return null;
}
}
}
여기 위에가 샘플 주파수 440Hz(라)를 뽑는 것인데 이거 하나로 어떻게??
2^(1/12)를 하면 반음씩 올라가는건 알겠는데...아무리 해도 안되서 도와주시면 감사하겠습니다.