U.S. patent number 3,929,053 [Application Number 05/464,936] was granted by the patent office on 1975-12-30 for production of glide and portamento in an electronic musical instrument.
This patent grant is currently assigned to Nippon Gakki Seizo Kabushiki Kaisha. Invention is credited to Ralph Deutsch.
United States Patent |
3,929,053 |
Deutsch |
December 30, 1975 |
Production of glide and portamento in an electronic musical
instrument
Abstract
The apparatus produces glide and portamento in an electronic
musical instrument in which the generated tone is proportional to a
current frequency number. A time varying fractional frequency
number is established that increases or decreases in value during
glide or portamento production. The current frequency number is
modified by increments that correspond to the fractional frequency
number values, so that the generated tone glides to the nominal
pitch, or so that during portamento the generated tone slides from
the pitch of the note previously produced to the nominal frequency
of the new note.
Inventors: |
Deutsch; Ralph (Sherman Oaks,
CA) |
Assignee: |
Nippon Gakki Seizo Kabushiki
Kaisha (Hamamatsu, JA)
|
Family
ID: |
23845856 |
Appl.
No.: |
05/464,936 |
Filed: |
April 29, 1974 |
Current U.S.
Class: |
84/628; 984/397;
84/662 |
Current CPC
Class: |
G10H
7/105 (20130101) |
Current International
Class: |
G10H
7/10 (20060101); G10H 7/08 (20060101); G10H
001/02 (); G10H 005/00 () |
Field of
Search: |
;84/1.01,1.03,1.24,1.25 |
References Cited
[Referenced By]
U.S. Patent Documents
Other References
Ralph W. Burhans, "Digital Tone Synthesis", Journal of the Audio
Engineering Society, Vol. 19, No. 8, Sept. 1971, pp.
660-663..
|
Primary Examiner: Tomsky; Stephen J.
Assistant Examiner: Witkowski; Stanley J.
Attorney, Agent or Firm: Silber; Howard A.
Claims
I claim:
1. Apparatus for producing glide or portamento in an electronic
musical instrument of the type having a tone generator for
generating a musical tone, and wherein the fundamental frequency of
the generated tone is proportional to a number utilized by said
tone generator, the value of said number that is presently utilized
by said tone generator being the "current frequency number", said
instrument comprising;
increment means for establishing another number that increases or
decreases in value incrementally during the production of glide or
portamento, said other number being a "fractional frequency
number," and
means for modifying said current frequency number in increments
corresponding to said fractional frequency numbers, said modifying
terminating when the modified current frequency number differs from
the frequency number of the presently selected note by less than a
certain amount.
2. Apparatus according to claim 1 for producing glide, wherein said
instrument includes a set of note selection switches and means
providing a frequency number R corresponding to the selected
switch, and wherein said increment means comprises;
a divider for dividing said frequency number R by a value k(t) that
increases or decreases with time, the dividend R/k(t) being the
fractional frequency number, and wherein said means for modifying
comprises,
means for adding the dividend R/k(t) from said frequency number R
to obtain the current frequency number.
3. Apparatus according to claim 2 further comprising a glide clock
operatively connected to said increment means, wherein said value
k(t)=2.sup.m and wherein m is incremented by said increment means
at successive time intervals established by said glide clock.
4. Apparatus according to claim 2 for producing slalom glide
wherein said increment means further comprises circuitry for
causing said value k(t) alternately to decrease and increase in
value during successive portions of the glide production interval,
and wherein said value k(t) is programmatically added to said
frequency number R during different portions of the glide
production to produce a tone that first glides past the nominal
pitch of the selected note, then returns to said nominal pitch.
5. Apparatus according to claim 1 for producing portamento, said
incrementing means comprising:
a divider for dividing the current frequent number by a constant k
to obtain said fractional frequency number, and wherein said
modifying means comprises,
an accumulator for accumulating the sum of the fundamental
frequency determining number associated with the previously
selected note and the fractional frequency numbers produced during
the portamento, the contents of said accumulator comprising the
current frequency number.
6. Apparatus according to claim 5 further comprising;
comparator means for comparing the value of the current frequency
number in said accumulator with the frequency number of the
selected note, and for terminating portamento production when the
difference detected by said comparator is less than said certain
amount.
7. Apparatus accordiang to claim 6 wherein said accumulator
continues alternately to add and subtract the fractional frequency
number from the current frequency number after said termination of
portamento, said selected note thereafter being produced at a
frequency which alternates slightly above and below the nominal
pitch of the selected note.
8. Apparatus according to claim 1 for production of portamento
wherein said incrementing means comprises;
means for subtracting the previous frequency number of the
previously selected note from the new frequency number of the
presently selected note to obtain a difference value,
a divider for dividing said difference value by a constant,
accumulator means supplying the quotient obtained in said divider,
to an accumulator at successive time intervals during protamento
production, the accumulative sum in said accumulator comprising
said time varying fractional frequency number, and wherein said
modifying means comprises,
means for adding said fractional frequency number from said
accumulator to the previous frequency number to obtain the current
frequency number.
9. Apparatus according to claim 1 for producing glide, said
instrument including a set of note selection switches and means
providing a frequency number R corresponding to the selected
switch, wherein said increment means comprises;
a divider for dividing said frequency number R by a value k(t) that
increases or decreases with time, the dividend R/k(t) being the
fractional frequency number, and wherein said means for modifying
comprises,
means for subtracting the dividend R/k(t) from said frequency
number R to obtain the current frequency number.
10. Apparatus according to claim 9 for producing slalom glide
wherein said increment means further comprises circuitry for
causing said value k(t) alternately to decrease and increase in
value during successive portions of the glide production interval,
and wherein said value k(t) is programmatically subtracted from
said frequency number R during different portions of the glide
production to produce a tone that first glides past the nominal
pitch of the selected note, then returns to said nominal pitch.
Description
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to the production of glide and
portamento effects in an electronic musical instrument.
2. Description of the Prior Art
In most musical instruments, as each note is played, tone
production begins immediately at the nominal frequency of that
note, possibly with gradually increasing amplitude during the
initial, attack period. Certain electronic organs have a glide
option in which the tone starts low in pitch, then gradually glides
up to the nominal frequency.
Typically the glide is controlled by a toe switch mounted on the
swell shoe, or by a switch responsive to rotation of the shoe
itself. To produce a glide effect, the musician must coordinate
foot operation of the glide switch with playing of the manual keys.
Considerable dexterity is required. To eliminate this difficulty,
it is one object of the present invention to provide a system
wherein a glide effect is produced automatically upon keyboard
selection of a note in an electronic musical instrument. There is
no separate glide switch to be operated, so that the instrument may
be played in a normal manner.
In the usual glide effect, the note initially is sounded a whole
tone, or possibly a semi-tone below the nominal pitch. The
frequency gradually rises until it corresponds to the note actuated
on the instrument keyboard. Alternatively, the note may begin at a
frequency that is above the nominal pitch, and gradually decrease
to the true frequency. In a "slalom glide," the sound begins low in
pitch, gradually rises in frequency past the nominal pitch, then
finally decreases to the true pitch of the selected note. Another
object of the present invention is to implement both glide up,
glide down and slalom glide effects in an electronic musical
instrument.
A few instruments, notably the trombone, can produce a portamento
effect in which the generated frequency does not change abruptly
from one note to the next, but rather glides through all of the
intermediate tones. A further object of the present invention is to
implement such portamento effects in an electronic musical
instrument.
SUMMARY OF THE INVENTION
These and other objectives are achieved in an electronic musical
instrument of the type wherein the fundamental frequency of the
generated note is established by a number that is proportional to
the note frequency. By way of example, the invention is described
herein in conjunction with a computor organ of the type disclosed
in the inventor's copending U.S. patent application, Ser. No.
225,883, filed Feb. 14, 1972 now U.S. Pat. No. 3,809,786. In such a
computor organ, the pitch of the generated sound is established by
a frequency number R that controls the separation between
successive sample points at which the amplitude of a musical
waveshape is computed. However, the present invention is by no
means so limited. The invention also may be utilized with other
types of electronic tone generators in which the produced frequency
is controlled by a value R proportional to that frequency. Thus the
following description is equally applicable to such other systems,
with a direct substitution of the frequency proportional value R
for the frequency number R.
A glide effect is produced by modifying the frequency number at the
beginning of tone production. This advantageously is achieved by
subtracting from or adding to the selected number R a rational
fraction S of that number which decreases with time. The graph of
FIG. 1 illustrates the frequency deviation in cents achieved by
such a system wherein the time-variant rational fraction is:
##EQU1## where m is an integer incremented at regular time
intervals. In a binary implementation, the value S readily is
computed by rightshifting the number R in a shift register. This is
the equivalent of dividing R by 2.sup.m, where m designates how
many positions R has been right-shifted.
A new frequency number R' is obtained by subtracting the fraction S
from the selected frequency number R. Thus: ##EQU2## If this value
R' is provided to the tone generator, the tone that is produced
will be offset from the nominal frequency of the selected note. The
deviation C of the generated frequency may be calculated from the
expression: ##EQU3## where C.sub.k is a constant given by: ##EQU4##
Equations 2 and 3 are combined to obtain: ##EQU5## which indicates
that the obtained frequency deviation C in cents is independent of
the value of the frequency number R. That is, the frequency
deviation C in cents will be the same regardless of what note is
played. There are 1200 cents to the octave, so that adjacent whole
tones are separated by 100 cents, while 50 cents represents a
semi-tone. Thus the glide illustrated by the graph of FIG. 1 begins
slightly more than a full tone away from the nominal frequency.
Such a deviation (of 111.55 cents) is obtained for the value
m=4.
To obtain the glide illustrated in FIG. 1, the rational fraction S
(see equation 1) is calculated for values m=4,5,6, . . . at
successive time intervals. Thus the corresponding frequency number
R' (see equation 2) gradually will approach the frequency number R
for the selected note. The frequency deviation C at each step of
the glide will have the values set forth in Table I below,
calculated from equation 5.
TABLE I ______________________________________ Number m of
Positions Frequency Deviation C that R is right-shifted (in cents)
______________________________________ 4 111.55 5 54.94 6 27.24 7
13.59 8 6.64 9 3.36 10 1.69 11 .84 12 .41 13 .21 14 .10
______________________________________
To implement such glide at the start of note production, the
frequency number R associated with the selected note is right
shifted by m=4 positions. The resultant value ##EQU6## is
subtracted from the value R, and the difference R' is supplied to
the tone generator.
At successive glide timing intervals established by a glide clock,
the value R is further right-shifted. In effect, the value is
incremented at each clock time. As a result, the values R' supplied
to the tone generator gradually will approach the frequency number
R. The produced tone will exhibit a glide having the frequency
deviation characteristics of FIG. 1. If the rational fraction S
(see equation 1) is added to the frequency number rather than
subtracted from it, the resultant glide will start at a frequency
higher than the selected note, and glide down to that note with a
like frequency deviation curve.
To achieve portamento effects, fractional increments are
algebraically added to the frequency number of the note previously
played, during the portamento interval. The rate at which such
increments are added is established by a glide clock. Eventually,
the accumulated sum of the previous frequency number and the added
increments will equal the frequency number of the newly selected
note. Thereafter, tone production will continue at the true pitch
of the new note.
In one embodiment, each increment added to the frequency number
during portamento production is equal to a constant fraction of the
frequency number currently being provided to the tone generator. In
this embodiment, the portamento time taken to glide from one note
to the next will depend on the separation between those notes.
In another embodiment, each increment added to the frequency number
during portamento production is equal to a constant fraction of the
difference between the frequency numbers associated with the
previous and new notes. In this system, the time taken to glide
from one note to the next will be the same regardless of what notes
are selected.
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 a graph showing the frequency deviation as a function of
time for a glide effect produced by the apparatus of FIG. 2.
FIG. 2 is an electrical block diagram of a computor organ
configured to produce a glide effect.
FIG. 3 is an electrical block diagram of circuitry for producing a
slalom glide in conjunction with an electronic musical
instrument.
FIG. 4 is an electrical block diagram of a system for implementing
portamento in an electronic musical instrument.
FIG. 5 is an electrical block diagram of an alternative system for
producing portamento, wherein the frequency number is incremented
in steps each equal to a fraction of the difference between the old
and new frequency numbers.
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.
Operational characteristics attributed to forms of the invention
first described also shall be attributed to forms later described,
unless such characteristics obviously are inapplicable or unless
specific exception is made.
The musical instrument 10 of FIG. 2 produces via a sound system 11
musical tones which automatically glide to the nominal frequency of
the selected note. Thus each time one of the keyboard switches 12
is depressed, a sound that is approximately a whole tone lower than
the selected note initially is produced. Then, at intervals
established by a glide clock 13, the produced tone increases in
frequency to the desired value. The frequency deviation during this
glide interval is as illustrated in FIG. 1. In an alternative
embodiment discussed below, the glide may start at a frequency
above the desired nominal value and glide down to that tone.
Frequency deviation characteristics other than those illustrated in
FIG. 1 also can be produced.
The fundamental frequency of the tone produced by the instrument 10
is established by a current frequency number R.sub.(current)
supplied via a line 14 to the tone generation portion 15 of the
computor organ. During glide production, the value R' (see equation
2) is supplied as the current frequency number. The value m is
incremented at time intervals established by the glide clock 13.
After completion of the glide, the frequency number R associated
with the note is supplied as the current frequency number.
A frequency number memory 17 stores a set of R values associated
with the fundamental frequencies of the notes selectable by the
switches 12. When any note is played, closure of the corresponding
keyboard switch 12 causes the corresponding frequency number R to
be supplied from the memory 17 to a line 18. The switch signal also
is provided via an OR gate 19 to a one-shot multivibrator 20 that
produces on a line 21 a "start glide" pulse 22 (FIG. 1).
Occurrence of the "start glide" pulse 22 causes the selected
frequency number R to be loaded into a shift register 23 at a
position which initially is shifted four bits to the right. That
is, the most significant bit of the frequency number R is not
loaded into the most significant, left-most storage position 23-1
of the shift register 23, but rather is entered into the fifth
register position 23-5. As a result, the value initially present on
the output line 24 from the shift register 23 is ##EQU7## The glide
clock 13 provides timing pulses 25 (FIG. 1) via a line 26 to the
shift input of the register 23. Each such pulse causes the contents
of that register to be shifted one position to the right. This
corresponds to dividing the contents of the shift register 23 by
two each time a shift pulse is received. As a result, the signal
present on the output line 24 represents the rational fraction
##EQU8## where m=4,5,6, . . . and m is incremented at each
successive timing pulse from the clock 13.
The rational fraction S on the line 24 is subtracted from the
frequency number R present on the line 18. This is accomplished by
adding the two's complement of S, obtained by a complement circuit
27, to the value R in an adder 28. The signal S on the line 24 is
supplied to the complement circuit 27 via a switch 30 that is set
to the position 30a when the glide is to begin below the nominal
frequency of the selected note. The output of the adder 28 is the
frequency number R' = R-S defined by equation 2 above.
During successive time intervals established by the glide clock 13,
the value R' will approach the frequency number R supplied from the
memory 17. The values will be equal when the most significant bit
of the frequency number R has been shifted out of the lowest
significant position 23-p of the register 23, so that the entire
shift register 23 contains only binary zeros. Thereafter, the value
S will be zero, so that R' = R; a nominal pitch tone will
result.
To produce a glide which begins above the nominal frequency of the
selected note, the rational fraction S is added to the frequency
number R. This can be accomplished by transferring the switch 30 to
the position 30b so as to connect the line 24 directly to the input
of adder 28.
The glide need not start a whole tone above or below the selected
note. Thus by initially loading the value R into a different
position of the shift register 23, a different initial frequency
offset is obtained. For example, if the most significant bit of the
frequency number R is entered into the shift register position
23-6, so that initially m=5, the glide will start approximately a
semi-tone away from the desired note.
Although a shift register is used in the embodiment of FIG. 2 to
obtain the rational fraction of the frequency number R, the
invention is not so limited. Thus the shift register 23 may be
replaced by a divider circuit that divides R by a value k(t) which
is a function of time as established by the glide clock 13. In such
case, the value provided on the line 24 will be ##EQU9## By
appropriately programming the time dependence of the value k(t),
any desired glide characteristic may be obtained.
The glide implementation just described may be utilized with any
electronic musical instrument wherein the fundamental frequency of
the generated tone is established by a number proportional to that
frequency. The tone generator 15 (FIG. 2) is such a system. Its
operation is disclosed in the inventor's U.S. Pat. No. 3,809,786
entitled COMPUTOR ORGAN, and is summarized here to the extent
necessary to understand how it functions with the inventive glide
and portamento system.
In the tone generator 15, musical notes are produced by computing
in real time the amplitudes X.sub.o (qR) at successive sample
points qR of a musical waveshape, and converting these amplitudes
to notes as the computations are carried out. Each sample point
amplitude is computed during a regualr time interval t.sub.x
according to the relationship: ##EQU10## which q is an integer
incremented each time interval t.sub.x, the value n=1,2,3, . . . W
represents the order of the Fourier component F.sup.(n) being
evaluated, C.sub.n is coefficient establishing the relative
amplitude of the n.sup.th component and R is the frequency number
discussed above, which establishes the period or fundamental
frequency of the generated waveshape. The number W of Fourier
components included in each waveshape amplitude computation is a
design choice. However, W=16 components is adequate for good
synthesis of organ tones.
In the computor organ 15 (FIG. 2) the individual Fourier components
F.sup.(n) are individually evaluated during successive calculation
time intervals t.sub.cp1 through t.sub.cp16 established by a clock
31 and a counter 32. The Fourier components are summed in an
accumulator 33. Thus at the end of each computation time interval
t.sub.x, the contents of the accumulator 33 represents the
waveshape amplitude X.sub.o (qR) for the current sample point
qR.
A computation interval t.sub.x timing pulse is provided on a line
34 by slightly delaying the last calculation interval pulse
t.sub.cp16 in a delay circuit 35. Occurrence of the t.sub.x pulse
transfers the contents of the accumulator 33 via a gate 36 to a
digital to analog converter 37. The accumulator 33 then is cleared
in preparation for summing of the Fourier components associated
with the next sample point, computation of which components begins
immediately.
The digital to analog converter 37 supplies to the sound system 11
a voltage corresponding to the waveshape amplitude just computed.
Since these computations are carried out in real time, the analog
voltage supplied from the converter 16 comprises a musical
waveshape having a fundamental frequency established by the current
frequency number R.sub.(current) then being supplied via the line
14.
At the beginning of each computation interval t.sub.x, the
frequency number R.sub.(current) is supplied via a gate 38 and
added to the previous contents of a note interval adder 39. Thus
the contents of the adder 39, supplied via a line 40, represents
the value (qR) designating the waveshape sample point currently
being evaluated. Preferably the note interval adder 39 is of modulo
2W, where W is the highest order Fourier component evaluated by the
system 15.
Each of the calculation timing pulses t.sub.cp1 through t.sub.cp16
is supplied via an OR gate 42 to a gate 43. This gate 43 provides
the value qR to a harmonic interval adder 44 which is cleared at
the end of each amplitude computation interval t.sub.x. Thus the
contents of the harmonic interval adder 44 is incremented by the
value (qR) at each calculation interval t.sub.cp1 through
t.sub.cp16, so that the contents of the adder 44 represents the
quantity (nqR). This value is available on a line 45.
An address decoder 46 accesses from a sinusoid table 47 the value
##EQU11## corresponding to the argument nqR received via the line
45. The sinusoid table 47 may comprise a read only memory storing
values of ##EQU12## at intervals of D, where D is called the
resolution constant of the memory. With this arrangement, the value
##EQU13## will be supplied on a line 48 during the first
calculation interval t.sub.cp1. During the next interval t.sub.cp2,
the value ##EQU14## will be present on the line 48. Thus in
general, the value ##EQU15## will be provided from the sinusoid
table 47 for the particular n.sup.th order component specified by
the timing interval output from the counter 32.
A set of harmonic coefficients C.sub.n is stored in a harmonic
coefficient memory 49. As each sinusoid value is supplied on the
line 48, the harmonic coefficient C.sub.n for the corresponding
n.sup.th order component is accessed from the memory 49 by a memory
address control circuit 50 which receives the calculation timing
pulses t.sub.cp1 through t.sub.cp16. The sin value from the line 48
is multiplied by the accessed coefficient C.sub.n in a harmonic
amplitude multiplier 51. The product, corresponding to the value of
the Fourier component F.sup.(n) presently being evaluated, is
supplied via a line 52 to the accumulator 33. In this manner,
consecutive sets of Fourier components are evaluated during
consecutive computation intervals t.sub.x. Accumulation of these
components, and conversion to an analog waveshape by the converter
37 results in the desired tone production.
The frequency numbers R stored in the memory 17 are related to the
nominal fundamental frequencies of the musical notes produced by
the computor organ 15, 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 ##EQU16## 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 .sup.12 .sqroot.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 15, and hence is assigned the frequency number R
of unity. In this example, N = 2W = 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.No. 6 1864.66 0.8913 35.92
A.sub.6 1760.00 0.8412 38.06 G .sub.No. 6 1661.22 0.7940 40.32
G.sub.6 1567.98 0.7494 42.72 F .sub.No. 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.No. 6 1244.51 0.5947 53.82 D.sub.6 1174.66 0.5613 57.02 C
.sub.No. 6 1108.73 0.5298 60.41 C.sub.6 1046.50 0.5000 64.00
______________________________________
From the foregoing Table II, it is apparent that the fundamental
frequency of the generated musical tone is proportional to the
frequency number R.sub.(current) supplied via the line 14 to the
tone generator 15. Thus, when utilized in conjunction with the
glide circuitry 10 of FIG. 2, a glide effect will be achieved
automatically each time one of the keyboard switches 12 is
depressed to play a note.
Slalom Glide
Slalom glide is produced using the circuitry 55 of FIG. 3. In the
embodiment shown, the glide begins approximately a whole tone lower
in frequency than the nominal pitch of the note selected by the
keyboard switches 12. The tone glides upward in frequency through
the true pitch to a frequency approximately a whole tone above the
selected note. The tone then decreases in frequency until the true
pitch again is reached. The glide ends, and tone production
continues at the nominal fundamental frequency established by the
frequency number R accessed from the memory 17 when the switch 12
is depressed.
To being the slalom glide, the "start glide" pulse on the line 21
causes the selected frequency number R to be loaded from the line
18 into a shift register 56 analogous to the register 23 of the
FIG. 1 embodiment. The line 21 connected to the "load" control
input of the shift register 56. As in that FIG. 1 embodiment, the
value R is loaded into the register 56 at a position shifted to the
right by m=4 positions. That is, the most significant bit of the
frequency number R is entered into the fifth shift register
position 56-5. Thus as before, the value ##EQU17## is supplied via
the lines 24' from the shift register 56 to the complement circuit
27'.
In FIG. 3, the complement circuit 27' comprises a set of
exclusive-OR gates 27-1 through 27-j each receiving one input from
the corresponding shift register position 56-1 through 56-j. The
value j is equal to the number of bits in the frequency number R
supplied from the memory 17.
Each gate 27-1 through 27-j is enabled by a "complement" signal
obtained via a line 57 from the "1" output of a flip-flop 58. This
flip-flop 58 is set (S) to the "1" state by the "start glide"
signal on the line 21. Thus during the initial, increasing
frequency portion of the glide, the signal on the line 57 is high.
As a result, the gates 27-1 through 27-j supply at their outputs a
signal which is the one's complement of the number contained in the
positions 56-1 through 56-j of the register 56. These outputs are
supplied to the adder 28'. The "complement" signal from the line 57
is supplied to the carry input of the adder 28'. Together the carry
input and the outputs from the gates 27-1 through 27-j constitute
the two's complement of the shift register 56 contents. This value
is summed with the frequency number R supplied via the line 18 by
the adder 28' to obtain the value R'=R-S. This value R' is supplied
from the adder 28' to the tone generator 15 via the line 14 as the
current frequency number R.sub.(current).
During the initial, increasing frequency portion of the glide, the
value R is shifted one position to the right in the register 56
each time the glide clock 13 provides a timing pulse 25 (FIG. 1) on
the line 26' via an enabled AND gate 78. To this end, a shift
control flip-flop 59 which is set to the "0" state at the start of
glide provides an enable signal from its "0" output via a line 60
to an AND-gate 61. Glide clock pulses are gated to the "shift
right" control terminal of the register 56 via the line 62.
The shift register 56 has x=2j positions, so that as the R number
is right shifted, bits of lesser significance are not lost, but are
stored in the register positions 56-(j+l) through 56-x. Of course,
each time the register 56 is right shifted, a smaller value
##EQU18## is supplied to the lines 24' since each right shift
corresponds to incrementing the value m by one. As a result, the
value R'=R-S supplied from the adder 28' decreases, and the
produced frequency increases closer to the nominal pitch of the
selected note.
The value m is maintained in a counter 63 that is loaded with the
initial value m=4 (ie., binary 0100) upon occurrence of the "start
glide" signal on the line 21. The contents m=4 in the counter 63
results in a signal on a line 64 to reset the shift control
flip-flop 59 initially to the "0" state. This is accomplished by
providing the contents of the counter stages 63-1, 63-2 and 63-4
via respective invertors 65-1, 65-2 and 64-4 to three of the four
inputs of a four terminal AND gate 66. The contents of the counter
stage 63-3 is supplied directly to the remaining input of the AND
gate 66.
When the shift control flip-flop 59 is in the "0" state, a low
signal is supplied via a line 67 to the up/down control input of
the counter 63. This places the counter 63 in the count up mode, so
that each glide timing pulse from the clock 13 will increment the
counter. Thus as the register 56 is right shifted, the contents of
the counter 63 will contain the current value m.
The frequency of the produced tone first reaches the nominal pitch
of the selected note, the glide does not terminate. Rather, the
circuit 55 switches to a mode in which the rational fraction
##EQU19## increases with time and is added to the selected
frequency number R. This causes the generated tone to continue to
increase in frequency above the nominal pitch.
The mode transition occurs when m=16. This condition results in an
output on a line 68 from a four terminal AND gate 69 that receives
as inputs the contents of the counter stages 63-1 through 63-4. The
signal on the line 68 is supplied via an AND gate 70, enabled by
the "1" output from the flip-flop 58, to the set input of the shift
control flip-flop 59. As a result, this flip-flop 59 switches to
the "1" state so as to enable glide timing pulses from the clock 13
to be supplied via an AND gate 71 and a line 72 to the "shift left"
control terminal of the register 56. The high signal from the "1"
output of the flip-flop 59 also conditions the counter 63 to count
down from its current value m=16.
Each glide timing pulse 25 now causes the value R that effectively
was stored in the shift register positions 56-(j+ l) through 56-x
to be left shifted in the register 56. Thus the value ##EQU20##
increases from a starting value of ##EQU21## as m is decremented.
These values of S now are added to the frequency number R. To this
end, occurrence of the m=16 signal on the line 68 also resets the
flip-flop 58 to the "0" state, so that the "complement" signal on
the line 57 is terminated. As a result, the exclusive-OR gates 27'
do not function as a complementer, but rather pass the output S
from the shift register 56 directly to the adder 28'. The sum
R'=R+S thereby is supplied via the line 14 from the adder 28' to
the associated tone generator. The frequency of the produced tone
continues to increase.
Eventually, when the value has decremented to m=4, the produced
frequency will be approximately a full tone above the nominal pitch
of the selected note. The circuit 55 then will cause the frequency
to decrease until the nominal pitch again is reached. This is
accomplished by right shifting the contents of the register 56 to
obtain decreasing values of S, which are added to the frequency
number R in the adder 28'.
Such operation is conditioned when the contents of the counter 63
reaches m=4. The resultant signal on the line 64 sets the shift
control flip-flop 59 to the "0" state so as to enable right
shifting of the register 56 and incrementing of the counter 63. The
flip-flop 58 remains in the "0" state so that no "complement"
signal occurs on the line 57 and hence the circuit 27' does not
complement the value S, but provides it unchanged to the adder 28'.
The signal on the line 64 also is supplied via an AND gate 73,
enabled by the "1" output of the flip-flop 59, to set a flip-flop
74 to the "1" state in preparation for ending the slalom glide when
the true pitch is reached.
The slalom glide terminates when the value m=16. At such time, the
value S supplied via the lines 24' from the register 56 will
approach zero, so that the output R'=R+S from the adder 28' will
approach the frequency number R of the selected note. The value
will be exactly R if the number of bits in each frequency number
stored in the memory 17 is equal to or less than j, so that when
m=16, the contents of the shift register positions 56-1 through
56-j will be all zeros.
When m=16, the signal on the line 68 will go high. Since the
flip-flop 74 is in the "1" state, a high signal is provided on the
"1" output line 75. Thus both inputs to a NAND gate 76 are high,
causing the output thereof on a line 77 to go low. This disables
the AND gate 78 so that no more glide timing pulses 25 can reach
the counter 63 or the shift register 56. The glide ends and tone
production continues at the nominal pitch of the selected note. At
the beginning of the next glide, when a new note is played, the
start glide signal on the line 21 resets the flip-flop 74 to the
"0" state, so that the line 74 goes low, causing the line 77 to go
high and enabling the AND gate 78 to provide glide timing pulses 25
to the register 56 and the counter 63.
PORTAMENTO
The circuit 80 of FIG. 4 produces a portamento effect wherein the
generated tone glides from the nominal frequency of the note
previously played to that of a new note selected on the keyboard
switches 12. The portamento takes place in steps that are
proportional to a fixed percentage of the frequency of the tone
currently being generated.
To this end, the circuit 80 provides the current frequency number
R.sub.(current) to the associated tone generator 15 from an
accumulator 81 via a line 14' and an enabled AND gate 90. When the
musician releases a key, the frequency number associated with that
last note remains in the accumulator 81 as the starting value of
R.sub.(current). Upon selection of a new note, frequency number
increments .DELTA.R given by: ##EQU22## are added (or subtracted)
from the frequency number currently in the accumulator 81 until the
frequency number R.sub.(new) associated with the new note is
reached. Thereafter tone production continues at the nominal pitch
of the new note. The increments .DELTA.R are added at timing
intervals established by a portamento clock 82.
When a new keyboard switch 12 is selected, the corresponding
frequency number R.sub.(new), obtained from the memory 17, is
compared with the value R.sub.(current) presently in the
accumulator 81. If R.sub.(new) <R.sub.(current) a comparator 83
provides a signal on a line 84 that conditions the circuit 80 to
subtract the increments .DELTA.R from R.sub.(current). Conversely,
if the new note is higher in frequency than the previous note, no
signal occurs on the line 84 and the increments .DELTA.R are added
to R.sub.(current).
To obtain the value .DELTA.R, the current frequency number
R.sub.(current) from the accumulator 81 is divided by the constant
k in a divider circuit 85. The quotient, corresponding to the value
.DELTA.R, is supplied via the lines 86 to a set of exclusive -OR
gates 87. Each of the gates 87 also receives as one input the
signal on the line 84. Thus, when the new note is lower in
frequency than the note last played, so that the signal on the line
84 is high, the gates 87 function as a complement circuit. When
R.sub.(new) >R.sub.(current), the signal on the line 84 is low
so that the gates 87 pass the increment .DELTA.R unchanged.
Each timing pulse from the portamento clock 82 enables a gate 88
that provides the output from the gates 87 to the accumulator 81.
Thus when the signal on the line 84 is low, each timing pulse from
the clock 82 causes the increment value .DELTA.R (see equation 7)
to be gated from the divider 85 to the accumulator 81, where it is
added to the previous contents thereof.
As a result, the current frequency number supplied to the tone
generator 15 is equal to the value R.sub.(current) in the
accumulator 81 prior to occurrence of the latest portamento clock
pulse plus an increment .DELTA.R equal to that last value of
R.sub.(current) divided by k. During successive portamento clock
intervals, additional increments .DELTA.R are added to the
accumulator 81 contents. Each such increment itself is of different
value, since each is computed from a different value of
R.sub.(current).
When the new note is of lower fundamental frequency than the
previous note, the signal on the line 84 is high and the gates 87
function as a complementor. The signal on the line 84 also is
supplied to the "carry" input of the accumulator 81. Thus each
portamento clock pulse causes the two's complement of the value
.DELTA.R to be added to the contents of the accumulator 81. This is
the equivalent of subtracting the value .DELTA.R from the value
R.sub.(current) in the accumulator 81. The accumulator 81 thus
provides to the tone generator 15 a new current frequency number
that is lower in value than the previous one.
Subsequent to the playing of one note but prior to the selection of
the next note, the previous frequency number remains in the
accumulator 81. However, since no keyboard switch 12 is depressed,
no input is provided to an OR gate 89. As a result, the output of
the gate 89 is low, thereby disabling the AND gate 90. As a result,
the frequency number R.sub.(current) in the accumulator 81 is not
supplied to the tone generator 15 and note production is inhibited.
As soon as the next keyboard switch is closed, a signal is supplied
via the OR gate 89 to enable the AND gate 90, and thereby to
initiate tone production. Portamento begins at the frequency
established by the value R.sub.(current) previously obtained in the
accumulator 81.
In this manner, the circuit 80 of FIG. 4 causes each note to slide
from the pitch of the note previously played to that of the newly
selected note. The portamento does not take place in equal steps,
but rather in increments .DELTA.R (equation 7) that depend on the
current frequency number. Thus the generated tone changes in
frequency by a different incremental value at each step of the
portamento. In the embodiment of FIG. 5, a portamento effect is
produced in which at each step the frequency is incremented by an
equal amount .DELTA.R' given by: ##EQU23## where R.sub.(new) and
R.sub.(previous) respectively are the frequency numbers of the new
and previously selected notes.
To obtain the portamento increment .DELTA.R', the frequency number
R.sub.(previous) associated with the note last played is stored in
a register 96 (FIG. 5). From this is subtracted the frequency
number R.sub.(new) supplied on a line 97 from the memory 17 when
the new switch 12 is depressed. The subtraction is carried out in a
subtract circuit 98 which provides the difference value and its
associated sign via the lines 99 and 100 to a divide by k circuit
101. The quotient provided by the divider 101 on a line 102
corresponds to the value .DELTA.R' (see equation 8).
The portamento increments .DELTA.R' are added algebraically in an
accumulator 103 that is cleared at the beginning of the portamento
operation. When the new switch 12 is closed, a signal is supplied
via an OR gate 104, a one-shot multivibrator 105 and a line 106 to
the "clear" input of the accumulator 103. Then, each timing pulse
from a portamento clock 107 enables a gate 108 that provides the
increment .DELTA.R' from the line 102 to the accumulator 103, where
it is algebraically added to the previous contents thereof. Thus at
each step of the portamento, the contents .SIGMA..DELTA.R of the
accumulator 103 represents the total change in frequency number
value since the beginning of the portamento.
This value .SIGMA..DELTA.R' is supplied via a line 110 to an adder
111 where it is summed with the previous frequency number
R.sub.(previous) obtained via a line 112 from the storage register
96. The sum obtained by the adder 111 corresponds to the current
frequency number R.sub.(current).
During the portamento interval, the value R.sub.(current) is
supplied to the tone generator 15 via a line 113, and enabled gate
114, an OR gate 115 and an AND gate 116 that is enabled any time
that a keyboard switch 12 is depressed. The gate 114 is enabled
during portamento production by the "1" output of a flip-flop 117
that is set to the "1" state upon occurrence of the "start
portamento" signal on the line 106.
The portamento terminates when the current frequency number reaches
the value of the new frequency number R.sub.(new). At that time,
the flip-flop 117 is reset to the "0" state. As a result, the "1"
output goes low, thereby disabling the gate 114. The value
R.sub.(current) from the adder 111 no longer is supplied to the
tone generator 15. Instead, the new frequency number R.sub.(new)
from the line 97 is supplied to the tone generator 15 via a gate
119 that is enabled by the "0" output of the flip-flop 117 on a
line 120, and via the OR gate 115, the AND gate 116 and the line
14. Thus tone production continues at the exact nominal frequency
of the selected note. Resetting of the flip-flop 117 also triggers
a one-shot multivibrator 121 which causes the value R.sub.(new)
from the line 97 to be entered into the register 96, where it is
stored for use the next time that portamento is produced.
A comparator 123 is used to ascertain when the current frequency
number in the adder 111 has reached the new frequency number
supplied on the line 97. If the pitch of the new note is higher
than that of the previous note, the sign signal on the line 100
will be high, thereby enabling a NAND gate 124. During portamento
production, the value R.sub.(current) will start at a value below
that of R.sub.(new) so that the output of the comparator 123 on the
line 125 will be low. However, as soon as R.sub.(current) is
incremented to a value that just exceeds R.sub.(new), the
comparator 123 provides a high signal on the line 125. Since both
inputs to the NAND gate 124 are high, its output goes low, causing
the output of another NAND gate 126 to go high. This signal, on the
line 127, resets the flip-flop 117, thereby terminating the
portamento interval.
Conversely, when the new pitch is lower in frequency than that of
the previous note, the sign signal on the line 100 is low. The NAND
gate 124 is disabled. However, the low signal on the line 100 is
inverted by an inverter 128 and used to enable a NAND gate 129.
During portamento production, the value R.sub.(current) is
decreasing. As soon as this value becomes slightly less than
R.sub.(new), the comparator 123 provides a high output on a line
130 to the NAND gate 129. As a result, the output of the gate 129
goes low, causing the NAND gate 126 to provide a high output that
resets the flip-flop 117. In this manner, portamento production is
terminated.
Observe that in the embodiment of FIG. 4 the portamento terminates
when the current frequency number in the accumulator 81 is
approximately equal to R.sub.(new). The last increment added or
subtracted into the accumulator 81 during the portamento will cause
the signal on the line 84 to change state. Thereafter, the circuit
80 will alternately add and subtract increments each approximately
equal to R.sub.(new) /k to the current frequency number in the
accumulator 81. Thus the value R.sub.(current) supplied to the tone
generator 15 will not exactly equal R.sub.(new) but will be
alternately very slightly higher and lower than this value. Such
slight variation is not detectable by a person listening to the
resultant generated tone, which is heard at the nominal pitch of
the selected note.
The various components of the musical instrument disclosed herein
are conventional circuits well known in the digital computer art.
As indicated by the following Table III, many of these items are
available commercially as integrated circuit components.
TABLE III ______________________________________ Conventional
Integrated Component Circuit* (or other reference)
______________________________________ Note interval adder (a) SIG
8260 arithmetic logic 39 and harmonic element [p. 37] interval
adder 44 (b) SIG 8286 gated full adder [p. 97] (c) TI SN5483,
SN5483 4-bit binary full adders [p. 9-271] (may be connected as
shown in Flores.sup.1 Section 11.1 to accumulate sum) Sinusoid
table 47 (a) TI TMS4405 sinusoid table and memory address and
addressing circuitry decoder 46 (b) TI TMS4400 ROM containing 512
words of 8-bits [p. 14- 188] programmed to store sin values
Harmonic Amplitude (a) May be implemented as shown Multiplier 51 in
application sheet SIG cata- log, p. 28 using SIG 8202 buffer
registers and 8260 arithmetic element (b) Also can be implemented
using SIG 8243 scaler [p. 65] Adder 28 and 111 SIG 8268 gated full
adder Harmonic coefficient SIG 8223 read-only memory memory 49 and
storage which includes address access control 50 control circuitry
______________________________________ *TI = Texas Instrucment Co.
[Page references are to the TI "integrated Circuits Catalog for
Design Engineers", First Edition, January, SIG = Signetics,
Sunnyvale, California [Page references are to the SIG "Digital 8000
Series TTL/MSI" catalog, copyright 1971 .sup.1 Flores, Ivan
"Computer Logic" Prentice-Hall, 1960
* * * * *