20. DMA part 1: The Power of the 3rd Mic

March 23, 2024

The Application of 3 mics instead of 2 for a DMA has a huge effect.

Matlab code here.

19. F0-gram decomposition for Music Transcription

January 3, 2020
  1. Sound file.
  2. Spectrogram:gram 03
    3. F0-Gram:automatic notation4. Octave Code.

18. F0-gram with Music Scales

January 3, 2020
  1. Audio file
  2. Spectrogram:

Spectrogram and F0-gram

3. F0-gram above
4. Database of further audio samples.
5. Octave Code.
6. Theory of the F0-decomposition.

17. A simple AGC for voice applications

August 20, 2019

Top: input signal,
Bottom: output signal.

agc - input and output signal ampl

Code here. Please contribute.

16. A simple beats-per-minute ie. bpm estimator

August 20, 2019

Below: signal amplitude, signal envelope, estimated signal onset.

signal_energy and signal_onset estim

Below:
R: bpm estimated from the first 3 seconds of signal,
G: bpm estimated from the second 3 seconds of signal,
B: bpm estimated from the third 3 seconds of signal,
Black: Avg. of the three previous estimations.

beat estim final 02
Remark: There is no real bpm fluctuation over the frames, as the peaks keep their position.

 

Code here. Please contribute.

15. F0-gram based Voicing Detector

July 21, 2019

smoothed over time and freq - reindexing frame

Voicing Detector code here.
Single-frame decomposition here.
Theory here.

References:
[1] M. Képesi, L. Weruaga, E. Schofield, “Detailed Multidimensional Analysis of our Acoustical Environment,” Forum Acusticum. Budapest (Hu), September 2005, pp. 2649-2654.
[2] M. Képesi and L. Weruaga, “High-resolution noise-robust spectral-based pitch estimation,” Interspeech 2005, pp. 313-316, Lisboa (P), Sep. 2005

14. PoPi decomposition, the Fast way

January 13, 2018
  1. Load 2 channels of audio signals, recorded with a pair of microphones. The example below uses microphones with 60cm spacing.
  2. Cut frames, get cross-correlation of the frames.
    popi_demo_xcorr
  3. Calculate the look-up tables for phase (PhiLUT), pitch (PitLUT)…
    phi_lut and pit_lut
    … and “phase-pitch” 😉
    popi_lutx3
  4. Multiply the cross-correlation vector from point 2 by the 3 PoPi-LUTs above.
  5. Sum the 3 sub-results (L+O+R).
  6. Wanna try out cascading different approaches?
    – If not, just go to point 9. But.
    – If yes, create one more sub-final matrix by multiplying the sub-results
    (dot products from point 4) instead of summing them.
  7. Sum the sums (from p.5), sum also the dot-products (from p.6).
  8. Below you’ll find examples of summing (L+O+R) and multiplying the (L*O*R) sub-results.
    Finally, you also see the results of cascading the two approaches.
    cascade_decomp_example
  9. Download the code.
  10. Check out the theory.

13. Spectral reindexing, the Fast way

January 3, 2018
  1. Get the spectrum of a signal frame. Try to get below 10Hz/bin spectral resolution, if the harmonics are stable enough over time. Example: in case of 22kHz sampling, cut 2000+ samples and apply a 2048 or 4096 point FFT. In case of 11kHz sampling, use a 1024-point FFT.
    reind signal and spectrum2
  2. Calculate the LUT to extract spectral bins at F0, 2F0, 3F0, 4F0, 5F0 candidate pitch values, as well as LUT vectors inbetween, ie. 1.5F0, 2.5F0, etc. The LUT depends on Fs, Nfft, Fo_min and Fo_max, see code.
    reind lut
  3. Extract spectral bins at F0, 2F0, 3F0, 4F0, 5F0, etc. candidates, and store them in separate vectors.
    reind disassembled spectrum
  4. Assemble the “re-indexed” spectrum by summing up the vectors.
    reindexed2
  5. Save time and download the Code.
  6. Take a look at the theory behind Re-indexing.

 

12. Wave Surfing – Intro

October 28, 2017

Sources in space and time
In audio signal processing, we observe signals by sampling air pressure at one point in space (by using one microphone), over time.

However, we could also sample the signal over space in one point of time using one sampling period only (but thousands of microphones).

The aim of this experiment is to see the difference between the two approaches having a simple experiment: analysing a frame of 2 superposed acoustic signals: a whistle and a vowel.

 

The Code is initialised at gitHub.
popi video screenShot

Click on the image above to see the short video. Feel free to extend the Code.

 

11. A book-chapter on HChT

June 13, 2017

HChT code here: https://github.com/covarep/covarep

Book Chapters on HChT:
chapters 7.10.2 -theory, 7.11.4 -signal examples, B.5.12 -code.
https://link.springer.com/book/10.1007%2F978-981-10-2534-1