/* lee un entero */ int getint(const char mensaje[], ...) { #if 1 int n, salir = 0; va_list ap; do { va_start(ap, mensaje); vprintf(mensaje, ap); va_end(ap); if ( scanf("%d",&n) != 1) BORRA_BUFFER; else salir = finalBuffer(); if ( !salir) printf("Invalid command\n"); } while (! salir); return n; #else char buf[100]; printf("%s: ", mensaje); fflush(stdout); // fgets(buf, sizeof buf, stdout); gets(buf); return atoi(buf); #endif }
void Upsampler::test() { // // Make some audio data // int sampleRate = 48000; FrequencySweepAudioSource generator; AudioSampleBuffer sourceBuffer(1, sampleRate * 2); AudioSourceChannelInfo asi(&sourceBuffer, 0, sourceBuffer.getNumSamples()); generator.prepareToPlay(sourceBuffer.getNumSamples(), sampleRate); generator.getNextAudioBlock(asi); generator.releaseResources(); // // Create the upsampler // int const upsampleFactor = 4; Upsampler upsampler(sampleRate, sampleRate * upsampleFactor, 2.0); HeapBlock<double> upsamplerInputBuffer, upsamplerOutputBuffer; int upsamplerOutputBufferSamples = sourceBuffer.getNumSamples() * upsampleFactor * 2; upsamplerInputBuffer.allocate(sourceBuffer.getNumSamples(), true); upsamplerOutputBuffer.allocate(upsamplerOutputBufferSamples, true); // // Convert data to doubles // const float* source = sourceBuffer.getReadPointer(0); for (int i = 0; i < sourceBuffer.getNumSamples(); ++i) { upsamplerInputBuffer[i] = source[i]; } // // Upsample // int upsampledCount = upsampler.upsample( upsamplerInputBuffer, upsamplerOutputBuffer, sourceBuffer.getNumSamples(), upsamplerOutputBufferSamples); // // Convert upsampled data to float // AudioSampleBuffer finalBuffer(1, upsamplerOutputBufferSamples); float *destination = finalBuffer.getWritePointer(0); for (int i = 0; i < upsampledCount; ++i) { destination[i] = (float)upsamplerOutputBuffer[i]; } WriteWaveFile("upsample.wav", sampleRate * upsampleFactor, &finalBuffer, upsamplerOutputBufferSamples); }
/* lee un double */ double getdouble(const char mensaje[], ...) { double n; int salir = 0; va_list ap; do { va_start(ap, mensaje); vprintf(mensaje, ap); va_end(ap); if ( scanf("%lg",&n) != 1) BORRA_BUFFER; else salir = finalBuffer(); if ( !salir) printf("\nIncorrect data\n"); } while (! salir); return n; }