FM Synthesis Inconsistencies
Hey guys,
So I have been using a FM Synthesis model for the last couple of years, adding my own extra bits and pieces such as further modulations...
Right now, I'm using this patch for a Neurofunk/Jump up drum and bass patch.
However, I'm finding more and more inconsistencies in the qualities of the sound!
An example of this is preset number 147. It should be a sharp, harsh, bright and stabby staccato sound, almost humanlike (sounds like something going MEEHH to me). However, when I use other presets and go back to it, it will suddenly have no brightness at all, and most of the quality will be gone. Or sometimes it will be somewhere in between - not perfect, but still similar. This doesn't just happen to 147, it happens to all of the presets, but this is a distinctive sound.
I have had this same problem before. I have ensured that EVERY parameter possible is hooked up 'preset'. I figured, due to so many waves flying around, it might be some sort of phasing problem, so I tried to initialize the phase to 0 when the sound is triggered - no luck.
Can anyone help? Surely I'm not the only person with this problem?
Thanks,
Calum
(my apologies in advanced for the messy patch )
Ok. So I just fixed a ton of things in your patch and hopefully it fixes the problem. On top of explaining what I think your problem was, I'll also explain why I changed so much, but first i'll explain the smaller things:
Max:
- The preset object - you don't need to hook it up individually to everything you want to include in it, it does this by default.
- The breakpoint function object - made it so that it actually displays an entire envelope (to scale) and outputs it when you play a note.
- I assumed you wanted an octave shift for the saw tooth waveform on the right side of the patch, so I simplified it.
- I removed the '*' object that was hooked up with the index value number box, this was done because you shouldn't want this always being a ratio to your carrier frequency, especially at the amounts you had it set to at minimum (like in the range of 50+), this is just going to increase it to ranges of almost inaudible ranges extremely quickly (if not immediately). You can add it back in if you want, theres no rule saying you can't, but having this as default I personally would never do, I would probably make a toggle/gate so that I could turn it on and off.
To give an example of this, imagine your carrier is set to 500hz, and you have the index set to 'carrier * 50'., thats making it a range of 500hz +- 25,000hz, which is beyond the human hearing range by 5000hz; this means that a *large* amount of your signal isn't even audible.
- A ton of other changes were made, I just honestly can't remember all of them now.
MSP:
- Phase input is only between '0.' and '1.', you had a number box set to like '67.' on one of them for some reason.
*** - In your AM and FM amounts/ratios I added in some boxes that detect when they are set to zero, and output a '0.' in the instance of the FM portion, and '1.' in the instances of the 6 AM portions. This is done because if you just send a '0.' frequency in to a cycle~ or any waveform generating object, it will stop it at the current phase (will freeze on the last number being output), so instead of always outputting a constant and very precise number (like 0. or 1.) it will output something like 0.5764, which will cause issues in your output (***and overall sound wave produced***), this could have been your problem.
The same thing happens for the AM portion, I don't know if you knew exactly what you were doing there, but that's all you were doing in those 6 spots (Amplitude Modulation), and without the extra bits to detect it, when you turn the float box to '0.', it will stop the cycle~ object on something like 0.126, which will be constantly output down to the *~ object, ***which will be dampening your signal by a massive amount*** (also very well could have been your problem).
- I added in 2 more gain~ objects for all of the waveforms, plus a meter~ object to each of them so that you can see their levels (and if they're clipping).
Entire Max Patch:
- I organized it, I organized it a hell of a lot. This not only makes it easier for people to help you when you post your patch, but it also makes it way easier for you yourself to work on, and debug your patch. I can't stress enough how incredible fast and easy it is to just keep your patch organized. You can even just organize it every once in a while, or when you add a new portion made up of several objects to your patch. This makes literally *everything* a LOT easier.
I also highly recommend reading this book:
It was written by Miller Puckette, the creator of Max. It will help you a lot in understanding how the MSP objects actually work. If the math scares you, ignore most of it and just read the first 2-3 chapters and it will help you an incredible amount.
By the way, click the last 2 presets in the bottom corner of the preset object, all the other presets probably won't be saved properly now (unfortunately), due to how much I had to add/remove/change.
Dude - thank you so much for this. Yet another instance of how the Cycling74 community go above and beyond to help others. I'll be getting my teeth sunk into this today.
Thanks again,
and again,
Calum