T.R | Title | User | Personal Name | Date | Lines |
---|
424.2 | | CANYON::MOELLER | generic software nerd | Tue Jul 08 1986 14:36 | 7 |
| The latest (June) issue of Electronic Musician reviews a product
from Hybrid Arts called 'DX Driod'. LIST price $245. It apparently
will generate editable,saveable random patches for the entire DX
product line. You may not want to reinvent the wheel... especially
at that price...who pays list anymore?
karl moeller
|
424.4 | Mod you later | JON::LOW | La Rochefoucauld never lived in the Bronx | Tue Jul 08 1986 16:32 | 11 |
| There was an article in KEYBOARD some time ago (I will look it up
tonight) which had a PC-DOS BASIC program which plotted out the
waveform resulting from FM synthesis. I tried it on my Leading
Edge model D - for simple combinations it was interesting (how to
create sawtooth-like and squarewave-like waveforms), but for
complex combinations of modulators and carriers, it was difficult
to attach any "meaning" to the resulting waveform.
But it is fun to try.
David
|
424.5 | F(M) = ? | BARNUM::RHODES | | Tue Jul 08 1986 16:43 | 22 |
| re: .2
I will look into the DX Droid. The tool I had in mind wouldn't
actually create patches, just perform the FM math on sine waves
stored in arrays, and plot the resulting (output) array. Could
be done on a VAX in PASCAL in less than a day if I knew the math.
I have already written a program that accepts different frequency
ratios as input, performs convolution on the two sine waves with
those frequency ratios, and plots the results. I could salvage the
input and the plotting routines, and just substitute an FM algorithm
in place of the convolution algorithm.
This would allow the user to enter the freq ratio of the carrier,
the freq ratio of its modulator, and then plot the resulting waveform
right before your very eyes. A good program to start with.
Simple with the math. Difficult without.
Todd.
|
424.6 | The case of the missing math continues... | BARNUM::RHODES | | Tue Jul 08 1986 18:55 | 10 |
| Re: .4
Sounds like it may contain what I am looking for. Could you possibly
send me a copy of the article via internal mail? Mailstop is:
MR01-2/G6
Thanks,
Todd Rhodes.
|
424.7 | Theory of FM | HYDRA::AURENZ | Scot Aurenz, Ltn2-2/h7, 226-6342 | Tue Jul 08 1986 22:58 | 129 |
|
> One such tool that I have in mind, is a waveform "synthesizer" that
> plots the waveform resulting from a particular DX100/DX27/DX21 algorithm
>
> What I need for this tool is the mathematical formula for Yamaha's
> FM algorithm describing the output function for a carrier modulated
> by a modulator.
Below is a brief introduction to the mathematics of frequency
modulation, as you requested. At the same time though, I want
to note that the time-domain waveform actually gives you very
little insight as to what the sound is like, and hence has
relatively little value as an instrument-design tool.
Furthermore, while FM is a well-known process needing only
a few standard parameters to describe the output waveforms,
mapping the parameters used below onto Dx7 parameters
(output level = 0..99, feedback = 1..7, and so on) is
another matter entirely. Data on this is a bit harder to come by.
That which exists has been measured by individuals, and not
released by Yamaha.
My suggestion is that one's time is better spent trying to
understand the behavior of FM in general, rather than trying
to simulate a Dx7. Use the formulas to explore the effects of
varying different parameters. Understand the relationships
between them, and build up a "heuristic understanding" for
yourself. THEN, go to the Dx and try to re-create what you've
seen in your experiments.
Scot
-----------------------------------------------------------
And now, intro to time-domain relationships in FM:
To be precise, FM is a form of ANGLE MODULATION, in which
the phase angle of a signal is modulated (instead of its
amplitude, for example).
An angle-modulated signal can be described by the formula
x(t) = A cos(w*t + P(t))
where A is the amplitude of the carrier, w is the radian
frequency of the carrier (w = 2*pi*frequency-in-hertz),
and P(t) is the phase of the modulating signal, which
varies over time.
The phase of x(t) at any instant in time is
@ = w*t + P(t) "@" is supposed to be a "theta"
and so the frequency at any instant in time is the derivative
of this:
d@ dP
-- = w + --
dt dt
For frequency modulation,
dP/dt = 2*pi*Fd * m(t)
where Fd (read "F sub d") is called the "frequency deviation
constant" and is measured in Hz. (this would be much easier
if I could use a few subscripts or something!)
m(t), as you probably guessed, is your modulating signal, and
can be anything. Fd, then is simply the amplitude of this signal.
In general, then, we have
P(t) = 2*pi*Fd * integral "over t" ( m(q) dq )
For those confused by this last statement: remember that since
"m" here is not necessarily periodic, we integrate over t,
(so we'll get a function of t) using "q" as a dummy-variable-
of-integration.
And we plug this into the basic equation given at the start:
x(t) = A cos[ w*t + P(t) ]
If the modulating signal is also a sinusoid, we can derive
a specific formula:
m(t) = cos(Wm*t) (that is, "cosine omega sub m times t")
Wm = 2*pi*Fm
P(t) = 2*pi*Fd * integral from 0 to t ( cos (Wm*q) dq )
Since m(t) is periodic, we now have a definite integral.
Solving this yields
2*pi*Fd
P(t) = ------- sin (Wm * t)
2*pi*Fm
Fd
= ---- sin (2*pi*Fm * t)
Fm
Which again, can be plugged into the basic equation.
Now what you will really want is the frequency-domain analysis,
which is a bit more involved, and even harder to notate
with an ASCII terminal. The references below can give you
much useful background here.
----------------------------------------------------------------
Here are a few references which can explain FM in more detail:
Computer Music - Synthesis, Composition, and Performance
Dodge, C., and Jerse, T.
Schirmer Books, 1985
"A Derivation of the Spectrum of FM with a Complex Modulating Wave"
LeBrun, M.
Computer Music Journal, Vol 1, #4, 1977
(this is probably the article Tom alluded to in .1)
Principles of Communications - Systems, Modulation, and Noise
Ziemer, R.E, and Tranter, W. H.
Houghton Mifflin, 1976
|
424.8 | Phase I completed | BARNUM::RHODES | | Thu Jul 17 1986 17:39 | 57 |
| Thank you David and Scot for your extra efforts. Between referencing
many text books and the KEYBOARD program that David sent me, I have
managed to create a tool on the VAX that accepts frequency ratios
and output levels for both a carrier and a modulator, and plots
the resulting waveform using character graphics. Oh yea, it also
plots the additive waveform (treating both operators as carriers)
in a seperate file. Of course, all of this assumes the feedback
level is zero.
The next step:
The next step is to allow for a multiple modulator/single carrier
configuration.
Once this is accomplished, I can go for broke, and change the tool to
be specific to the DX100/27/21 family by having it take the following
information as input:
a. Algorithm number
b. Feedback amount
c. Operator 1 freq ratio
d. Operator 1 output level
e. Operator 2 freq ratio
f. Operator 2 output level
g. Operator 3 freq ratio
h. Operator 3 output level
i. Operator 4 freq ratio
j. Operator 4 output level
I believe that I currently have the operator output levels and
frequency ratios of my program to the same specs as Yamaha's, as
long as Yamaha sticks with a linear scheme (IE: an output level
of 75 in my program is defined as an output level of 75 on the DX.)
I will verify this empirically with an oscilloscope.
Problems:
1. How does feedback within 1 operator (either carrier or
modulator) affect the signal, and to what degree (percentage-
wise) for a given 0 to 7 value? I will attack this by studying
the mathematical effect of an operator modulating itself,
and measure the percentage of modulation on the DX (via
oscilloscope) for given feedback values. Any other ideas?
2. As stated by Scot in an earlier reply, complex waveforms tend
to become meaningless when viewed in the time domain. This
is a problem. The proposed solution for this one is to
get hold of an FFT routine, link it in, and plot the spectrum
of the waveforms. I plan on looking into this too. Any
other ideas here either?
Todd.
|
424.9 | Idea: Software selection of 4 or 6 operators | PIXEL::COHEN | Richard Cohen | Thu Jul 17 1986 17:45 | 8 |
| How about extending the tool to accept as input the 5th and 6th
operators of a DX7/TX7/Tx rack mount ? Shouldn't be too hard, and they
can be ignored when programming 4 operator synths. (The algorithms may
not match up, however. For instance, the feedback loops may be on
different operators).
- Rick
|
424.10 | On pretty pictures and cognitive confusion | JON::LOW | La Rochefoucauld never lived in the Bronx | Thu Jul 17 1986 18:26 | 19 |
|
Re .8 - FFT of waveforms
I have looked at real-time 1024 point FFT's (using SOUND CAP on
my MacIntosh) of DX7, Top 40, and Red Sox Ballgame sounds. They
do not seem to have any more "meaning" than do graphical waveforms,
although I am not sure in what metric I am looking for "meaning".
I suspect this has a lot to do with the undeniable fact that sound,
like vision, is perceptually interpreted, and the mind supplies
the equivalence of "hidden lines" - experientially determined
rules of good form, which guide and structure our interpretation
of the sounds we hear.
But seeing those FFT bar-code graphs flash out on the screen is
a hell of a lot of fun.
David
|
424.11 | Free (DEC) signal analysis SW | ORACLE::WATERS | | Thu Jul 17 1986 18:47 | 57 |
| Thought I might point out some software of interest:
Since you are working on a VAX, you might consider using DEC software
packages to provide some of the tools you need. If you have access
to a VAXstation II or --/GPX, then you can use VAXlab software,
called LabStar at the moment. VAXlab is a sort-of-bundled system
including a VAXstation II, 50 KHz A/D, 300 KHz D/A, a clock/timer
for these, parallel DMA I/O, and parallel I/O control lines. The
software package consists of MicroVMS, GKS, and LabStar. I just
installed the GKS and LabStar software on my workstation, and a
friend is going to loan me an AXV11-C 25 KHz A/D-D/A combo board,
which is supported in VAXlab but doesn't have the DMA capabilities
of the new A/D and D/A boards. I have no time to play with this
stuff at the moment, and I'm about to go on vacation. But I sure
plan to get to it before the year is out.
Now, about the LabStar software... I printed out the documentation
set (two binders _full_, plus GKS, hardware, uVMS doc., etc.) and
gave it a once-over. What you get is a big set of library routines
to help in talking to the signal acquisition and output boards,
a small set of routines for data analysis, and a modest library
for data display. Also included is an interactive shell that lets
you run signal acquisitions, analysis, and output from interactive
commands rather than writing a big program to do it all via library
calls. I'm not going to check right now, but the analysis routines
include things like real and complex FFT, power spectrum, phase
angle extraction, a few boring digital filters (mainly for noisy
data smoothing, but I think there's one that can do FIR as well),
histogram, and correlation. But who cares--you can write your own
filtering and convolution routines easily enough. The graphics
package includes stuff for 2-D, 3-D, and contour plotting.
Since they use GKS as the basis for the graphics library, I don't
think you _have_ to have a VAXstation to use VAXlab. A VT240 or
VT125 with Regis graphics may do it. You do need a two-disk
MicroVAX to have a practical system with A/D or D/A devices. If
you skip the signal I/O and just use the analysis and plotting
software, you might be able to use the package on a machoVAX. But
you'll probably have to do some hacking on the software installation
procedure.
Geez, I can't wait to get the A/D-D/A board, a little practice amp,
and 100 hours of free time to try this stuff out in my office.
Needless to say, I'm looking forward to applying these tools to
a sampling synth, in addition to analyzing my Yamaha gear. One
more comment: some guy on USENET said once that he had been
calibrating FM parameters for the Yamaha, and was going to write
a manual relating his findings. I can't remeber if he published
yet... can anyone else recall that posting?
Well, gotta get back to work. More power to you, Todd! Keep us
posted. And everyone, help yourself to the VAXLAB notes file
on PYRITE. The documentation is on-line, and prints on an LN01.
GW
|
424.12 | What, signal analysis on a GPX??? | CLULES::SPEED | Derek Speed, WS Tech Mktg | Fri Jul 18 1986 10:40 | 7 |
| This is somewhat unrelated, but if anyone gets any good images using
FFT displays, etc. which could be used for a VAXstation II/GPX demo,
let us over in Worksystems know. All flashy demos are kindly
accepted!!
Derek
|
424.13 | | BARNUM::RHODES | | Fri Jul 18 1986 12:46 | 30 |
| RE: .9
I will extend it to handle 6 operators. It looks like low overhead
to extend it from 4 to 6 (for phase II anyways, where the program
will be machine independent).
RE: .10
The output in spectrum form would only really be useful when comparing
it to the spectrum of a known instrument. This might become useful
when trying to emulate a specific sound/instrument. Of course the
spectrum of an instrument changes over time, which adds another
dimension of complexity.
RE: .11
I currently have access to spectrum analyzers, storage scopes, and
programmable waveform generators. I would probably rather use these
tools for the empirical aquisition/analysis, rather than take the
time to create my own Vax based analyzer. Let us know what kind
of goodies you come up with though!
I am *definitely* interested in the Usenet manual on Yamaha
Calibration. If anyone has any information at all regarding this,
I would be grateful if you could post it here.
Thanks for the encouragement...
Todd.
|
424.14 | progress | BARNUM::RHODES | | Mon Jul 28 1986 16:40 | 46 |
| Status update.
I have completed phase II of the tool. This will plot the waveform
of a "stack" of operators consisting of one carrier and up to
2,147,483,647 (Vax limit) modulators (this will become useful when
Yamaha upgrades the DX7 to more operators :-)). It also outputs
a "picture" of the stack in Yamaha block diagram form and labels
each operator with its inputted frequency ratio and amplitude.
Upon invocation, the program asks the user for the number of operators
in the stack. Then it asks for the freq_ratio and amplitude of
the carrier. Then it asks for the freq_ratio and amplitude of each
modulator, working "up the stack". Output is to a seperate file.
The output consists of a page of character graphics, and a page
containing the stack diagram.
I am currently working on implementing phase III, which is DX100/21/27
specific. I am having a problem with this, though. Maybe someone
can give me a hand here. For the following sub-algorithm, how is the
modulation of carrier described?
+-----+ +-----+
|mod1 | |mod2 |
| | | |
+-----+ +-----+
\ /
\ /
\ /
\ /
+-----+
|car. |
| |
+-----+
Would the effective modulation signal be the sum of the mod1 and
mod2 signals? (ie. Would the effective modulation signal be
(mod1_amplitude * sin(mod1_freq) + mod2_amplitude * sin(mod2_freq)) ?)
Any feedback would be appreciated.
One last thing, if anyone would like a copy of either the phaseI
or the phaseII programs, just let me know...
Todd.
|
424.15 | help! | BARNUM::RHODES | | Tue Jul 29 1986 14:37 | 26 |
| I have looked into the modulation problem described in .-1 last
nite. A semi-microscopic view of an operator uncovered the following
diagram:
in in
| |
v v
+-------+
|sin osc|
| | operator
| out |
+-------+
|
v
out
Can it be assumed that in the diagram in the previous reply, the
two modulators feed the lower operator through the two inputs shown
in the diagram above (ie. one modulator modulates the other
modulator's waveform), whereas when an operator is modulated by
just one modulator, this modulator modulates the sine wave of
the operator? And does this mean that the freq ratio of a carrier
that has two modulators feeding it is meaningless, since the carrier's
sine wave is not even fed into the carrier itself?
Todd the_confused.
|
424.16 | closing remarks | BAILEY::RHODES | | Mon Aug 25 1986 15:11 | 18 |
| Well, I have reached the point of diminishing returns on this project.
Edd Cote an myself dragged my DX-100 into the lab a couple of weeks ago
and took some data. It seems that the DX output level is not linear -
it doesn't look like its log either. WHAT IS IT???? Looks like
Yamaha is up to its usual "tricks" of discouraging anyone except Yamaha
from designing anything related to a Yamaha product. They rigged the
software so that the "adjustable" output of each operator is "Yamaha taper".
Operator feedback is also difficult to model and affects the resulting
waveform in an almost unpredictable mannor. Seems to introduce lots of
HF harmonics and distorts the LF waveshape as well.
So, I have shelved this project. The phase I and II programs work fine
and are interesting, but will never be more than tinkering tools. Not
much practical use.
Todd. (who_hates_closed_architectures_or_closed_anythings)
|
424.17 | 4-Op RPG | JAWS::COTE | My, you like nice today, Mrs. Cleaver. | Fri Nov 14 1986 16:18 | 23 |
| This may not exactly qualify as a "tool" per se, but I'm sure it
will generate some interesting DX patches...
I just whipped up a "random patch generator" for 4-op DX synths.
In order to keep the patches from *all* being to wild I took some
liberties with the definition of the word "random"....
Pitch Envelope Data is random only if turned on. If you don't
care to have your patches wandering from C5 to C1, you don't
have to.
Same thing with keyboard scaling. Only random if turned on.
Operator frequencies are random, but weighted towards whole
numbers by about 2:1. (Only frequencies used by Yamaha will
show up at any rate.)
Big Drawback - no synth interface, you input the parameters manually.
Might be fun. Kinda like letting the cat do the editting.
Edd
|
424.18 | So?..... | FLASH1::GOLDSTEIN | Outrageousness!!? Just a way to WAKE PEOPLE UP! | Mon Nov 17 1986 10:39 | 4 |
|
Sounds Great,,, Where is it?
|
424.19 | Easy as 1 2 3!!! | JAWS::COTE | My, you like nice today, Mrs. Cleaver. | Mon Nov 17 1986 10:53 | 17 |
| It's sitting on the hard disk of my Rainbow.
I did on Lotus 1-2-3.
I discovered a couple of minor-type bugs over the weekend. Easy
to fix stuff like the range of certain parameters. (-3 to +3? 0
to 99? 0 to 15? 0 to 31?)
I'm also working on more "user-defined" parameters, where you can
pick an algorythm, frequency, ect. yourself *OR* leave it up to
the noise gods.
Got some "interesting" noises this weekend....
Anyone know how to tansfer .WKS files between systems?
Edd
|