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



## fan455 (Aug 5, 2022)

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:









GitHub - fan455/LoopbackFM-implementation: A python implementation of LoopbackFM synthesis


A python implementation of LoopbackFM synthesis. Contribute to fan455/LoopbackFM-implementation development by creating an account on GitHub.




github.com





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.


----------



## Pier (Aug 6, 2022)

Interesting!

Would have been nice to hear the sound produced just with this new FM approach without the convolution.


----------



## antret (Aug 6, 2022)

Cool! Will have to check this out. I don’t mind a noisy fm percussion sound, so perhaps that is a feature?


----------



## fan455 (Aug 6, 2022)

Pier said:


> 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.


----------



## fan455 (Aug 6, 2022)

antret said:


> 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.


----------



## fan455 (Aug 7, 2022)

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.


----------



## fan455 (Aug 7, 2022)

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.


----------

