What's new

I wrote a code to implement a new FM synthesis approach!

fan455

Active Member
Hi there,

FM synthesis is a powerful way to synthesize percussive sounds. Recently I read the paper "Percussion Synthesis using Loopback Frequency Modulation Oscillators" written by Jennifer S. Hsu and Tamara Smyth and tried to implement the loopbackFM approach they proposed to synthesize some percussive sounds. Here's my code uploaded on github:


I'm still trying to understand how the model and the parameters work to get the output I want and will keep updating my code on github.

Though python is said to be slower than many other computer languages, using numpy and scipy, particularly scipy's FFT convolution, has enabled my code to finish running in less than 0.05 seconds. And it's friendly to write for python for a noob like me. It is not made for real-time synthesis, though.
 
Last edited:
Interesting!

Would have been nice to hear the sound produced just with this new FM approach without the convolution.
 
Cool! Will have to check this out. I don’t mind a noisy fm percussion sound, so perhaps that is a feature?
 
Interesting!

Would have been nice to hear the sound produced just with this new FM approach without the convolution.
OK. I'll post more sounds without convolution reverb later. The convolution uses FFT so it's very fast.
 
Cool! Will have to check this out. I don’t mind a noisy fm percussion sound, so perhaps that is a feature?
Yeah, the paper has found this approach can generate more noisy sounds. But the noise seems to mainly result from convolution reverb. So it sounds still very clean without reverb.
 
Hi, I just fixed a big error in the excitation section and re-uploaded to github, which has improved the output quality.

Here're the mono dry sounds (without convolution reverb but excitation convolution is still necessary) with parameter 'L' in the excitation section going from 10 to 100, resulting in an increase in low frequencies and decrease in high frequencies. Other parameters unchanged. I added an option to choose whether or not to use convolution reverb in the code.
 

Attachments

  • percussive_dry_L=10.0.mp3
    47.5 KB
  • percussive_dry_L=25.0.mp3
    47.5 KB
  • percussive_dry_L=50.0.mp3
    47.5 KB
  • percussive_dry_L=100.0.mp3
    47.5 KB
Last edited:
Here're the stereo wet sounds. It's the convolution reverb that stereo-izes, prolongs and makes more noisy the sounds.

IR files downloaded from http://legacy.spa.aalto.fi/projects/poririrs/. I used the first one in the Binaural folder.
 

Attachments

  • percussive_wet_L=10.0.mp3
    204.1 KB
  • percussive_wet_L=25.0.mp3
    204.1 KB
  • percussive_wet_L=50.0.mp3
    204.1 KB
  • percussive_wet_L=100.0.mp3
    204.1 KB
Last edited:
Top Bottom