2017-02-26 2 views
0

나는 호기심이 많다. 나는 아주 간단한 게임을 만들고 있는데, 사용자가 소리를 낼 때 게임 로직을 포함하고 싶다. libgdx에서 가능합니까?libgdx의 박수 소리 감지

+0

모든 프레임마다 사운드를 녹음하고 진폭을 얻고 싶습니다. – durisvk

답변

0

동일하게 libgdx에는 AudioRecorder 인터페이스가 있습니다. PC 또는 Android 폰의 마이크에서 PCM 데이터에 액세스 할 수 있습니다.

int samples = 44100; 
boolean isMono = true; 
AudioRecorder recorder = Gdx.audio.newAudioRecorder(samples, isMono); 

이는 모노 모드는 44.1kHz의 샘플링 레이트를 가진 AudioRecorder를 생성한다. 레코더를 만들 수 없으면 GdxRuntimeException이 발생합니다.

샘플은 16 비트 부호있는 PCM으로 읽을 수 있습니다 :

int seconds = 5; 
final short[] data = new short[samples * seconds]; 
recorder.readSamples(data, 0, data.length); 

오디오 녹음은 자바 스크립트/WebGL을 백엔드에서 지원되지 않습니다.

+0

어떻게 프레임마다 사운드를 녹음하나요? – durisvk

+0

libgdx의 저에 따르면 안드로이드에서는 모든 프레임마다 사운드의 진폭을 얻을 수는 없지만 인터페이스를 통해 사용할 수 있습니다. – Aryan

+0

일반적으로 분리 된 스레드에서 마이크를 읽고, 미리 정의 된 창에서 RMS를 실행하고, postRunnable https://github.com/libgdx/libgdx/wiki/Threading을 사용하여 GLThread에 이벤트를 실행합니다. –