U.S. patent number 3,809,788 [Application Number 05/298,365] was granted by the patent office on 1974-05-07 for computor organ using parallel processing.
This patent grant is currently assigned to Nippon Gakki Seizo Kabushiki Kaisha. Invention is credited to Ralph Deutsch.
United States Patent |
3,809,788 |
Deutsch |
May 7, 1974 |
COMPUTOR ORGAN USING PARALLEL PROCESSING
Abstract
Parallel processing is used in a computor organ of the type
wherein musical notes are produced by computing at regular time
intervals the amplitudes at successive points of a musical
waveshape, and converting the amplitudes to tones as the
computations are carried out. Each amplitude is evaluated by
concurrently calculating in parallel channels different subsets of
the Fourier components for the same point, then combining the
components to obtain the waveshape amplitude. In a typical
embodiment, low order harmonic components are calculated in one
channel and high order harmonics in another channel; in another
embodiment, odd and even harmonics are calculated in separate,
parallel channels. A recirculating shift register, shifted in
unison with successive component calculations, advantageously
stores the harmonic coefficients used in the amplitude
calculations.
Inventors: |
Deutsch; Ralph (Sherman Oaks,
CA) |
Assignee: |
Nippon Gakki Seizo Kabushiki
Kaisha (Hamamatsu, JA)
|
Family
ID: |
23150188 |
Appl.
No.: |
05/298,365 |
Filed: |
October 17, 1972 |
Current U.S.
Class: |
84/608;
84/623 |
Current CPC
Class: |
G10H
7/105 (20130101) |
Current International
Class: |
G10H
7/10 (20060101); G10H 7/08 (20060101); G10h
001/06 (); G10h 005/02 () |
Field of
Search: |
;84/1.01,1.03,1.11,1.12,1.19-1.24 |
References Cited
[Referenced By]
U.S. Patent Documents
Primary Examiner: Wilkinson; Richard B.
Assistant Examiner: Witkowski; Stanley J.
Attorney, Agent or Firm: Flam & Flam
Claims
Intending to claim all novel, useful and unobvious features shown
or
1. In a muscial instrument of the type wherein the amplitudes of a
waveshape are computed for successive waveshape sample points at
certain regular time intervals from stored harmonic coefficient
values, each amplitude being computed by individually calculating
the constituent Fourier components of said waveshape, each Fourier
component being calculated by multiplying a trigonometric function
of the waveshape sample point by a harmonic coefficient value which
establishes the relative amplitude of that Fourier component, at
least some of said components being calculated sequentially, said
calculated components being combined to obtain the waveshape
amplitude at each sample point, musical notes being produced by
converting said computed waveshape amplitudes for successive sample
points to musical sounds as said computations are carried out, the
improvement wherein said instrument comprises:
a recirculating shift register for storing said harmonic
coefficient values,
means for shifting said register in unison with said sequential
calculations,
means for accessing from said register the harmonic coefficient
associated with the Fourier component currently being calculated,
and,
a multiplier for multiplying said trigonometric function by said
accessed
2. A musical instrument according to claim 1 further
comprising;
one or more storage devices each containing a set of harmonic
coefficients associated with a particular instrument voice, and
means for transferring a selected set of said coefficients from one
of said
3. A musical instrument according to claim 2 wherein said means for
transferring transfers individual coefficients into said register
during
4. A musical instrument according to claim 2 wherein said means for
transferring includes load circuitry which transfers individual
coefficients into said register during successive ones of said
certain
5. A musical instrument according to claim 2 wherein said means for
transferring includes an adder circuit which combines the
coefficients of two or more sets, the combined coefficients being
transferred into said
6. A musical instrument comprising:
two or more parallel processing channels for calculating within a
regular time interval t.sub.x respective different subsets of
Fourier components F.sup.(n) associated with the amplitude X.sub.o
(qR) of a musical waveshape at a certain sample point, each
component F.sup.(n) being calculated according to the equation
F.sup.(n) =C.sub.n sin (.pi./W) nqR
wherein C.sub.n is a coefficient associated with the n.sup.th
harmonic, wherein qR designates said certain sample point and
wherein W is the number of components calculated to obtain each
amplitude,
means for providing to each of said parallel processing channels
signals representing the values nqR for the subset of Fourier
components calculated in that processing channel,
each processing channel including:
a memory storing the harmonic coefficients C.sub.n for the subset
of components evaluated in that channel,
a sinusoid table comprising a memory storing the values of sin
(.pi./W) .phi. for 0.ltoreq..phi..ltoreq.2W at intervals of D where
D is a resolution constant,
harmonic components evaluation circuitry, responsive to the values
nqR provided to that processing channel, and utilizing said memory
and said sinusoid table to calculate F.sup.(n) =C.sub.n sin
(.pi./W) nqR for each of the Fourier components calculated in that
processing channel,
an accumulator for combining said calculated Fourier components to
obtain the waveshape amplitude X.sub.o (qR) at said certain sample
point according to the relationship ##SPC4##
where N is the total number of components evaluated for each sample
point,
control means for causing said processing channels and said
accumulator to perform said calculating and combining operations
repetitively for successive sample points during successive regular
time intervals t.sub.x, and
converter means for producing musical sounds from said obtained
amplitudes
7. An instrument according to claim 6 wherein low order harmonic
components having the values n = 1,2,3,... W/2 are calculated in
one channel and high order harmonic components having the values n
= (W/2 + 1), (W/2 + 2) ,..., W are calculated in another, parallel
channel, and wherein said means for providing comprises:
a keyboard,
a frequency number memory storing values of R for selectable notes,
a certain value R being accessed from said memory upon actuation of
a corresponding key on said keyboard,
a note interval adder incremented by the selected value R at the
beginning of each interval t.sub.x, the content of said note
interval adder representing the value qR,
a harmonic interval adder cleared before each interval t.sub.x and
incremented by the value qR during successive calculation
subintervals within each interval t.sub.x, the contents of said
harmonic interval adder representing the values nqR for n =
1,2,3,... W/2, signals representing said values being provided to
said one channel,
a multiplier for multiplying the value qR from said note interval
adder by (W/2) to obtain the value (W/2) qR throughout said
interval t.sub.x, and
an adder for adding the value (W/2) qR from said multiplier to the
currently available value nqR for n = 1,2,...,W from said
harmonic
8. An instrument according to claim 6 wherein odd harmonic
components are calculated in one channel and even harmonic
components are calculated in another, parallel channel, and wherein
said means for providing comprises:
a keyboard,
a frequency number memory storing values of R for selectable notes,
a certain value R being accessed from said memory upon actuation of
a corresponding key on said keyboard,
a note interval adder incremented by the value R at the beginning
of each interval t.sub.x, the content of said note interval adder
representing the value qR,
first and second harmonic interval adders each cleared before each
interval t.sub.x,
means for loading the value qR from said note interval adder into
the first harmonic interval adder and the value 2qR into the second
harmonic interval adder during the first calculation subinterval
within said interval t.sub.x, and
means for adding the value 2qR to the contents of each harmonic
interval adder at each subsequent calculation subinterval within
said interval t.sub.x, signals representing the contents of said
harmonic interval adders being provided respectively to said
parallel processing channels.
9. An instrument according to claim 6 wherein each harmonic
coefficient memory comprises a recirculating shift register shifted
in unison with
10. An instrument according to claim 6 wherein said control means
comprises:
a clock providing timing pulses at harmonic component calculation
subintervals t.sub.cp, and
a counter receiving said clock timing pulses and providing one
computation interval pulse t.sub.x for each W/P subinterval pulses
t.sub.cp received thereby, wherein W is the total number of Fourier
components calculated to obtain said amplitude, and P is the number
of parallel channels.
Description
BACKGROUND OF THE INVENTION
Field of the Invention
The present invention relates to an electronic musical instrument
wherein parallel processing is used to reduce the computational
rate requirements of the system. Tones are produced by computing
the amplitudes at successive sample points of a complex waveshape
using parallel channels to calculate subsets of the Fourier
components, and converting these amplitudes to musical sounds as
the computations are performed in real time.
Related Applications
The present invention is related to the COMPUTOR ORGAN described in
the inventor's copending U.S. Patent application Ser. No. 225,883
filed on Feb. 14, 1972.
Description of the Prior Art
A unique method of digital waveshape generation in an electronic
musical instrument is disclosed in the above mentioned U.S. patent
application entitled COMPUTOR ORGAN. Therein, waveshape synthesis
is accomplished by computing the sample point amplitudes of a
complex waveshape at regular time intervals, and converting these
amplitudes to musical notes as the computations are carried out. A
discrete Fourier algorithm is implemented to calculate the
individual harmonic components at each sample point, using a stored
set of harmonic coefficients which characterize the resultant
waveshape. The computations are carried out at a constant time rate
regardless of the note fundamental frequency.
An objective of using parallel processing in a computor organ of
this type is to reduce the computational rate requirements of the
system. The waveshape is synthesized in real time. Thus each
amplitude calculation must be completed within a fixed time
interval t.sub.x established by the pitch or frequency f.sub.H of
the highest note on the organ keyboard and the number N of
amplitude sample points for the highest frequency note. If exactly
N sample point amplitudes are computed for that note, the
computational time interval t.sub.x is given by:
t.sub.x = 1/Nf.sub.H ( 1)
all of the Fourier components associated with each amplitude
computation must be calculated within the time interval t.sub.x.
Thus if W harmonic components are individually, sequentially
evaluated for each sample point, each component must be calculated
with a time interval t.sub.c given by:
t.sub.c = t.sub.x /W (2)
for a monophonic instrument, this requires a system computational
clock rate f.sub.c of:
f.sub.c = 1/t.sub.c = W/t.sub.x = WNf.sub.H ( 3)
by way of example, the highest eight-foot pitch on a standard organ
keyboard is C.sub.7 which has a fundamental frequency f.sub.H =
2.093 kHz. Although a design choice, the use of 16 harmonics (W =
16) is quite satisfactory for producing realistic organ pipe
sounds. To accomplish accurate sampled amplitude synthesis of a
note containing 16 harmonics, the waveshape should be evaluated at
at least 32 sample points per cycle. This criteria will avoid the
phenomenon of "frequency aliasing" which might occur if the system
sample rate is less than the Nyquist frequency f.sub.N which is
twice the frequency of the highest harmonic component. If the note
C.sub.7 is evaluated at exactly N = 32 sample points, the
computational time inverval is:
t.sub.x = 1/(32) (2.093 kHz) = 1.49 msec
Accordingly, for a monophonic instrument having a single processing
channel, the system computational clock rate is:
f.sub.c = (16) (32) (2.093kHz) = 1.07 MHz
For a polyphonic organ in which K notes may be played at once, the
harmonic components of all notes must be evaluated at each sample
point, within the time interval t.sub.x. Thus for a polyphonic,
single channel instrument, the system computational clock rate
f.sub.c ' is given by:
f.sub.c ' = Kf.sub.c ( 4)
For the example above, in a system wherein K = 12, permitting ten
keys and two pedal notes to be played simultaneously, the
computational clock rate f.sub.c ' is:
f.sub.c ' = (12) (1.07 MHz) = 12.8 MHz
This relatively high computational clock rate may be reduced
significantly using parallel processing, and it is the principal
objective of the present invention to provide computor organs
employing such parallel processing. The reduction in clock rate
afforded by such instruments is readily visualized. If half of the
harmonic components (i.e., W/2 components) are evaluated in a first
processing channel and the other W/2 components are calculated in a
second, parallel processing channel, then the computational clock
rate is cut in half. In general, if P = the number of parallel
processing channels employed, then for a monophonic organ the
computational clock rate f.sub.cp is given by:
f.sub.cp = f.sub.c /P (5)
for a polyphonic, parallel processing system the computational
clock rate f.sub.cp ' is:
f.sub.cp ' = (Kf.sub.c /P) = Kf.sub.cp ( 6)
Accordingly, for the above example, if two parallel processing
channels are used (P = 2), the monophonic and polyphonic (K = 12)
system computational clock rates f.sub.cp and f.sub.cp '
respectively are:
f.sub.cp = 0.53 MHz
f.sub.cp ' 6.4 MHz
Use of such parallel processing, with the concomitant reduction in
computational rate, permits the computor organ more readily to be
implimented using presently available microelectronic integrated
circuits.
SUMMARY OF THE INVENTION
The foregoing and other objectives are achieved by providing a
computor organ employing parallel processing. The instrument
includes two or more computation channels which concurrently
evaluate different subsets of Fourier components. These components
are combined to obtain the amplitude values at successive sample
points of a musical waveshape. The amplitudes are converted to
musical tones as the computations are carried out in real time.
By employing parallel processing, the system computation clock rate
is reduced, even though all Fourier components for each amplitude
sample point are computed within a constant time interval. In
illustrative two channel embodiments, low and high order harmonic
components, or odd and even harmonics, are calculated concurrently
in separate channels. The tonal quality of the synthesized musical
sounds is established by a set of harmonic coefficients used in the
amplitude calculations. Advantageously, these coefficients are
contained in a recirculating shift register which is shifted in
unison with the individual Fourier component calculations. Such a
recirculating shift register harmonic coefficient memory, useful in
a parallel processing computor organ, also is disclosed.
BRIEF DESCRIPTION OF THE DRAWINGS
A detailed description of the invention will be made with reference
to the accompanying drawings, wherein like numerals designate
corresponding parts in the several figures.
FIG. 1 is an electrical block diagram of a computor organ employing
parallel processing, wherein low order harmonic components are
calculated in one channel and high order harmonics are evaluated in
another channel.
FIG. 2 is an electrical block diagram of a computor organ employing
parallel processing wherein odd and even harmonic components are
calculated respectively in separate parallel channels.
FIG. 3 is an electrical block diagram showing the use of
recirculating shift registers to supply harmonic coefficient values
to the parallel computation channels of a computor organ like that
of FIG. 1 or 2.
FIG. 4 is a simplified electrical logic diagram showing load
circuitry useful with the recirculating shift registers of FIG.
3.
FIG. 5 is a timing diagram illustrating one mode of operation of
the system of FIG. 3.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
The following detailed description is of the best presently
contemplated modes of carrying out the invention. This description
is not to be taken in a limiting sense, but is made merely for the
purpose of illustrating the general principles of the invention
since the scope of the invention best is defined by the appended
claims.
Structural and operational characteristics attributed to forms of
the invention first described shall also be attributed to forms
later described, unless such characteristics are obviously
inapplicable or unless specific exception is made.
The computor organ 10 of FIG. 1 utilizes parallel processing to
produce via a sound system 11 a musical note selected by the
keyboard switches 12. This is accomplished by calculating in
parallel computation channels 13a, 13b the discrete Fourier
components associated with amplitudes at successive sample points
of a waveshape characterizing the selected note. The components are
algebraically summed in an accumulator 14 which, at the end of each
computation time interval t.sub.x contains the amplitude at the
current sample point. This amplitude is provided via a gate 15,
enabled by the t.sub.x signal on a line 16, to a digital-to-analog
converter 17 which supplies to the sound system 11 a voltage
corresponding to the waveshape amplitude just computed. Computation
of the amplitude at the next sample point immediately is initiated,
so that the analog voltage supplied from the converter 17 comprises
a musical waveshape generated in real time.
The period of the computed waveshape, and hence the fundamental
frequency of the generated note, is established by a frequency
number R selected by the keyboard switches 12. A set of such
frequency numbers corresponding to the notes of the instrument is
stored in a frequency number memory 19. The waveshape itself, and
hence the tonal quality of the produced musical note, is
established by a set of harmonic coefficients C.sub.n stored in a
pair of memories 20a, 20b and used in computing the Fourier
components at each sample point.
In the present invention, the waveshape amplitude X.sub.o (qR) at
each sample point is computed in accordance with the following
discrete Fourier representation of a sampled periodic complex
waveshape: ##SPC1##
where R is the frequency number mentioned above, and n=1,2,3...,
W=N/2 designates the harmonic component being evaluated.
The value n = 1 corresponds to the fundamental, n = 2 to the second
harmonic, n = 3 to the third harmonic, and so forth. The harmonic
coefficient C.sub.n specifies the relative amplitude of the
respective n.sup.th harmonic component. The number W = N/2
designates how many harmonics are included in the amplitude
computation. This number is a design choice, however, the use of 16
harmonics (W = 16) is quite satisfactory for synthesizing pipe
organ sounds.
In the parallel processing computor organ 10 of FIG. 1, equation 7
is implemented by computing the amplitude value x.sub.o (qR) for
each sample point during a time interval t.sub.x. The individual
harmonic component amplitudes F.sup.(n) = C.sub.n sin (.pi./W) nqR
for each of the W harmonic components are calculated separately. In
the embodiment of FIG. 1, the low order harmonic components, for
values n = 1,2, ..., W/2 are calculated in the channel 13a and the
high order components, for the values n = (W/2 + 1), (W/2 +
2),...,W are evaluated in the parallel channel 13b.
The harmonic calculations are carried on concurrently. For example,
while the amplitude of the fundamental (n = 1) is being calculated
in the first channel 13a, the component amplitude of the 9th
harmonic (n = 9) is computed in the other channel 13b. The two
values F.sup.(1) and F.sup.(9) thus produced on the respective
lines 21a, 21b are summed algebraically in an adder 22. The sum is
supplied via a line 23 to the accumulator 14. The next harmonic
components F.sup.(2) and F.sup.(10) then are calculated
concurrently in the channels 13a and 13b, summed by the adder 22
and added to the contents of the accumulator 14. This routine is
iterated until all W harmonic components have been calculated. The
resultant algebraic sum then contained in the accumulator 14 will
correspond to the amplitude ##SPC2##
for the sample point designated by the value qR.
As noted earlier, the waveshape amplitude x.sub.o (qR) in the
accumulator 14 is gated to the digital-to-analog converter 17 at
the end of the computation interval t.sub.x. The accumulator 14
then is cleared by the signal on the line 16, and computation of
the amplitude at the next sample point immediately is initiated.
The value qR is incremented and the W harmonic component amplitudes
F.sup.(n) are calculated for the sample point designated by the new
value of qR. Eventually the entire waveshape will be generated, the
sound system 11 reproducing the musical note as the amplitude
computations are carried out.
In the system of FIG. 1, a note interval adder 25 contains the
value qR identifying the sample point at which the waveshape
amplitude currently is being evaluated. This value qR is
incremented at the beginning of each computation interval t.sub.x
by adding the selected frequency number R to the previous contents
of the adder 25. The selected value R is supplied to the adder 25
via a gate 26 enabled by the t.sub.x signal on the line 16.
Preferably the adder 25 is of modulo N.
To calculate the low order harmonic components, the values nqR (for
n = 1,2,...,W/2) are obtained in a harmonic interval adder 27 which
is cleared before each amplitude computation cycle. Upon occurrence
of the first clock pulse t.sub.cp of a new cycle, the current value
qR contained in the mode interval adder 25 is entered into the
harmonic interval adder 27 via a line 28 and a gate 29. At each
subsequent clock pulse t.sub.cp, the value qR is added to the
previous contents of the adder 27. As a result, the harmonic
interval adder 27 will contain the value nqR, where n = 1,2,...,W/2
for the n.sup.th low order harmonic component currently being
evaluated in the channel 13a. Preferably the harmonic interval
adder 34 also is of modulo N.
An address decoder 31a accesses from a sinusoid table 32a the value
sin (.pi./W) nqR corresponding to the argument nqR received via a
line 33 from the harmonic interval adder 27. The sinusoid table 32a
may comprise a read only memory storing values of sin (.pi./W)
.phi. for 0 .ltoreq. .phi. .ltoreq. 2W at intervals of D, where D
is called the resolution constant of the memory.
The value sin (.pi./W) nqR, supplied via a line 34a, is multiplied
by the coefficient C.sub.n for the corresponding n.sup.th harmonic
by a multiplier 35a. The multiplication product represents the
amplitude F.sup.(n) of the n.sup.th harmonic component and is
supplied via the line 21a to the adder 22. The appropriate
coefficient C.sub.n is accessed from the low order harmonic
coefficient memory 20a by an address control unit 36 advanced by
the clock pulses t.sub.cp.
To evaluate the high order harmonic components, the values (W/2 +n)
qR for n = 1,2,...W/2 are obtained at successive clock times
t.sub.cp. Thus the value qR contained in the note interval adder 25
is multiplied by the value W/2 in a multiplier 37. The quotient
(W/2) qR is added to the value nqR present on the line 33 by an
adder 38. The sum, present on a line 39, is the value (W/2 + n)
qR.
A memory address decoder 31b accesses from a sinusoid table 32b the
value sin (.pi./W) (W/2 + n) qR. That sin value, supplied via a
line 34b, is multiplied by the corresponding high order harmonic
coefficient C.sub.n, supplied from a memory 20b, in a multiplier
35b. The multiplication product, supplied via the line 21b to the
adder 22, represents the amplitude F.sup.(n) of the currently
evaluated, high order harmonic component.
Thus during each amplitude computation cycle t.sub.x, the values
F.sup.(n) = C.sub.n sin (.pi./W) nqR for n = 1,2,3,...,W/2 are
calculated successively in the channel 13a upon occurrence of
successive clock pulses t.sub.cp. Concurrently, the high order
harmonic components F.sup.(n) for values n = (W/2 + 1), (W/2 + 2)
,..., W are calculated in the channel 13b.
Thus all W Fourier components are calculated in exactly W/P = W/2
clock cycles t.sub.cp, corresponding to the computation time
interval t.sub.x. In the embodiment of FIG. 1, a clock 41 produces
the pulses t.sub.cp on a line 42. A counter 43 of modulo W/2
provides one pulse t.sub.x on the line 16 for each W/2 pulses
t.sub.cp received on the line 42. Using the parallel processing
system of FIG. 1, the rate f.sub.cp of the clock 41 is equal to
W/2t.sub.x or exactly one-half of the clock rate which would be
required if all W harmonic components were calculated serially in
the computation interval t.sub.x.
In the parallel processing computer organ 50 of FIG. 2, the odd
harmonic components (n = 1,3,5,...) are calculated in a first
channel 51a, while the even harmonic components (n = 2,4,6,...) are
evaluated concurrently in a second channel 50b. The keyboard
switches 12', the frequency number 19', the gate 26' and the note
interval adder 25' correspond in operation to the like numbered,
but unprimed, components shown in FIG. 1. These components provide
on a line 28' a signal representing the value qR identifying the
sample point at which the waveshape amplitude currently is being
evaluated. Separate harmonic interval adders 52a, 52b are
associated with the respective channels 50a, 50b. At successive
calculation intervals t.sub.cp, the harmonic interval adder 52a is
used to accumulate nqR for odd values of n, while the values nqR
for even values of n are obtained in the adder 52b. For this
purpose, a "times two" multiplier 53 provides on a line 54 a signal
representing the value 2qR throughout each computation interval
t.sub.x.
A clock 41' of frequency f.sub.cp provides calculation clock pulses
t.sub.cp on a line 42'. A counter 55 of modulo W/2 provides one
computation time interval pulse t.sub.x on a line 16' for each W/2
pulses t.sub.cp received from the clock 41'. In addition, the
counter 52 provides pulses at the calculation clock time t.sub.cp1
on a line 56a, and at the times t.sub.cp2 through t.sub.cp(W/2) on
the respective lines 56b - 56h. The timing pulses t.sub.cp2 -
t.sub.cp(W/2) all are provided via an OR gate 57 to a line 58.
Upon occurrence of the first calculation clock pulse t.sub.cp1, the
value qR is supplied via a gate 60 to the harmonic interval adder
52a. At successive clock times t.sub.cp2 through t.sub.cp(W/2) the
value 2qR, supplied from the line 54 via a gate 61, is added to the
contents of the harmonic interval adder 52a. Thus at successive
clock times t.sub.cp the contents of the adder 52a will contain nqR
for odd values of n. A memory address decoder 31a' accesses from a
sinusoid table 32a' the value sin (.pi./W) nqR corresponding to the
argument nqR received from the adder 52a. This sin value is
multiplied by the appropriate odd harmonic coefficient C.sub.n
supplied from a memory 20a' utilizing a multiplier 35a'. The
quotient, representing the value F.sup.(n) for the corresponding
odd value of n, is provided via a line 21a' to an adder 22'.
Accessing of the memory 20a' is under control of a memory address
control unit 36' advanced by the clock pulses t.sub.cp.
A similar operation occurs in the channel 51b, except that the
harmonic interval adder 52b accumulates nqR even values of n. To
this end, at each calculation interval t.sub.cp the value 2qR,
supplied from the line 54 via a gate 62, is added to the contents
of the harmonic interval adder 52b. A memory address decoder 31b'
accesses from a sinusoid table 32b' the value sin (.pi./W) nqR
corresponding to the argument nqR received from the adder 52b. This
sin value is multiplied by the appropriate even harmonic
coefficient C.sub.n from the memory 20b' utilizing a multiplier
35b', and the product is supplied via a line 21b' to the adder 22'.
The adder 22' sums the odd and even harmonic component pair
simultaneously evaluated in the parallel channels 51a and 51b, and
supplies the sum via a line 23' to an accumulator,
digital-to-analog converter and sound system like that shown in
FIG. 1.
In the two channel systems of FIGS. 1 and 2, half of the W
harmonics are calculated concurrently in each of the parallel
processing. Thus in each computation interval t.sub.x eight
calculation cycles t.sub.cp are required to calculate 16 (W=16)
harmonics.
Additional parallel channels may be employed. For example, four
parallel channels may be used, calculating one-fourth of the W
harmonic components in each channel. In such instance, the clock
frequency f.sub.cp would be one-quarter that required of a single
channel system. In general, the clock frequency will be inversely
proportional to the number of parallel channels. Nor is there any
requirement that the same number of harmonic components be
evaluated in each channel. Thus a three channel system may be set
up where five harmonic components are calculated in one channel,
five different components in a second channel, and six other
components are evaluated in a third channel. Of course, the
calculations all must be done within the time period t.sub.x, but
the order in which they are performed is not important, since it is
merely the sum accumulated in the accumulator 14 (FIG. 1) which
represents the amplitude at the waveshape sample point qR and which
is gated via the digital-to-analog-converter 17 to the sound system
11.
Nor is the invention limited to the evaluation or the low order
harmonics in one channel and high order harmonics in another
channel, or to separate, parallel calculation of odd and even
harmonics. Indeed any subset of harmonics may be evaluated in
either channel. Parallel processing also may be employed in systems
wherein certain of the components are non-harmonic. Further,
although only monophonic instruments are shown in FIGS. 1 and 2, it
is clearly to be understood that parallel processing in accordance
with the present invention also can be employed in polyphonic
computor organs or like instruments.
The harmonic coefficient memories 20a, 20b (FIG. 1) advantageously
may be implemented using recirculating shift registers. Such an
arrangement is shown in FIG. 3 wherein a recirculating shift
register 65a contains the low order harmonic coefficient values
C.sub.1 through C.sub.(W/2) used in the processing channel 13a, and
another shift register 65b contains the high order coefficients
C.sub.(W/2) through C.sub.W used with the parallel processing
channel 13b. By way of example, in a computor calculating W=16
harmonic components, the shift registers 65a and 65b respectively
will contain the coefficients C.sub.1 through C.sub.8 and C.sub.9
through C.sub.16. In a similar arrangement useful with the
instrument 50 of FIG. 2, the registers 65a, 65b would contain the
harmonic coefficient values C.sub.n for odd and even values of n
respectively.
The register 65a is shifted one position to the left (as viewed in
FIG. 3) at each clock pulse t.sub.cp supplied on the line 16. As
such shifting occurs, the coefficient value present in the end
register position 66a is transferred via a line 67a, certain load
circuitry 68a, and a line 69a back to the position 70a at the other
end of the shift register 65a. The shift register 65b is similarly
connected.
With this arrangement, upon occurrence of the first clock pulse
(t.sub.cp1) for a particular calculation cycle, the coefficient
C.sub.1 will be available via the line 71a to the harmonic
amplitude multiplier 35a, and the coefficient C.sub.9 will be
supplied to the multiplier 35b via a line 71b. When the next pulse
(t.sub.cp2) occurs, the recirculating registers 65a, 65b will shift
one position to the left, so that the respective coefficients
C.sub.2 and C.sub.10 are supplied via the lines 71a, 71b to the
multipliers 35a, 35b. This operation continues throughout the
computation cycle, until all of the harmonic coefficients stored in
the registers 65a, 65b are supplied to the multipliers 35a, 35b. As
discussed earlier, the next computation cycle (for an incremented
value of qR) begins immediately, and again the stored coefficients
are supplied from the registers 65a, 65b to the parallel processing
organ. The process continues as long as a selected note is being
generated.
Recall that the coefficient values C.sub.n establish the waveshape
of the generated musical notes. Thus, it is the value of these
coefficients which will determine whether the sounds produced by
the computor organ will have the characteristics of e.g., a
diapason, a tibia or a bourdon voice. An arrangement for supplying
different sets of harmonic coefficients to the shift registers 65a,
65b also is shown in FIG. 3. This arrangement facilitates organ
voice selection by the use of "stop tab" switches.
To this end, a first set "A" of harmonic coefficients are
maintained in a storage device 73A, and a different set "B" of
coefficients are stored in a memory 73B. When the stop tab switch
ST.sub.A is closed, the coefficients from the storage device 73A
are transferred via an adder 74, the lines 75a, 75b and the load
circuitry 68a, 68b into the shift registers 65a, 65b. Using the
harmonic coefficients "A" then available in the registers 65a, 65b,
the computor organ may e.g., produce a diapason sound.
If the stop tab switch ST.sub.A is opened and the switch ST.sub.B
closed, the set "B" of coefficients maintained in the storage
device 73B will be supplied via the adder 74 to the shift registers
65a, 65b. Thereafter, the computer organ will produce a different
sound, for example, a tibia, established by the coefficient set
"B". The arrangement of FIG. 3 also permits use of combined voices.
Thus if both stop tab switches ST.sub.A and ST.sub.B are closed,
the coefficient sets "A" and "B" will be summed by the adder 74,
and the combined coefficients supplied via the load circuitry 68a,
68b to the shift registers 65a, 65b. As a result, the organ will
produce a sound representative of the combined selected stops. Of
course, additional stops may be implemented using other storage
devices (not shown), together with appropriate selection switches
and combining circuitry.
Illustrative means for transferring coefficients from the storage
device 73A or 73B to the recirculating shift registers 65a, 65b is
shown in FIGS. 3 and 4, and by the timing diagram of FIG. 5. In
this arrangement, individual coefficients are transferred during
successive computation cycles, so that when a new stop tab is
selected, the change in voice occurs gradually over approximately
W/2 time intervals t.sub.x. This changeover time is sufficiently
rapid so as to be unobjectionable to a listener.
In the arrangement shown, a counter 76 of modulo (W/2 + 1) receives
the calculation clock pulses t.sub.cp from the line 16. The counter
76 provides one "LOAD" pulse on a line 77 for each (W/2 + 1) pulses
t.sub.cp received from the clock 41. The LOAD pulses advance a
storage access control unit 78 which causes successive harmonic
coefficients to be read from the selected storage device 73A or
73B. Each LOAD pulse also causes the accessed coefficients to be
transferred by the load circuitry 68a, 68b onto the lines 69a, 69b
in place of the coefficinets previously in the shift register end
positions 66a, 66b. Thus, on occurrence of each LOAD pulse, a new
harmonic coefficient is transferred into each shift register 65a
and 65b. The process is repeated until all of the coefficients from
the selected storage device 73a, 73b have been transferred.
The load circuitry 68a, 68b may be implemented using the circuit
shown in FIG. 4. There, a three-input AND gate 81 receives as
inputs the signal from the end shift register position 66a, the
shift pulses t.sub.cp from the line 16, and the output of an
inverter 82 which receives the LOAD pulses from the line 77.
When no LOAD pulse is present on the line 77, the output of the
inverter 82 is high. In this instance, the AND gate 81 transfers
the coefficient signal from the line 67a onto the line 69a each
time a shift pulse t.sub.cp is received. Recirculation is
implemented.
Upon occurrence of a LOAD pulse on the line 78, the output of the
inverter 82 will be low, disabling the AND gate 81 and hence
inhibiting recirculation of the coefficient received from the
register position 66a. However, the LOAD signal enables another AND
gate 83 which transfers the new harmonic coefficient supplied via
the line 75a onto the line 69a. As a result, the new coefficient
value will be entered into the register end position 70a instead of
the value previously in the register position 66a. When this
process is repeated W/2 times, all of the new coefficients will be
present in the shift registers 65a, 65b.
The LOAD pulses need not be inhibited after all of the new
coefficients have been transferred into the registers 65a, 65b. The
reason is that on successive cycles, at the time of each LOAD pulse
occurrence, the coefficient supplied on the line 75a will be
identical to that present on the line 67a from the position 66a. As
a consequence, the signal returned on the line 69a will be
identical to that which would have been recirculated if the LOAD
pulse had been inhibited.
The timing diagram of FIG. 5 illustrates the shift register 65a,
65b reloading process. In the example, the shift registers
initially contain the coefficients C.sub.1A through C.sub.16A of
the set "A". The stop tab ST.sub.B is selected at the time
designated by the arrow 85. During the next computation cycle, the
coefficient C.sub.1B and C.sub.9B of the newly selected set "B" are
transferred by the load circuitry 68a, 68b to the shift registers
65a, 65b. During the following computation cycle, at a time (W/2 +
1) t.sub.cp after transfer of the coefficients C.sub.1B, C.sub.9B,
the next coefficients C.sub.2B and C.sub.10B are loaded into the
registers. This procedure is iterated until all coefficients of the
set "B" have been loaded.
Other timing arrangements may be used for transfer of harmonic
coefficients into the shift registers 65a, 65b. Note also that each
coefficient C.sub.n may be represented by a multi-bit binary
number. In such instance, each shift register position would
contain a byte equal to the number of bits representing each
coefficient. Additional circuits like that of FIG. 4 may be
employed for each bit.
Selection of the coefficient values C.sub.n is a design choice. By
way of example, the storage devices 73A, 73B may contain the sets
of coefficients listed in TABLE I below and associated with typical
pipe organ sounds. Decimal values of the coefficients are listed.
In a digital computor organ, these values typically would be stored
in the equivalent binary form. The listed coefficients indicate the
relative amplitude of each Fourier component; the corresponding
decibel values also are tabulated. ##SPC3##
The frequency numbers R stored in the memory 19 are related to the
fundamental frequencies of the musical notes produced by the
computor organ 10, to the computation time interval t.sub.x, and to
the number of amplitude sample points N for the note of highest
fundamental frequency f.sub.H produced by the organ. For example,
if the frequency number R for such note of highest frequency is
selected as unity, then with a computation time interval t.sub.x
given by t.sub.x = 1/Nf.sub.H exactly N sample point amplitudes
will be computed for that note.
The values R for notes of lower frequency readily can be
ascertained, knowing that the frequency ratio of any two contiguous
notes in an equally tempered musical scale is 2. In general, the
frequency numbers R for notes other than that of highest frequency
f.sub.H will be non-integers.
By way of example, the following Table II lists the frequency,
frequency number R, and number of sample points per period for each
note in octave six. The note C.sub.7 (the key of C in octave 7) is
designated as the note of highest fundamental frequency produced by
the computor organ 10, and hence is assigned the frequency number R
of unity. In this example, N = 32 sample points are computed for
the note C.sub.7, this value of N being satisfactory for accurate
synthesis for an organ pipe or most other musical sounds.
---------------------------------------------------------------------------
TABLE II
NOTE FREQUENCY R Number of Sample (Hz) Points per Period
__________________________________________________________________________
C.sub.7 2093.00 1.0000 32.00 B.sub.6 1975.53 0.9443 33.90 A .sub.6
1864.66 0.8913 35.92 A.sub.6 1760.00 0.8412 38.06 G .sub.6 1661.22
0.7940 40.32 G.sub.6 1567.98 0.7494 42.72 F .sub.6 1479.98 0.7073
45.26 F.sub.6 1396.91 0.6676 47.95 E.sub.6 1318.51 0.6301 50.80 D
.sub.6 1244.51 0.5947 53.82 D.sub.6 1174.66 0.5613 57.02 C .sub.6
1108.73 0.5298 60.41 C.sub.6 1046.50 0.5000 64.00
__________________________________________________________________________
thus there is provided a parallel processing computor organ wherein
the calculation clock rate is substantially lower than for systems
which do not employ parallel processing.
* * * * *