// Compute STFT void BirdID::computeSpectrum() { // Create a vector for resampled audio resampledAudioEMX = emxCreate_real_T(resampledAudioLength,1); // Copy it for(int i=0;i<resampledAudioLength;i++) { resampledAudioEMX->data[i] = static_cast<real_T>(resampledAudio[i]); } // Create a matrix for spectrum numCols = (resampledAudioLength-blockSize)/hopSize; numCols++; numRows = (blockSize/2)+1; magSpecEMX = emxCreate_real_T(numRows,numCols); phaseSpecEMX = emxCreate_real_T(numRows,numCols); T = emxCreate_real_T(numRows,1); // Initialize bufferSTFT_initialize(); bufferSTFT(resampledAudioEMX,static_cast<real_T>(blockSize),static_cast<real_T>(hopSize),magSpecEMX,phaseSpecEMX,T); }
// Inverse STFT void BirdID::recoverAudio() { denoisedSpecEMX = emxCreate_real_T(numRows,numCols); for(int i=0;i<numCols;i++) { for(int j=0;j<numRows;j++) { denoisedSpecEMX->data[i*numRows+j] = static_cast<real_T>(denoisedSpectrum[i*numRows+j]); } } denoisedAudioEMX = emxCreate_real_T(resampledAudioLength,1); inverseSTFT_initialize(); inverseSTFT(denoisedSpecEMX,phaseSpecEMX,blockSize,hopSize,denoisedAudioEMX); }
SWIGEXPORT jlong JNICALL Java_a_1melcepstJNI_emxCreate_1real_1T(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2) { jlong jresult = 0 ; int32_T arg1 ; int32_T arg2 ; emxArray_real_T *result = 0 ; (void)jenv; (void)jcls; arg1 = (int32_T)jarg1; arg2 = (int32_T)jarg2; result = (emxArray_real_T *)emxCreate_real_T(arg1,arg2); *(emxArray_real_T **)&jresult = result; return jresult; }