Csound Csound-dev Csound-tekno Search About

[Csnd] Interpetting FM synthesis diagrams

Date2019-11-16 04:33
FromJason Hallen
Subject[Csnd] Interpetting FM synthesis diagrams
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2019-11-16 16:32
FromOeyvind Brandtsegg
SubjectRe: [Csnd] Interpetting FM synthesis diagrams
Hi Jason

I am no expert on these diagrams, but I would think that the first diagram on p 106 is like:

You have a fundamental frequency of your desired note, lets say 100Hz, we name this variable "icps", then
Operator A 
frequency = 100 (ratio 1.0, icps*1.0= 100) + offset (=0)
The output sent to the next oscillator is 39% of the initial amplitude
It also modulates itself (sending its own output back into its own frequency value, scaled by 0.38)

Similar for Operator B
frequency =  977.96 (ratio 9.9996 , icps*9.9996= 999.96) + offset (-22)

Both A and B are routed to the frequency input of operator C
 
... and so on.

If you make an instrument replicating this diagram, and run into problems, then we can probably help you sort them out.
Also, you might look at Gleb Rogozinsky's Csound implementations of the TX from the latest Csound conference.

all best
Oeyvind


lør. 16. nov. 2019 kl. 05:33 skrev Jason Hallen <hallenj@gmail.com>:
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2019-11-16 23:56
FromJason Hallen
SubjectRe: [Csnd] Interpetting FM synthesis diagrams
Hi Oeyvind,

Thanks so much for explaining this.  It does make sense to me, and I've sketched out an instrument that does this in Csound.  However, I'm not sure what the amplitudes of the modulators should be.  I see how the numbers 38, 39, 30, and 34 are percentages of the output modulating the next oscillators, but these are percentages of what initial amplitudes?  This appears to be what determines the modulation index.  Here's the instrument I've sketched out, and [AMP?] indicates where I'm not sure what the amplitude should be.  Any ideas?

instr 1

    iamp = p4
    icps = p5

    aenv expseg 0.001, 0.1, 1, p3-0.2, 1, 0.1, 0.001
   
    aoperatorA init 0
   
    aoperatorA oscili [AMP?], icps*1.0 + 0.38*aoperatorA
   
    aoperatorB oscili [AMP?], icps*9.9996-22
   
    aoperatorC oscili [AMP?], icps*0.5 + 0.39*aoperatorA + 0.3*aoperatorB
   
    aoperatorD oscili iamp, icps*0.5 + 0.34*aoperatorC
   
    outs aenv*aoperatorD, aenv*aoperatorD

endin

Thanks!
Jason

On Sat, Nov 16, 2019 at 10:32 AM Oeyvind Brandtsegg <obrandts@gmail.com> wrote:
Hi Jason

I am no expert on these diagrams, but I would think that the first diagram on p 106 is like:

You have a fundamental frequency of your desired note, lets say 100Hz, we name this variable "icps", then
Operator A 
frequency = 100 (ratio 1.0, icps*1.0= 100) + offset (=0)
The output sent to the next oscillator is 39% of the initial amplitude
It also modulates itself (sending its own output back into its own frequency value, scaled by 0.38)

Similar for Operator B
frequency =  977.96 (ratio 9.9996 , icps*9.9996= 999.96) + offset (-22)

Both A and B are routed to the frequency input of operator C
 
... and so on.

If you make an instrument replicating this diagram, and run into problems, then we can probably help you sort them out.
Also, you might look at Gleb Rogozinsky's Csound implementations of the TX from the latest Csound conference.

all best
Oeyvind


lør. 16. nov. 2019 kl. 05:33 skrev Jason Hallen <hallenj@gmail.com>:
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2019-11-17 00:01
FromJason Hallen
SubjectRe: [Csnd] Interpetting FM synthesis diagrams
By the way, I looked at Gleb's paper on implementing TX, but I don't think he covers how to code the carriers and modulators.

On Sat, Nov 16, 2019 at 5:56 PM Jason Hallen <hallenj@gmail.com> wrote:
Hi Oeyvind,

Thanks so much for explaining this.  It does make sense to me, and I've sketched out an instrument that does this in Csound.  However, I'm not sure what the amplitudes of the modulators should be.  I see how the numbers 38, 39, 30, and 34 are percentages of the output modulating the next oscillators, but these are percentages of what initial amplitudes?  This appears to be what determines the modulation index.  Here's the instrument I've sketched out, and [AMP?] indicates where I'm not sure what the amplitude should be.  Any ideas?

instr 1

    iamp = p4
    icps = p5

    aenv expseg 0.001, 0.1, 1, p3-0.2, 1, 0.1, 0.001
   
    aoperatorA init 0
   
    aoperatorA oscili [AMP?], icps*1.0 + 0.38*aoperatorA
   
    aoperatorB oscili [AMP?], icps*9.9996-22
   
    aoperatorC oscili [AMP?], icps*0.5 + 0.39*aoperatorA + 0.3*aoperatorB
   
    aoperatorD oscili iamp, icps*0.5 + 0.34*aoperatorC
   
    outs aenv*aoperatorD, aenv*aoperatorD

endin

Thanks!
Jason

On Sat, Nov 16, 2019 at 10:32 AM Oeyvind Brandtsegg <obrandts@gmail.com> wrote:
Hi Jason

I am no expert on these diagrams, but I would think that the first diagram on p 106 is like:

You have a fundamental frequency of your desired note, lets say 100Hz, we name this variable "icps", then
Operator A 
frequency = 100 (ratio 1.0, icps*1.0= 100) + offset (=0)
The output sent to the next oscillator is 39% of the initial amplitude
It also modulates itself (sending its own output back into its own frequency value, scaled by 0.38)

Similar for Operator B
frequency =  977.96 (ratio 9.9996 , icps*9.9996= 999.96) + offset (-22)

Both A and B are routed to the frequency input of operator C
 
... and so on.

If you make an instrument replicating this diagram, and run into problems, then we can probably help you sort them out.
Also, you might look at Gleb Rogozinsky's Csound implementations of the TX from the latest Csound conference.

all best
Oeyvind


lør. 16. nov. 2019 kl. 05:33 skrev Jason Hallen <hallenj@gmail.com>:
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2019-11-17 08:18
FromEduardo Moguillansky
SubjectRe: [Csnd] Interpetting FM synthesis diagrams

In all these hardware emulations such integer amplitudes usually point to a translation table (you can see such tables in the tx81z implementation, using arrays). As for the initial amplitude, this is normally derived from velocity, with a given velocity curve and sensitivity. Outside of a midi context, amplitude can be whatever the user decides. Here is a version of the tx81z for supercollider with comments, it might make more sense than my explanation:

https://github.com/gesellkammer/sc-tx81z


On 17.11.19 00:56, Jason Hallen wrote:
Hi Oeyvind,

Thanks so much for explaining this.  It does make sense to me, and I've sketched out an instrument that does this in Csound.  However, I'm not sure what the amplitudes of the modulators should be.  I see how the numbers 38, 39, 30, and 34 are percentages of the output modulating the next oscillators, but these are percentages of what initial amplitudes?  This appears to be what determines the modulation index.  Here's the instrument I've sketched out, and [AMP?] indicates where I'm not sure what the amplitude should be.  Any ideas?

instr 1

    iamp = p4
    icps = p5

    aenv expseg 0.001, 0.1, 1, p3-0.2, 1, 0.1, 0.001
   
    aoperatorA init 0
   
    aoperatorA oscili [AMP?], icps*1.0 + 0.38*aoperatorA
   
    aoperatorB oscili [AMP?], icps*9.9996-22
   
    aoperatorC oscili [AMP?], icps*0.5 + 0.39*aoperatorA + 0.3*aoperatorB
   
    aoperatorD oscili iamp, icps*0.5 + 0.34*aoperatorC
   
    outs aenv*aoperatorD, aenv*aoperatorD

endin

Thanks!
Jason

On Sat, Nov 16, 2019 at 10:32 AM Oeyvind Brandtsegg <obrandts@gmail.com> wrote:
Hi Jason

I am no expert on these diagrams, but I would think that the first diagram on p 106 is like:

You have a fundamental frequency of your desired note, lets say 100Hz, we name this variable "icps", then
Operator A 
frequency = 100 (ratio 1.0, icps*1.0= 100) + offset (=0)
The output sent to the next oscillator is 39% of the initial amplitude
It also modulates itself (sending its own output back into its own frequency value, scaled by 0.38)

Similar for Operator B
frequency =  977.96 (ratio 9.9996 , icps*9.9996= 999.96) + offset (-22)

Both A and B are routed to the frequency input of operator C
 
... and so on.

If you make an instrument replicating this diagram, and run into problems, then we can probably help you sort them out.
Also, you might look at Gleb Rogozinsky's Csound implementations of the TX from the latest Csound conference.

all best
Oeyvind


lør. 16. nov. 2019 kl. 05:33 skrev Jason Hallen <hallenj@gmail.com>:
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2019-11-17 13:51
FromOeyvind Brandtsegg
SubjectRe: [Csnd] Interpetting FM synthesis diagrams

søn. 17. nov. 2019 kl. 09:19 skrev Eduardo Moguillansky <eduardo.moguillansky@gmail.com>:

In all these hardware emulations such integer amplitudes usually point to a translation table (you can see such tables in the tx81z implementation, using arrays). As for the initial amplitude, this is normally derived from velocity, with a given velocity curve and sensitivity. Outside of a midi context, amplitude can be whatever the user decides. Here is a version of the tx81z for supercollider with comments, it might make more sense than my explanation:

https://github.com/gesellkammer/sc-tx81z


On 17.11.19 00:56, Jason Hallen wrote:
Hi Oeyvind,

Thanks so much for explaining this.  It does make sense to me, and I've sketched out an instrument that does this in Csound.  However, I'm not sure what the amplitudes of the modulators should be.  I see how the numbers 38, 39, 30, and 34 are percentages of the output modulating the next oscillators, but these are percentages of what initial amplitudes?  This appears to be what determines the modulation index.  Here's the instrument I've sketched out, and [AMP?] indicates where I'm not sure what the amplitude should be.  Any ideas?

instr 1

    iamp = p4
    icps = p5

    aenv expseg 0.001, 0.1, 1, p3-0.2, 1, 0.1, 0.001
   
    aoperatorA init 0
   
    aoperatorA oscili [AMP?], icps*1.0 + 0.38*aoperatorA
   
    aoperatorB oscili [AMP?], icps*9.9996-22
   
    aoperatorC oscili [AMP?], icps*0.5 + 0.39*aoperatorA + 0.3*aoperatorB
   
    aoperatorD oscili iamp, icps*0.5 + 0.34*aoperatorC
   
    outs aenv*aoperatorD, aenv*aoperatorD

endin

Thanks!
Jason

On Sat, Nov 16, 2019 at 10:32 AM Oeyvind Brandtsegg <obrandts@gmail.com> wrote:
Hi Jason

I am no expert on these diagrams, but I would think that the first diagram on p 106 is like:

You have a fundamental frequency of your desired note, lets say 100Hz, we name this variable "icps", then
Operator A 
frequency = 100 (ratio 1.0, icps*1.0= 100) + offset (=0)
The output sent to the next oscillator is 39% of the initial amplitude
It also modulates itself (sending its own output back into its own frequency value, scaled by 0.38)

Similar for Operator B
frequency =  977.96 (ratio 9.9996 , icps*9.9996= 999.96) + offset (-22)

Both A and B are routed to the frequency input of operator C
 
... and so on.

If you make an instrument replicating this diagram, and run into problems, then we can probably help you sort them out.
Also, you might look at Gleb Rogozinsky's Csound implementations of the TX from the latest Csound conference.

all best
Oeyvind


lør. 16. nov. 2019 kl. 05:33 skrev Jason Hallen <hallenj@gmail.com>:
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here

Date2019-11-17 15:18
FromJason Hallen
SubjectRe: [Csnd] Interpetting FM synthesis diagrams
Thank you so much, Oeyvind and Eduardo!  This is exactly what I needed.  I'll be back in touch if I continue to have questions.

Best,
Jason

On Sun, Nov 17, 2019 at 7:51 AM Oeyvind Brandtsegg <obrandts@gmail.com> wrote:

søn. 17. nov. 2019 kl. 09:19 skrev Eduardo Moguillansky <eduardo.moguillansky@gmail.com>:

In all these hardware emulations such integer amplitudes usually point to a translation table (you can see such tables in the tx81z implementation, using arrays). As for the initial amplitude, this is normally derived from velocity, with a given velocity curve and sensitivity. Outside of a midi context, amplitude can be whatever the user decides. Here is a version of the tx81z for supercollider with comments, it might make more sense than my explanation:

https://github.com/gesellkammer/sc-tx81z


On 17.11.19 00:56, Jason Hallen wrote:
Hi Oeyvind,

Thanks so much for explaining this.  It does make sense to me, and I've sketched out an instrument that does this in Csound.  However, I'm not sure what the amplitudes of the modulators should be.  I see how the numbers 38, 39, 30, and 34 are percentages of the output modulating the next oscillators, but these are percentages of what initial amplitudes?  This appears to be what determines the modulation index.  Here's the instrument I've sketched out, and [AMP?] indicates where I'm not sure what the amplitude should be.  Any ideas?

instr 1

    iamp = p4
    icps = p5

    aenv expseg 0.001, 0.1, 1, p3-0.2, 1, 0.1, 0.001
   
    aoperatorA init 0
   
    aoperatorA oscili [AMP?], icps*1.0 + 0.38*aoperatorA
   
    aoperatorB oscili [AMP?], icps*9.9996-22
   
    aoperatorC oscili [AMP?], icps*0.5 + 0.39*aoperatorA + 0.3*aoperatorB
   
    aoperatorD oscili iamp, icps*0.5 + 0.34*aoperatorC
   
    outs aenv*aoperatorD, aenv*aoperatorD

endin

Thanks!
Jason

On Sat, Nov 16, 2019 at 10:32 AM Oeyvind Brandtsegg <obrandts@gmail.com> wrote:
Hi Jason

I am no expert on these diagrams, but I would think that the first diagram on p 106 is like:

You have a fundamental frequency of your desired note, lets say 100Hz, we name this variable "icps", then
Operator A 
frequency = 100 (ratio 1.0, icps*1.0= 100) + offset (=0)
The output sent to the next oscillator is 39% of the initial amplitude
It also modulates itself (sending its own output back into its own frequency value, scaled by 0.38)

Similar for Operator B
frequency =  977.96 (ratio 9.9996 , icps*9.9996= 999.96) + offset (-22)

Both A and B are routed to the frequency input of operator C
 
... and so on.

If you make an instrument replicating this diagram, and run into problems, then we can probably help you sort them out.
Also, you might look at Gleb Rogozinsky's Csound implementations of the TX from the latest Csound conference.

all best
Oeyvind


lør. 16. nov. 2019 kl. 05:33 skrev Jason Hallen <hallenj@gmail.com>:
Hello everyone,

I'm trying to work through some of the techniques in Mark Fell's thesis.  On page 106 he includes diagrams for FM synthesis patches.  I'm familiar with the basics of FM synthesis (i.e. carrier, modulator, modulation index, etc) and how to do it in Csound, but I'm not sure how to interpret these diagrams.  Can anyone explain how to interpret these diagrams?

Thanks!
Jason
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here