Reply
 
Thread Tools Display Modes
  #42   Report Post  
robert bristow-johnson
 
Posts: n/a
Default Sick of sample-based "synthesis"!

In article , Allan Herriman at
lid wrote on 10/24/2003 01:37:

On Thu, 23 Oct 2003 23:26:10 -0400, robert bristow-johnson
wrote:

In article
, Radium at
wrote on 10/23/2003 22:45:

robert bristow-johnson wrote in message
...
how do you generate the sinusoids that get modulated in FM without some
sorta wavetable? you ain't gonna compute them from a power series on the
fly are you?

"compute them from a power series on the fly"


often math libraries used by higher level languages like C or programs like
Excel or Matlab or Mathmatica use some kinda power series to do
trancendental functions (of which sin() or cos() belong). i suppose if one
were not to use wavetables or the CORDIC (there are little problems with
using CORDIC for FM, Allen, but they are certainly surmountable),


I wasn't aware of problems, except for the strange format that CORDIC
uses for angles (which makes adding phases interesting). Is that what
you meant?


i think so (not exactly sure what you mean, Allan). it's that for arbitrary
and time-variant fundamental frequency, w0 (which is a staple for a music
synth), it's not real easy to compute the sin(w0*T) and cos(w0*T) quickly
without table lookup in that operation. the bit-by-bit representation of
the sin(delta) cos(delta) that CORDIC (and similar) operations do, is in my
opinion, not very fast in comparison to doing it all with wavetables.

but i dunno if we be talking about the same thing.

r b-j

  #43   Report Post  
robert bristow-johnson
 
Posts: n/a
Default Sick of sample-based "synthesis"!

In article , Allan Herriman at
lid wrote on 10/24/2003 01:37:

On Thu, 23 Oct 2003 23:26:10 -0400, robert bristow-johnson
wrote:

In article
, Radium at
wrote on 10/23/2003 22:45:

robert bristow-johnson wrote in message
...
how do you generate the sinusoids that get modulated in FM without some
sorta wavetable? you ain't gonna compute them from a power series on the
fly are you?

"compute them from a power series on the fly"


often math libraries used by higher level languages like C or programs like
Excel or Matlab or Mathmatica use some kinda power series to do
trancendental functions (of which sin() or cos() belong). i suppose if one
were not to use wavetables or the CORDIC (there are little problems with
using CORDIC for FM, Allen, but they are certainly surmountable),


I wasn't aware of problems, except for the strange format that CORDIC
uses for angles (which makes adding phases interesting). Is that what
you meant?


i think so (not exactly sure what you mean, Allan). it's that for arbitrary
and time-variant fundamental frequency, w0 (which is a staple for a music
synth), it's not real easy to compute the sin(w0*T) and cos(w0*T) quickly
without table lookup in that operation. the bit-by-bit representation of
the sin(delta) cos(delta) that CORDIC (and similar) operations do, is in my
opinion, not very fast in comparison to doing it all with wavetables.

but i dunno if we be talking about the same thing.

r b-j

  #44   Report Post  
Radium
 
Posts: n/a
Default Sick of sample-based "synthesis"!

Bad memories associated w/ FM synths???

FM synths are actually fresher than sample-playback synth. The key
word is "sample". Sample something and it will rot perceptibly. FM
synths freshly generate the tone as you hear it.

It is sample-playback synths that are "cheesy". What you describe in
"chessy sound cards" are PCM-sampled emulations of FM synth sounds. Of
course they will sound rotten. They are samples, not real FM sounds.
That is, the card does not generate those sounds, it only plays its
samples of them.


(StuWelwood) wrote in message ...

Please also explain why you think that FM synthesis is desirable at all. Most
musicians found that FM synthesizers were thin sounding and tended to have less
than intuitive user interfaces. Now to think of, I haven't seen an FM synth in
years, on neither stage nor studio. The only place that I know of that the
technique is still used, outside of cheesy little computer sound cards, is in
Yamaha's DX expansion board for the S series. Other than that, a search of the
Musician's Friend web site shows no FM synths avaliable today. Musicians, as a
group, simply don't want them.

If someone wanted to bring one of those ****y sounding FM synths into my
studio, I'd stop them at the door, grab it from them, throw it into the parking
lot, and set it on fire! Simply put, they were about as musically palatable as
an all banjo and accordion band.

Stuart Welwood
http://members.aol.com/StuWelwood
  #45   Report Post  
Radium
 
Posts: n/a
Default Sick of sample-based "synthesis"!

Bad memories associated w/ FM synths???

FM synths are actually fresher than sample-playback synth. The key
word is "sample". Sample something and it will rot perceptibly. FM
synths freshly generate the tone as you hear it.

It is sample-playback synths that are "cheesy". What you describe in
"chessy sound cards" are PCM-sampled emulations of FM synth sounds. Of
course they will sound rotten. They are samples, not real FM sounds.
That is, the card does not generate those sounds, it only plays its
samples of them.


(StuWelwood) wrote in message ...

Please also explain why you think that FM synthesis is desirable at all. Most
musicians found that FM synthesizers were thin sounding and tended to have less
than intuitive user interfaces. Now to think of, I haven't seen an FM synth in
years, on neither stage nor studio. The only place that I know of that the
technique is still used, outside of cheesy little computer sound cards, is in
Yamaha's DX expansion board for the S series. Other than that, a search of the
Musician's Friend web site shows no FM synths avaliable today. Musicians, as a
group, simply don't want them.

If someone wanted to bring one of those ****y sounding FM synths into my
studio, I'd stop them at the door, grab it from them, throw it into the parking
lot, and set it on fire! Simply put, they were about as musically palatable as
an all banjo and accordion band.

Stuart Welwood
http://members.aol.com/StuWelwood


  #46   Report Post  
Allan Herriman
 
Posts: n/a
Default Sick of sample-based "synthesis"!

On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:

In article , Allan Herriman at
wrote on 10/24/2003 01:37:

On Thu, 23 Oct 2003 23:26:10 -0400, robert bristow-johnson
wrote:

In article
, Radium at
wrote on 10/23/2003 22:45:

robert bristow-johnson wrote in message
...
how do you generate the sinusoids that get modulated in FM without some
sorta wavetable? you ain't gonna compute them from a power series on the
fly are you?

"compute them from a power series on the fly"

often math libraries used by higher level languages like C or programs like
Excel or Matlab or Mathmatica use some kinda power series to do
trancendental functions (of which sin() or cos() belong). i suppose if one
were not to use wavetables or the CORDIC (there are little problems with
using CORDIC for FM, Allen, but they are certainly surmountable),


I wasn't aware of problems, except for the strange format that CORDIC
uses for angles (which makes adding phases interesting). Is that what
you meant?


i think so (not exactly sure what you mean, Allan). it's that for arbitrary
and time-variant fundamental frequency, w0 (which is a staple for a music
synth), it's not real easy to compute the sin(w0*T) and cos(w0*T) quickly
without table lookup in that operation. the bit-by-bit representation of
the sin(delta) cos(delta) that CORDIC (and similar) operations do, is in my
opinion, not very fast in comparison to doing it all with wavetables.

but i dunno if we be talking about the same thing.


Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.

Regards,
Allan.
  #47   Report Post  
Allan Herriman
 
Posts: n/a
Default Sick of sample-based "synthesis"!

On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:

In article , Allan Herriman at
wrote on 10/24/2003 01:37:

On Thu, 23 Oct 2003 23:26:10 -0400, robert bristow-johnson
wrote:

In article
, Radium at
wrote on 10/23/2003 22:45:

robert bristow-johnson wrote in message
...
how do you generate the sinusoids that get modulated in FM without some
sorta wavetable? you ain't gonna compute them from a power series on the
fly are you?

"compute them from a power series on the fly"

often math libraries used by higher level languages like C or programs like
Excel or Matlab or Mathmatica use some kinda power series to do
trancendental functions (of which sin() or cos() belong). i suppose if one
were not to use wavetables or the CORDIC (there are little problems with
using CORDIC for FM, Allen, but they are certainly surmountable),


I wasn't aware of problems, except for the strange format that CORDIC
uses for angles (which makes adding phases interesting). Is that what
you meant?


i think so (not exactly sure what you mean, Allan). it's that for arbitrary
and time-variant fundamental frequency, w0 (which is a staple for a music
synth), it's not real easy to compute the sin(w0*T) and cos(w0*T) quickly
without table lookup in that operation. the bit-by-bit representation of
the sin(delta) cos(delta) that CORDIC (and similar) operations do, is in my
opinion, not very fast in comparison to doing it all with wavetables.

but i dunno if we be talking about the same thing.


Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.

Regards,
Allan.
  #48   Report Post  
robert bristow-johnson
 
Posts: n/a
Default Sick of sample-based "synthesis"!

In article , Allan Herriman at
lid wrote on 10/26/2003 19:20:

On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:

....

but i dunno if we be talking about the same thing.


Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.


at the risk of exposing my ignorance, let's see if we are or not:

i remember looking at Ray Andraka's pages long ago and, given possible
semantic differences, i thought it was the same as what i might do in
similar circumstances.

let's compute the cos(theta) and sin(theta) for some theta where

0 = theta pi/2

represented as an unsigned, fixed-point, N bit integer

M = 2^N * theta/(pi/2)

so we're computing cos(pi/2 * M/2^N) and sin(pi/2 * M/2^N).

for the nth bit in M, you have two table entries:

a[n] = cos(pi/2 * 2^(n-N))
b[n] = sin(pi/2 * 2^(n-N))

now, probably starting with the (N-1)th bit, for each bit that is 1, the
complex number exp(j*phi[n]) is updated:

exp(j*phi[N]) = 1 + j*0

n = N-1

while (n = 0)
{
if ((M BITWIZE_AND 2^n) 0)
{
exp(j*phi[n]) = (a[n] + j*b[n]) * exp(j*phi[n+1])
}

n = n-1
}

where the complex exp multiplication is:


Re{exp(j*phi[n])} = a[n]*Re{exp(j*phi[n+1])} - b[n]*Im{exp(j*phi[n+1])}

Im{exp(j*phi[n])} = a[n]*Im{exp(j*phi[n+1])} + b[n]*Re{exp(j*phi[n+1])}



except for the roundoff in the a[n] and b[n] coefs and for the roundoff in
the real and imag parts of exp(j*phi[n]) that happens each iteration, this
method is exact and the result is


exp(j*phi[0]) = exp(j*theta)

or cos(theta) = Re{exp(j*phi[0])}

sin(theta) = Im{exp(j*phi[0])}

when we're all done.

this can be done in reverse, sorta to compute the arccos() or arcsin() or
arctan() of a number, too, because sin() and cos() and tan() are monotonic
increasing or decreasing in that region.

is this what you mean, Allan? if it is, i can't see it as fast as table
lookup and interpolation, with a phase accumulator for computing a
sinusoidal signal. can it be?


r b-j


  #49   Report Post  
robert bristow-johnson
 
Posts: n/a
Default Sick of sample-based "synthesis"!

In article , Allan Herriman at
lid wrote on 10/26/2003 19:20:

On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:

....

but i dunno if we be talking about the same thing.


Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.


at the risk of exposing my ignorance, let's see if we are or not:

i remember looking at Ray Andraka's pages long ago and, given possible
semantic differences, i thought it was the same as what i might do in
similar circumstances.

let's compute the cos(theta) and sin(theta) for some theta where

0 = theta pi/2

represented as an unsigned, fixed-point, N bit integer

M = 2^N * theta/(pi/2)

so we're computing cos(pi/2 * M/2^N) and sin(pi/2 * M/2^N).

for the nth bit in M, you have two table entries:

a[n] = cos(pi/2 * 2^(n-N))
b[n] = sin(pi/2 * 2^(n-N))

now, probably starting with the (N-1)th bit, for each bit that is 1, the
complex number exp(j*phi[n]) is updated:

exp(j*phi[N]) = 1 + j*0

n = N-1

while (n = 0)
{
if ((M BITWIZE_AND 2^n) 0)
{
exp(j*phi[n]) = (a[n] + j*b[n]) * exp(j*phi[n+1])
}

n = n-1
}

where the complex exp multiplication is:


Re{exp(j*phi[n])} = a[n]*Re{exp(j*phi[n+1])} - b[n]*Im{exp(j*phi[n+1])}

Im{exp(j*phi[n])} = a[n]*Im{exp(j*phi[n+1])} + b[n]*Re{exp(j*phi[n+1])}



except for the roundoff in the a[n] and b[n] coefs and for the roundoff in
the real and imag parts of exp(j*phi[n]) that happens each iteration, this
method is exact and the result is


exp(j*phi[0]) = exp(j*theta)

or cos(theta) = Re{exp(j*phi[0])}

sin(theta) = Im{exp(j*phi[0])}

when we're all done.

this can be done in reverse, sorta to compute the arccos() or arcsin() or
arctan() of a number, too, because sin() and cos() and tan() are monotonic
increasing or decreasing in that region.

is this what you mean, Allan? if it is, i can't see it as fast as table
lookup and interpolation, with a phase accumulator for computing a
sinusoidal signal. can it be?


r b-j


  #50   Report Post  
Jerry Avins
 
Posts: n/a
Default Sick of sample-based "synthesis"!

robert bristow-johnson wrote:

In article , Allan Herriman at
lid wrote on 10/26/2003 19:20:


On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:


...

but i dunno if we be talking about the same thing.


Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.



at the risk of exposing my ignorance, let's see if we are or not:

i remember looking at Ray Andraka's pages long ago and, given possible
semantic differences, i thought it was the same as what i might do in
similar circumstances.

let's compute the cos(theta) and sin(theta) for some theta where

0 = theta pi/2

represented as an unsigned, fixed-point, N bit integer

M = 2^N * theta/(pi/2)

so we're computing cos(pi/2 * M/2^N) and sin(pi/2 * M/2^N).

for the nth bit in M, you have two table entries:

a[n] = cos(pi/2 * 2^(n-N))
b[n] = sin(pi/2 * 2^(n-N))

now, probably starting with the (N-1)th bit, for each bit that is 1, the
complex number exp(j*phi[n]) is updated:

exp(j*phi[N]) = 1 + j*0

n = N-1

while (n = 0)
{
if ((M BITWIZE_AND 2^n) 0)
{
exp(j*phi[n]) = (a[n] + j*b[n]) * exp(j*phi[n+1])
}

n = n-1
}

where the complex exp multiplication is:


Re{exp(j*phi[n])} = a[n]*Re{exp(j*phi[n+1])} - b[n]*Im{exp(j*phi[n+1])}

Im{exp(j*phi[n])} = a[n]*Im{exp(j*phi[n+1])} + b[n]*Re{exp(j*phi[n+1])}



except for the roundoff in the a[n] and b[n] coefs and for the roundoff in
the real and imag parts of exp(j*phi[n]) that happens each iteration, this
method is exact and the result is


exp(j*phi[0]) = exp(j*theta)

or cos(theta) = Re{exp(j*phi[0])}

sin(theta) = Im{exp(j*phi[0])}

when we're all done.

this can be done in reverse, sorta to compute the arccos() or arcsin() or
arctan() of a number, too, because sin() and cos() and tan() are monotonic
increasing or decreasing in that region.

is this what you mean, Allan? if it is, i can't see it as fast as table
lookup and interpolation, with a phase accumulator for computing a
sinusoidal signal. can it be?


r b-j



Is my dogged mind barking up the wrong tree? When computing sine waves,
It's rarely necessary to compute sin(x) from scratch. It's enough to
compute sin(x+d) and cos(x+d) given sin(x) and cos(x). That can be
pretty east if d is small enough, and smaller is usually better.

With Swiss cheese, the opposite is said to be true: the bigger the
holes, the better the cheese. One can carry this to a ridiculous
extreme, though.

Jerry
--
Engineering is the art of making what you want from things you can get.
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ



  #51   Report Post  
Jerry Avins
 
Posts: n/a
Default Sick of sample-based "synthesis"!

robert bristow-johnson wrote:

In article , Allan Herriman at
lid wrote on 10/26/2003 19:20:


On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:


...

but i dunno if we be talking about the same thing.


Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.



at the risk of exposing my ignorance, let's see if we are or not:

i remember looking at Ray Andraka's pages long ago and, given possible
semantic differences, i thought it was the same as what i might do in
similar circumstances.

let's compute the cos(theta) and sin(theta) for some theta where

0 = theta pi/2

represented as an unsigned, fixed-point, N bit integer

M = 2^N * theta/(pi/2)

so we're computing cos(pi/2 * M/2^N) and sin(pi/2 * M/2^N).

for the nth bit in M, you have two table entries:

a[n] = cos(pi/2 * 2^(n-N))
b[n] = sin(pi/2 * 2^(n-N))

now, probably starting with the (N-1)th bit, for each bit that is 1, the
complex number exp(j*phi[n]) is updated:

exp(j*phi[N]) = 1 + j*0

n = N-1

while (n = 0)
{
if ((M BITWIZE_AND 2^n) 0)
{
exp(j*phi[n]) = (a[n] + j*b[n]) * exp(j*phi[n+1])
}

n = n-1
}

where the complex exp multiplication is:


Re{exp(j*phi[n])} = a[n]*Re{exp(j*phi[n+1])} - b[n]*Im{exp(j*phi[n+1])}

Im{exp(j*phi[n])} = a[n]*Im{exp(j*phi[n+1])} + b[n]*Re{exp(j*phi[n+1])}



except for the roundoff in the a[n] and b[n] coefs and for the roundoff in
the real and imag parts of exp(j*phi[n]) that happens each iteration, this
method is exact and the result is


exp(j*phi[0]) = exp(j*theta)

or cos(theta) = Re{exp(j*phi[0])}

sin(theta) = Im{exp(j*phi[0])}

when we're all done.

this can be done in reverse, sorta to compute the arccos() or arcsin() or
arctan() of a number, too, because sin() and cos() and tan() are monotonic
increasing or decreasing in that region.

is this what you mean, Allan? if it is, i can't see it as fast as table
lookup and interpolation, with a phase accumulator for computing a
sinusoidal signal. can it be?


r b-j



Is my dogged mind barking up the wrong tree? When computing sine waves,
It's rarely necessary to compute sin(x) from scratch. It's enough to
compute sin(x+d) and cos(x+d) given sin(x) and cos(x). That can be
pretty east if d is small enough, and smaller is usually better.

With Swiss cheese, the opposite is said to be true: the bigger the
holes, the better the cheese. One can carry this to a ridiculous
extreme, though.

Jerry
--
Engineering is the art of making what you want from things you can get.
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ

  #52   Report Post  
Allan Herriman
 
Posts: n/a
Default Sick of sample-based "synthesis"!

On Mon, 27 Oct 2003 00:49:00 -0500, Jerry Avins wrote:

robert bristow-johnson wrote:

In article , Allan Herriman at
lid wrote on 10/26/2003 19:20:


On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:


...

but i dunno if we be talking about the same thing.

Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.



at the risk of exposing my ignorance, let's see if we are or not:

i remember looking at Ray Andraka's pages long ago and, given possible
semantic differences, i thought it was the same as what i might do in
similar circumstances.

let's compute the cos(theta) and sin(theta) for some theta where

0 = theta pi/2

represented as an unsigned, fixed-point, N bit integer

M = 2^N * theta/(pi/2)

so we're computing cos(pi/2 * M/2^N) and sin(pi/2 * M/2^N).

for the nth bit in M, you have two table entries:

a[n] = cos(pi/2 * 2^(n-N))
b[n] = sin(pi/2 * 2^(n-N))

now, probably starting with the (N-1)th bit, for each bit that is 1, the
complex number exp(j*phi[n]) is updated:

exp(j*phi[N]) = 1 + j*0

n = N-1

while (n = 0)
{
if ((M BITWIZE_AND 2^n) 0)
{
exp(j*phi[n]) = (a[n] + j*b[n]) * exp(j*phi[n+1])
}

n = n-1
}

where the complex exp multiplication is:


Re{exp(j*phi[n])} = a[n]*Re{exp(j*phi[n+1])} - b[n]*Im{exp(j*phi[n+1])}

Im{exp(j*phi[n])} = a[n]*Im{exp(j*phi[n+1])} + b[n]*Re{exp(j*phi[n+1])}



except for the roundoff in the a[n] and b[n] coefs and for the roundoff in
the real and imag parts of exp(j*phi[n]) that happens each iteration, this
method is exact and the result is


exp(j*phi[0]) = exp(j*theta)

or cos(theta) = Re{exp(j*phi[0])}

sin(theta) = Im{exp(j*phi[0])}

when we're all done.

this can be done in reverse, sorta to compute the arccos() or arcsin() or
arctan() of a number, too, because sin() and cos() and tan() are monotonic
increasing or decreasing in that region.

is this what you mean, Allan? if it is, i can't see it as fast as table
lookup and interpolation, with a phase accumulator for computing a
sinusoidal signal. can it be?


r b-j



Is my dogged mind barking up the wrong tree? When computing sine waves,
It's rarely necessary to compute sin(x) from scratch. It's enough to
compute sin(x+d) and cos(x+d) given sin(x) and cos(x). That can be
pretty east if d is small enough, and smaller is usually better.

With Swiss cheese, the opposite is said to be true: the bigger the
holes, the better the cheese. One can carry this to a ridiculous
extreme, though.

Jerry



Allan wrote:
.... In hardware, this often uses less chip area than look up tables,
particularly for "high quality" signals.

Allan wrote:
... a purely hardware based implementation ...


Yes, we are talking about different things. CORDIC allows those
multiplications to be done with shifts and adds.
These are a lot smaller and faster than regular integer multipliers
*if you are making your own hardware* (i.e. I'm not talking about
using a DSP chip). Plus the loop can be unrolled and made parallel if
you want lots of speed.
The area of the (unrolled, parallel) CORDIC sinusoid generator
increases by (I think) O(n) with the bit depth of the angle arg,
whereas the area of the pure lookup table increases by O(exp(n)). The
speed is (roughly) O(1) in both cases.


Of course, on many of the modern FPGA families (Virtex2, Stratix,
etc.) there are lots of multipliers just sitting around doing nothing,
so perhaps I should rethink all this.

Regards,
Allan.
  #53   Report Post  
Allan Herriman
 
Posts: n/a
Default Sick of sample-based "synthesis"!

On Mon, 27 Oct 2003 00:49:00 -0500, Jerry Avins wrote:

robert bristow-johnson wrote:

In article , Allan Herriman at
lid wrote on 10/26/2003 19:20:


On Fri, 24 Oct 2003 19:45:55 -0400, robert bristow-johnson
wrote:


...

but i dunno if we be talking about the same thing.

Perhaps we're not. I thought CORDIC was pretty fast in a purely
hardware based implementation.



at the risk of exposing my ignorance, let's see if we are or not:

i remember looking at Ray Andraka's pages long ago and, given possible
semantic differences, i thought it was the same as what i might do in
similar circumstances.

let's compute the cos(theta) and sin(theta) for some theta where

0 = theta pi/2

represented as an unsigned, fixed-point, N bit integer

M = 2^N * theta/(pi/2)

so we're computing cos(pi/2 * M/2^N) and sin(pi/2 * M/2^N).

for the nth bit in M, you have two table entries:

a[n] = cos(pi/2 * 2^(n-N))
b[n] = sin(pi/2 * 2^(n-N))

now, probably starting with the (N-1)th bit, for each bit that is 1, the
complex number exp(j*phi[n]) is updated:

exp(j*phi[N]) = 1 + j*0

n = N-1

while (n = 0)
{
if ((M BITWIZE_AND 2^n) 0)
{
exp(j*phi[n]) = (a[n] + j*b[n]) * exp(j*phi[n+1])
}

n = n-1
}

where the complex exp multiplication is:


Re{exp(j*phi[n])} = a[n]*Re{exp(j*phi[n+1])} - b[n]*Im{exp(j*phi[n+1])}

Im{exp(j*phi[n])} = a[n]*Im{exp(j*phi[n+1])} + b[n]*Re{exp(j*phi[n+1])}



except for the roundoff in the a[n] and b[n] coefs and for the roundoff in
the real and imag parts of exp(j*phi[n]) that happens each iteration, this
method is exact and the result is


exp(j*phi[0]) = exp(j*theta)

or cos(theta) = Re{exp(j*phi[0])}

sin(theta) = Im{exp(j*phi[0])}

when we're all done.

this can be done in reverse, sorta to compute the arccos() or arcsin() or
arctan() of a number, too, because sin() and cos() and tan() are monotonic
increasing or decreasing in that region.

is this what you mean, Allan? if it is, i can't see it as fast as table
lookup and interpolation, with a phase accumulator for computing a
sinusoidal signal. can it be?


r b-j



Is my dogged mind barking up the wrong tree? When computing sine waves,
It's rarely necessary to compute sin(x) from scratch. It's enough to
compute sin(x+d) and cos(x+d) given sin(x) and cos(x). That can be
pretty east if d is small enough, and smaller is usually better.

With Swiss cheese, the opposite is said to be true: the bigger the
holes, the better the cheese. One can carry this to a ridiculous
extreme, though.

Jerry



Allan wrote:
.... In hardware, this often uses less chip area than look up tables,
particularly for "high quality" signals.

Allan wrote:
... a purely hardware based implementation ...


Yes, we are talking about different things. CORDIC allows those
multiplications to be done with shifts and adds.
These are a lot smaller and faster than regular integer multipliers
*if you are making your own hardware* (i.e. I'm not talking about
using a DSP chip). Plus the loop can be unrolled and made parallel if
you want lots of speed.
The area of the (unrolled, parallel) CORDIC sinusoid generator
increases by (I think) O(n) with the bit depth of the angle arg,
whereas the area of the pure lookup table increases by O(exp(n)). The
speed is (roughly) O(1) in both cases.


Of course, on many of the modern FPGA families (Virtex2, Stratix,
etc.) there are lots of multipliers just sitting around doing nothing,
so perhaps I should rethink all this.

Regards,
Allan.
  #60   Report Post  
StuWelwood
 
Posts: n/a
Default Sick of sample-based "synthesis"!

From: Laurence Payne
Date: 10/29/2003 12:16 PM Mountain Standard Time
Message-id:

On 27 Oct 2003 15:39:25 GMT,
(StuWelwood) wrote:

Exactly! But this still begs the question of why anyone would want FM

synthesis
- no matter how "fresh" it is. Musician's as a group, as evidenced by the
almost total disappearance of FM synthesizers in the market place, have

found
it to be inadequate. Until someone answers that question, then all

discussion
of how to accomplish it is moot. So, WHY FM?


I don't recall petitioning Yamaha back in the early 70s: - "Hey! This
guy Chowning at Stanford U.is doing neat stuff with FM synthesis!
When can I have it in an affordable keyboard?" Or, a few years later
:- "I'm tired of this FM stuff! Give me a sample player!".


That's exactly what musicians as a group said with their money.


We choose from what we're offered. I personally think the Yamaha SY77
and SY99 hybrid sample/FM synths were among the most playable
instruments I've owned.


Good for you. But a market of one isn't going to convince anyone to make FM
synthesizers. The fact is that both FM and sample player machines were
available at the same time. The consumers (musicians) bought far more sample
players than FM boxes. Most musicians found the FM sounds to be thin and less
than musically satisfying. FM sythesizers stopped selling and are no longer
available.

Other than your own personal preference, you haven't indicated why a musician
would want one. Being "playable" by you, doesn't even mean anything.

Stuart Welwood
http://members.aol.com/StuWelwood



  #61   Report Post  
StuWelwood
 
Posts: n/a
Default Sick of sample-based "synthesis"!

From: Laurence Payne
Date: 10/29/2003 12:16 PM Mountain Standard Time
Message-id:

On 27 Oct 2003 15:39:25 GMT,
(StuWelwood) wrote:

Exactly! But this still begs the question of why anyone would want FM

synthesis
- no matter how "fresh" it is. Musician's as a group, as evidenced by the
almost total disappearance of FM synthesizers in the market place, have

found
it to be inadequate. Until someone answers that question, then all

discussion
of how to accomplish it is moot. So, WHY FM?


I don't recall petitioning Yamaha back in the early 70s: - "Hey! This
guy Chowning at Stanford U.is doing neat stuff with FM synthesis!
When can I have it in an affordable keyboard?" Or, a few years later
:- "I'm tired of this FM stuff! Give me a sample player!".


That's exactly what musicians as a group said with their money.


We choose from what we're offered. I personally think the Yamaha SY77
and SY99 hybrid sample/FM synths were among the most playable
instruments I've owned.


Good for you. But a market of one isn't going to convince anyone to make FM
synthesizers. The fact is that both FM and sample player machines were
available at the same time. The consumers (musicians) bought far more sample
players than FM boxes. Most musicians found the FM sounds to be thin and less
than musically satisfying. FM sythesizers stopped selling and are no longer
available.

Other than your own personal preference, you haven't indicated why a musician
would want one. Being "playable" by you, doesn't even mean anything.

Stuart Welwood
http://members.aol.com/StuWelwood

  #64   Report Post  
StuWelwood
 
Posts: n/a
Default Sick of sample-based "synthesis"!

From: Laurence Payne
Date: 10/30/2003 5:55 PM Mountain Standard Time
Message-id:

On 30 Oct 2003 16:46:15 GMT,
(StuWelwood) wrote:

Good for you. But a market of one isn't going to convince anyone to make FM
synthesizers. The fact is that both FM and sample player machines were
available at the same time. The consumers (musicians) bought far more sample
players than FM boxes. Most musicians found the FM sounds to be thin and

less
than musically satisfying. FM sythesizers stopped selling and are no longer
available.



Other than your own personal preference, you haven't indicated why a

musician
would want one. Being "playable" by you, doesn't even mean anything.


It would mean something to a musician. Maybe with a little
explanation :-)

In a live playing situation you have to get a lot of mileage out of
each patch. None of this sample-juggling between "Trumpet,
mezzo-forte, soft attack, Trumpet, forte, hard attack.... etc. etc.
available in the extended sample sets we use for recording.

A sound near-enough like a trumpet, with considerable control of
attack and brilliance via. key velocity, is very useful - very
"playable". FM synthesis, maybe coupled with a sampled attack, does
this very well.


Then is what you are really looking for a synthesizer that responds "well" to
real time changes by the musician? Does that make FM a requirement? I don't
think so, but I certainly agree that sample players can be mostly static
sounding without considerable care in production, design, and programming
effort.

The question that now comes to mind is whether there are any synthesizers now
being produced that offer enough real time control to satisfy your needs. My
trusty old Korg M1 (sample player) certainly doesn't fit that description, nor
does my new Emu Virtuoso 2000. The nearest that I have experienced to what you
might find acceptable is a guitar synthesizer. It appears that, in order to
satisfy guitarists, sample playing guitar synthesizers are built to be more
real time controllable. It also helps to have a programmable expression pedal.
None of this helps a keyboardist, however.

Not knowing your level of experience on keyboard, I'm going to ask what may be
stupid question. Have you tried a Yamaha CS6X?
http://news.harmony-central.com/Newp...maha/CS6X.html

Stuart Welwood
http://members.aol.com/StuWelwood


  #65   Report Post  
StuWelwood
 
Posts: n/a
Default Sick of sample-based "synthesis"!

From: Laurence Payne
Date: 10/30/2003 5:55 PM Mountain Standard Time
Message-id:

On 30 Oct 2003 16:46:15 GMT,
(StuWelwood) wrote:

Good for you. But a market of one isn't going to convince anyone to make FM
synthesizers. The fact is that both FM and sample player machines were
available at the same time. The consumers (musicians) bought far more sample
players than FM boxes. Most musicians found the FM sounds to be thin and

less
than musically satisfying. FM sythesizers stopped selling and are no longer
available.



Other than your own personal preference, you haven't indicated why a

musician
would want one. Being "playable" by you, doesn't even mean anything.


It would mean something to a musician. Maybe with a little
explanation :-)

In a live playing situation you have to get a lot of mileage out of
each patch. None of this sample-juggling between "Trumpet,
mezzo-forte, soft attack, Trumpet, forte, hard attack.... etc. etc.
available in the extended sample sets we use for recording.

A sound near-enough like a trumpet, with considerable control of
attack and brilliance via. key velocity, is very useful - very
"playable". FM synthesis, maybe coupled with a sampled attack, does
this very well.


Then is what you are really looking for a synthesizer that responds "well" to
real time changes by the musician? Does that make FM a requirement? I don't
think so, but I certainly agree that sample players can be mostly static
sounding without considerable care in production, design, and programming
effort.

The question that now comes to mind is whether there are any synthesizers now
being produced that offer enough real time control to satisfy your needs. My
trusty old Korg M1 (sample player) certainly doesn't fit that description, nor
does my new Emu Virtuoso 2000. The nearest that I have experienced to what you
might find acceptable is a guitar synthesizer. It appears that, in order to
satisfy guitarists, sample playing guitar synthesizers are built to be more
real time controllable. It also helps to have a programmable expression pedal.
None of this helps a keyboardist, however.

Not knowing your level of experience on keyboard, I'm going to ask what may be
stupid question. Have you tried a Yamaha CS6X?
http://news.harmony-central.com/Newp...maha/CS6X.html

Stuart Welwood
http://members.aol.com/StuWelwood


Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
BPM Studio, DMP Radio Automation, Jazler, Megamix, DJ all, all VSTI's,AKAI Sample CDs, other TEL General 0 January 1st 04 06:10 PM
Richman's ethical lapses Michael McKelvy Audio Opinions 9 December 12th 03 08:16 AM
stand alone hard disk system vs computer based system paul tumolo Pro Audio 7 December 7th 03 02:35 AM
Wanted!!! NY based Photographers Videographers Webmasters+3D Animators Modelers Wanted!!! Joe Donut Pro Audio 0 December 6th 03 12:50 AM
FA: Original New E-MU Sample Cd's Vintage World Orchestral Garry Pro Audio 0 September 1st 03 10:54 PM


All times are GMT +1. The time now is 10:58 PM.

Powered by: vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright İ2004-2024 AudioBanter.com.
The comments are property of their posters.
 

About Us

"It's about Audio and hi-fi"