signal-processing

Good audio reverb source?

Is there any good C or C-like source code for an audio reverb (besides Freeverb). There are endless examples of low-pass filters that sound great, but it's terribly difficult to find source for a good-sounding reverb. Why is that? Is it a hard enough problem that the good implementations are held onto and not published? ...

Is there an FFT that uses a logarithmic division of frequency?

Wikipedia's Wavelet article contains this text: The discrete wavelet transform is also less computationally complex, taking O(N) time as compared to O(N log N) for the fast Fourier transform. This computational advantage is not inherent to the transform, but reflects the choice of a logarithmic division of frequency, in contrast to t...

How do you do bicubic (or other non-linear) interpolation of re-sampled audio data?

I'm writing some code that plays back WAV files at different speeds, so that the wave is either slower and lower-pitched, or faster and higher-pitched. I'm currently using simple linear interpolation, like so: int newlength = (int)Math.Round(rawdata.Length * lengthMultiplier); float[] output = new float[newlengt...

float to integer conversion using iPhones SIMD float unit

I am currently trying to optimize some DSP related code with Shark and found that I am wasting a lot of time in a float to integer conversion: SInt16 nextInt = nextFloat * 32768.0f + 0.5f; As the iPhone seems to have an ARM11 FP co-processor, I am wondering if I can replace my code with the FTOSI instruction. There is some documentati...

Identifying common periodic waveforms (square, sine, sawtooth, ...)

Without any user interaction, how would a program identify what type of waveform is present in a recording from an ADC? For the sake of this question: triangle, square, sine, half-sine, or sawtooth waves of constant frequency. Level and frequency are arbitrary, and they will have noise, small amounts of distortion, and other imperfec...

Working with a severely limited interpreted language

I'm coding in an embedded language called JS. I want to be able to call three functions in any order. (ABC, ACB, BAC, BCA, CBA, CAB.) The trick? The language doesn't have user-defined functions. It does have a conditional and a looping construct. I think I have three choices. Duplicate a whole bunch of code. Write a preprocessor (...

Algorithm to determine the effective "phase difference" between two signals with different frequencies?

The quick version: What algorithm could I use to determine the "phase difference" between two square wave signals with different frequencies, if the only information that I have is the time at which each rising edge occurs? The detailed version: I'm working on an embedded software project, and I have run across an interesting proble...

Voice Alteration Algorithm

Could somebody point me to a voice alteration algorithm? Preferably in Java or C? Something that I could use to change a stream of recorded vocals into something that sounds like Optimus Prime. (FYI- Optimus Prime is the lead Autobot from transformers with a very distinctive sounding voice... not everybody may know this.) Is there an ope...

Sine Table Interpolation

I want to put together a SDR system that tunes initially AM, later FM etc. The system I am planning to use to do this will have a sine lookup table for Direct Digital Synthesis (DDS). In order to tune properly I expect to need to be able to precisely control the frequency of the sine wave fed to the Mixer (multiplier in this case). I ex...

Integer FM Demodulation

What are some software (or FPGA) techniques suitable for FM demodulation? I've been experimenting in MATLAB to try and get an algorthm right, but I've been basing it on a analog reference material with limited results. I can make out the audio, but there is horrible distortions that I can't fix with filtering. Ultimately I want to be ...

8 bit audio samples to 16 bit

This is my "weekend" hobby problem. I have some well-loved single-cycle waveforms from the ROMs of a classic synthesizer. These are 8-bit samples (256 possible values). Because they are only 8 bits, the noise floor is pretty high. This is due to quantization error. Quantization error is pretty weird. It messes up all frequencies a bit...

Development kit for Bluetooth which allows customisation of the modulation algorithms.

We need to perform some experiments on the Bluetooth protocol, and for this we need a development kit which allows us to implement/modify different parts of the Bluetooth protocol stack. We have been looking at the TI MSP430 Wireless Development Tool (EZ430-RF2500). This kit contains a MSP430 MCU and a CC2500 multi-channel RF transceive...

SDR kit with 2.4GHz RF frontend?

Do you know a SDR (Software Defined Radio) kit with a 2.4GHz ISM band (2400MHz - 2483.5MHz) transceiver? I need to perform some software defined radio including customised modulation. Also the price for one kit should be at maximum $1000. I know there are some extremely expensive solutions out there, but that is unfortunately not an opt...

Reverse Spectrogram A La Aphex Twin in MATLAB

Hello. I'm trying to convert an image into an audio signal in MATLAB by treating it as a spectrogram as in Aphex Twin's song on Windowlicker. Unfortunately, I'm having trouble getting a result. Here it what I have at the moment: function signal = imagetosignal(path, format) % Read in the image and make it symmetric. image = ...

Learning Digital Signal Processing

What are some good resources for learning about DSP (including the mathematics and algorithms necessary for actually understanding these resources)? Let's assume that my math skills are rusty from lack of use as well, so a roadmap along the lines of: Stats refresher Calculus refresher Solid newbie explanation of FFT (50 steps later....

Algorithm to Match Time Dependent (1D) Signals

Hi, I was wondering if someone could point me to an algorithm/technique that is used to compare time dependent signals. Ideally, this hypothetical algorithm would take in 2 signals as inputs and return a number that would be the percentage similarity between the signals (0 being that the 2 signals are statistically unrelated and 1 being...

Automated transcription software

I've noticed that the wiki transcriptions for some of the recent Stack Overflow Podcasts are kind of weak. Clearly, this task calls for a computer program. Is transcribing audio to text (ideally with speaker labels so we know who said what) something that could feasibly be accomplished in software? Are there any active open-source sof...

Measure audio noise level

I'm trying to get a qualitative handle on the amount of static or noise present in a audio stream. The normal content of the stream is voice or music. I've been experiementing with taking the stddev of the samples, and that does give me some handle on the presence of voice vs. empty channel noise (ie. a high stddev usually indicates vo...

What is a "good" R value when comparing 2 signals using cross correlation?

I apologize for being a bit verbose in advance: if you want to skip all the background mumbo jumbo you can see my question down below. This is pretty much a follow up to a question I previously posted on how to compare two 1D (time dependent) signals. One of the answers I got was to use the cross-correlation function (xcorr in MATLAB), ...

Simple signal processing in C#

I'm sampling a real-world sensor, and I need to display it's filtered value. The signal is sampled at a rate of 10Hz and during that periode it could rise as much as 80 per cent of the maximum range. Earlier I've used Root Mean Square as a filter and just applying it to the last 5 values I've logged. For this application this wouldn't b...