Synth Forum

Notifications
Clear all

Duplicating Thor Zollinger’s FM-X Examples on the Montage

14 Posts
2 Users
0 Reactions
2,197 Views
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

Lately I’ve been going through Thor Zollinger’s excellent guide to FM synthesizer programming. In the process, I’ve discovered that Montage FM-X behaves differently from the synthesizers he wrote about. I think a lot of the difference has to do with the way that harmonics that want to be below 0 Hz “reflect“ back into the positive frequency range. There may be other reasons that I’m not yet aware of.

When I set things up on my Montage the way the document specifies (as best I can), I get configurations of harmonics that are significantly different from the diagrams in Thor’s document.

I’ve attached files containing three Performances I put together. They are named to correspond to the sections and examples in Thor’s document, and contain my best attempts to duplicate what the document describes. I would be really happy to have anyone who’s interested in FM-X take a look at these and let me know if you find areas for improvement or mistakes I’ve made. I’m just getting started with FM-X, and I’m sure there’s a lot for me to learn.

Thanks...

EDIT: The zip file attached to this post uploaded as a zero-length file for some unknown reason. Scroll down to my next post for an upload that works properly.

Attached files

Thor FM-X.zip  

 
Posted : 19/08/2019 12:17 am
Jason
Posts: 8260
Illustrious Member
 

Filesize=0? That's what I get here for the ZIP.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 20/08/2019 6:35 am
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

I guess uploading from OneDrive didn’t work. Trying now from iCloud. Looks like that one worked.

Attached files

Thor FM-X.zip (10.3 KB) 

 
Posted : 20/08/2019 7:05 am
Jason
Posts: 8260
Illustrious Member
 

When I set things up on my Montage the way the document specifies (as best I can), I get configurations of harmonics that are significantly different from the diagrams in Thor’s document.

Section 5 is there basically to get accustomed to playing with operators. No stacks or ratios. There is also no diagram of this step - so presumably whatever you set up will be fine. I haven't looked at your X7B files yet - but as long as you've set up your carriers as sine wave type - you've got it. Volumes map exactly since FM-X also scales 0-99 for operator levels. The doc tells you which Montage alg. to use. No real guesswork here.

... section 2 has plots for I=0 through I=5. There are volumes here given for the DX7 and DX11. Given in the format DX11Volume(DX7Volume). These two keyboards both have an operator level range of 0-99. So the need to document both settings is related to differences in the actual output characteristics of these two instruments' operators even though the range is identical. You may be able to assume Montage should match the DX7 - but you don't have to. Set up a 2 operator stack. Use sine waves. Setup a 1:1 frequency ratio between the two operators. Setup the carrier level to 99 and start with the modulator level at 0. You should get a spectrum plot matching I=0. Now increase the modulator level until your plot matches I=0.5 -- and so on. You can use the DX7/DX11 volumes as general guidelines. After walking through this - see if your levels match either the DX7 or DX11 or are something different. Also, these were arrived at experimentally (I would guess) using one set of keyboards. It's possible that vintage keyboards may need servicing and this is partially why there is variance. Or, it could be some intrinsic difference. The general idea here is you cannot "trust" all things are equal - so run the experiment yourself and come up with your own values.

Depending on how this first step goes - you may be able to leverage the values given elsewhere in the paper - or you may need to adjust according to how your values scale.

The paper does make it a point that, since these volume levels are not exact (per instrument, per model) - you should use your ears as a guide. It's hard to hear what you see (hear a specific spectrum plot) - so your ears may gravitate towards a spectrum that's different than the paper is seeing as ideal. You should be able to dial in by sight (and not use your ears) if you want to hear what the "ideal" sounds like.

It's difficult to make any comment on what your results are without loading this on my instrument and running the spectrum analysis. It would have been "better" perhaps (if non-matching spectrum plots is your key issue here) to share your frequency domain plots so we can comment or explain away what you see. I have no sense of what "slightly different" entails right now.

One measure of success is matching frequency diagrams - but sections 5, 7 have you "build" a clarinet. Section 5 a not-so-great one for training wheels and section 7 a better one (something closer to the original recording plot). Regardless of how well the plots match - does it sound like a clarinet? ... section 9 is a saxophone. Does this sound like/resemble a saxophone? Sax is more difficult to nail due to its cone shape vs. a clarinet's more "pure" cylindrical shape.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 20/08/2019 8:45 am
Jason
Posts: 8260
Illustrious Member
 

This is a nuance - but to be strict about the algorithms, the choice for matching alg. on Section 7 Example 1 would be Montage's Alg 8.

The document is trying to walk you slowly from the initial all-operators-are-carriers and just take one carrier and place it as an operator (w/feedback on the modulator as an option). So the document would be:

Alg 7(Alg31)[Alg 8]

Operator Freq Vol
Op3(5)[2] 1.00 99(99)[99]
Op4(6)[1] 2.00 69(77)[77? see previous discussion]

Where in the above notation "Op3" means the 3rd operator for a DX11. Next to this the () parenthesis denote the operator for DX7. And, in brackets [] is the operator number for Montage. Parenthesis as DX7 matches the original doc. I've just added brackets to show the Montage/MODX values. I also spelled out that 99 is the same for all. Lack of () in the doc denotes this, but it's more clear to show explicitly even if redundant.

Now, this section only really uses a 2-op stack. So there are tons of ways to get the right answer. Maybe the Alg 54 you picked is fine. I'm just documenting here what the intent of the document would be - to use an alg. very close to the section 5 alg so you are making smaller changes to help conceptualization.

With Alg 54 - I'm not sure (for Section 7 Ex 1) you did this right. I see non-zero levels for ops 1&2. These are two carriers. To use Alg 54 effectively, you'd have to use ops 3 and 8 (assuming it was meaningful to keep the ability to add feedback) - or 8 and any other op other than 1 or 2. Having two carriers is different than having a single modulator feeding a carrier.

Note: I could have this wrong. I'm depending on code I just wrote to view your X7B without having a keyboard. I just decoded the FM-X portions. If you're not using Alg 54 - then perhaps there's a bug on my end.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 20/08/2019 10:44 am
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

Thanks, Jason. Good suggestions.

I just did a little experiment. I set up a simple 2-stack 1:1 Performance. I recorded the frequency spectra at different modulator volumes. The note I hit was G3. The results are nothing like the diagram in Section 2 of Thor’s PDF.

There are screen shots of the frequency spectra at different volumes, the diagram from Section 2 of Thor’s PDF, and an X7B file containing the Performance in the attached zip file.

I’m curious what you will have to say if you look at this on your Montage.

Attached files

Thor FM-X Section 2.zip (1 MB) 

 
Posted : 21/08/2019 12:18 am
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

This is a nuance - but to be strict about the algorithms, the choice for matching alg. on Section 7 Example 1 would be Montage's Alg 8.

I’m pretty sure I set it up correctly using Algorithm 54. I used operators 1, 2, 5, and 8. I picked operator 5 for the modulator because it’s vertically above its carrier, operator 8. I could have used operator 3 instead of operator 5 if I needed feedback, but I didn’t need feedback.

You’re correct that I also could have used Algorithm 8. There were a number of Algorithms I could have used for this.

 
Posted : 21/08/2019 12:32 am
Jason
Posts: 8260
Illustrious Member
 

I didn't read the 2nd part of Example 1 where the carriers alone were set. So what you did is probably fine. I stopped when I saw the lone carriers were used (which wasn't valid given I skipped the 2nd part).

I still have to plug in my keyboard - so I cannot really do anything at the moment with the actual hardware.

The paper doesn't show units or explain what note is used for the plots. Your plots seem to match OK. You do not show negative frequencies (the paper does) - so you need to look at just the fundamental (middle) and to the right in the paper's plots vs. yours.

If sticking with G3, you may want to set the X-scale such that each labeled X-value is equal to G3's frequency (392 Hz).

You can go to the "More" tab and click "Custom Spectrum". Under Add>> type 196 then click "Add Plus" so it's checked. Set the # of harmonics to 19. Then click the "Add >>" button. Then select "192" and press the "Remove Selected" button. Then "Apply" then "OK". Go back to the "Main" tab and set the X-axis (under "True X" ) to "Custom". This should have your X-Axis with a vertical line on 392Hz. This will be your fundamental using G3. 2nd harmonic will be at 784. 3rd at 1176 and so on. This sets up the vertical lines in the grid to match each harmonic. There are 9 vertical lines so you get the 8th harmonic (fundamental on 1st vertical line + 8). This should allow for you to "see" everything through I=5.

Not sure if the freq G3 matches the example or not - so not sure the degree to which you can "see" those low amplitude harmonics at various points. You may have to play with the X scale to try to amplify those low amplitude harmonics. Again, it would help if these plots had the units and scale of the axis documented. At least to correlate.

One place where there is "perfect" alignment in results is in the frequency formula.

F1=Fc (carrier frequency)
F2=Fc + Fm (ratio of 1:1, Fm=Fc) ... or F2 = Fc + Fc ...or F2 = 2*Fc
F3=Fc + 2*Fm (ditto) F3 = 3*Fc
... and so on. You'll see this better if you follow the instructions to change the grid units as above.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 21/08/2019 5:21 am
Jason
Posts: 8260
Illustrious Member
 

Also note that you can minimize the effect of phase inversion (frequency reflection across the x=0 axis) by choosing your M:C ratio.

Your frequency for "C" (C for carrier) determines the center of your plot. If your ratio is 1:1, then your first harmonic to the left of "C" will be on the x=0. Then all harmonics beyond that will be negative and therefore present as phase inverted frequencies (assuming sine wave type). So beyond the 1st harmonic - you are sure to have phase inverted components to the measured waveforms using 1:1.

If your modulator frequency is less than your your carrier (a fraction of it) - then you will have more space to the left of "C" before you run into the X=0 Hz frequency axis.

There's another online FM harmonic-focused article that uses C=800Hz and M=100Hz (M:C = 1:8). You'll have (showing just the "left" side):

100Hz (n.h. 7), 200Hz (n.h. 6), 300Hz (n.h. 5), 400Hz (n.h. 4), 500Hz (n.h. 3), 600Hz (n.h. 2), 700Hz (neg harmonic 1), 800Hz (Carrier fundamental frequency)

If you wanted to "see" 9 non-phase-inverted harmonics left of the carrier as 800Hz, you'd have a ratio of 1:10. Or you can set your carrier frequency higher so you can "fit" more harmonics to the left (and keep the ratio 1:8 ).

Your measurements do include the phase inverted content (not showing negative frequency) while the plots in Thor's paper show negative frequency.

The inference is that these negative frequencies do not change the characteristics much - but you can better manage if there are these negative frequencies by using M:C ratios AND a value for "C" that is far enough away from X=0 Hz to fit the amount of harmonics you may encounter at a given amplitude of the modulator.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 21/08/2019 4:07 pm
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

If your modulator frequency is less than your your carrier (a fraction of it) - then you will have more space to the left of "C" before you run into the X=0 Hz frequency axis.

There's another online FM harmonic-focused article that uses C=800Hz and M=100Hz (M:C = 1:8). You'll have (showing just the "left" side):

Aha! I just set up a Performance this way, and now I see frequency spectra just like what’s in Thor’s PDF. Thanks!

I tried the Custom Spectrum thing in VA that you told me about. When in that mode, VA displays the frequency spectrum as a bar graph. Is there a way to get VA to display it as a line graph?

I’ve attached the Performance that I used for this.

Attached files

VA Test.zip (1.4 KB) 

 
Posted : 23/08/2019 7:20 pm
Jason
Posts: 8260
Illustrious Member
 

Your version is different or you didn't click the right (same) things or you had done something previous that I haven't done.

I started with a fresh install of the latest version (bleeding edge ver).

Here the suggestion just changed the range and grid of the X-axis which, for me, was Hz. The Y axis I didn't touch vs. default. This was dealing with the bottom window.

The.mode or style.of the display didn't change.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 23/08/2019 10:11 pm
Jason
Posts: 8260
Illustrious Member
 

... using 2019 r.0 BETA 64 bit.

BTW: I wouldn't spend too much time trying to get the grid to match some custom settings. It helps visualization to perfectly line up the harmonics to a reference point - but the software is buggy and things like log scale keep resetting when you do not change this. There's a certain order to set things to keep this from happening and it's probably not worth "hacking" away at the software for little benefit.

I was able to make the grid work out - but it takes considerable time to get right (at first) and there are some gotcha's.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 24/08/2019 12:12 am
Michael Trigoboff
Posts: 0
Honorable Member
Topic starter
 

the software is buggy

Yeah, I’ve noticed. 😀

I’d be very happy to pay for high-quality frequency analysis software. Do you know of any?

 
Posted : 24/08/2019 10:40 pm
Jason
Posts: 8260
Illustrious Member
 

I don't. There are several options out there. Some free. Some not. I would think most would have a demo to try out the functions before unlocking the full software.

I don't find VA64 to be that bad - but I believe I've used other software before to look at waveforms on the PC (focus on amplitude vs. time - not necessarily frequency spectrum). I think some of these had spectrum analyzer features. I'd have to dig around to figure out what I've used. It's not a normal thing for me to do.

Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R

 
Posted : 25/08/2019 4:01 am
Share:

© 2024 Yamaha Corporation of America and Yamaha Corporation. All rights reserved.    Terms of Use | Privacy Policy | Contact Us