[sci.electronics] Need circuit to drop music an octave

ceg@nova.stanford.edu (Chris Gronbeck) (07/21/90)

I'm looking for suggestions as to the best way to design a circuit to
drop music
one or more octaves.  A typlical application being making an electric guitar
perform like a bass.  Any hints would be useful.  Thanks.

Christopher Gronbeck
ceg@nova.stanford.edu

jthornto@fs1.ee.ubc.ca (THORNTON JOHAN A) (07/21/90)

In article <1990Jul20.223615.4305@portia.Stanford.EDU> ceg@nova.stanford.edu (Chris Gronbeck) writes:
>
>I'm looking for suggestions as to the best way to design a circuit to
>drop music
>one or more octaves.  A typlical application being making an electric guitar
>perform like a bass.  Any hints would be useful.  Thanks.
>

The basic octavo circuit is:
  - send the signal into a clipper    __|~~
  - feed output into a divide by two flip-flop
  - wave-shape the output (filter...)

 -------  _/__/   -----------------------------------------------------
        _|  ___|    E l e c t r i c a l      |  Johan Thornton, Esq.
       | | |_/     E n g i n E E r i n g     |-------------------------
       |/|  __|     U n i v e r s i t y      |  jthornto@fs1.ee.ubc.ca
       |-| |/__     o f   B r i t i s h      |-------------------------
       | |_____|      C o l u m b i a        |   This space for rent
 ----  |__|/_|   ------------------------------------------------------

crs@lanl.gov (Charlie Sorsby) (08/03/90)

In article <1332@fs1.ee.ubc.ca>, jthornto@fs1.ee.ubc.ca (THORNTON JOHAN A) writes:
= In article <1990Jul20.223615.4305@portia.Stanford.EDU> ceg@nova.stanford.edu (Chris Gronbeck) writes:
=>
=>I'm looking for suggestions as to the best way to design a circuit to
=>drop music
=>one or more octaves.  A typlical application being making an electric guitar
=>perform like a bass.  Any hints would be useful.  Thanks.
=>
= 
= The basic octavo circuit is:
=   - send the signal into a clipper    __|~~
=   - feed output into a divide by two flip-flop
=   - wave-shape the output (filter...)

Not quite...

Several problems:

1)  Even assuming only a single note at a time (i.e. no chords,
etc.) this will only give the fundamental pitch of each note--no
harmonics--thus the "color" of each note will be lost.

2)  If more than one note is played at a time, even more
information will be lost.  Depending on the clip levels, you will
obtain (using a much oversimplified description) only the lowest
frequency available at any given moment.

3)  It will double the length (duration) of the tune so you get
twice as much music for your time :)

Nevertheless, subject to its limitations, the method described will
lower the notes *it sees* by an octave.

Best,

Charlie Sorsby						"I'm the NRA!"
	crs@lambda.lanl.gov
	sorsby@pprg.unm.edu
-- 
Charlie Sorsby
			crs@lambda.lanl.gov
			crs@agps.lanl.gov

FC138001@ysub.ysu.edu (Phil Munro) (08/04/90)

  I thought this was easy to do with digital techniques.  First do an
A/D, then a D/A with varying clock frequency.  Or something like that.

R_Tim_Coslet@cup.portal.com (08/04/90)

In article <1332@fs1.ee.ubc.ca>, jthornto@fs1.ee.ubc.ca (THORNTON JOHAN A) writ
es:
= In article <1990Jul20.223615.4305@portia.Stanford.EDU> ceg@nova.stanford.edu 
(Chris Gronbeck) writes:
=>
=>I'm looking for suggestions as to the best way to design a circuit to
=>drop music
=>one or more octaves.  A typlical application being making an electric guitar
=>perform like a bass.  Any hints would be useful.  Thanks.
=>
= 
= The basic octavo circuit is:
=   - send the signal into a clipper    __|~~
=   - feed output into a divide by two flip-flop
=   - wave-shape the output (filter...)

NO! The clipper by itself will destroy the "signal" information.

The only way I know of that will definitely do what you want is a
Digital Signal Processor doing a Fast Fourier Transform on the input,
divide the "frequencies" obtained by 2, and inverse Fourier Transform
to generate the output.

There is probably some less expensive "Analog" method (probably using
"modulators" of some sort) to rearange the spectrum, but I am not that
familiar with this.

                                        R. Tim Coslet

Usenet: R_Tim_Coslet@cup.portal.com
BIX:    r.tim_coslet

tuv@pmafire.UUCP (Mark Tovey) (08/06/90)

 In article <1990Jul20.223615.4305@portia.Stanford.EDU> ceg@nova.stanford.edu 
(Chris Gronbeck) writes:
>
>I'm looking for suggestions as to the best way to design a circuit to
>drop music
>one or more octaves.  A typlical application being making an electric guitar
>perform like a bass.  Any hints would be useful.  Thanks.
>
> 
   My memory is very dim at this point but I recall reading years ago in
something like Popular Electronis or something like that about plans for 
an ultrasonic sniffer. This device utilized the receiver transducer for 
the old style television remote control units to pickup ultrasonic sounds.  
This is where my memory gets real hazy. If I remember correctly, the signal
was passed to a circuit that resembled the front end of a radio receiver and
reduced the signal down to some intermediate bandwidth. From here it was 
converted to normal audio and passed into an audio amplifier.

   I have no idea how well it worked or how to go about building one, but
it seems to me that the two problems are similar: shifting a signal down
a known amount in the spectrum. Any ideas or thoughts?

tell@oscar.cs.unc.edu (Stephen Tell) (08/07/90)

In article <1990Aug06.150222.23167@pmafire.UUCP> tuv@pmafire.UUCP (Mark Tovey) writes:
>
> In article <1990Jul20.223615.4305@portia.Stanford.EDU> ceg@nova.stanford.edu 
>(Chris Gronbeck) writes:
>>
>>I'm looking for suggestions as to the best way to design a circuit to
>>drop music
>>one or more octaves.  A typlical application being making an electric guitar
>>perform like a bass.  Any hints would be useful.  Thanks.
>>
>> 
>   My memory is very dim at this point but I recall reading years ago in
>something like Popular Electronis or something like that about plans for 
>an ultrasonic sniffer. This device utilized the receiver transducer for 
>the old style television remote control units to pickup ultrasonic sounds.  
>This is where my memory gets real hazy. If I remember correctly, the signal
>was passed to a circuit that resembled the front end of a radio receiver and
>reduced the signal down to some intermediate bandwidth. From here it was 
>converted to normal audio and passed into an audio amplifier.

This is perfectly reasonable thing to do; I recall a similar article
fairly recently.  The device is also useful for listening to bats.  You are
correct in your description until you mentioned "bandwidth."  Substitute
"frequency" for a true statement, or read on...

>   I have no idea how well it worked or how to go about building one, but
>it seems to me that the two problems are similar: shifting a signal down
>a known amount in the spectrum. Any ideas or thoughts?

Since no one else has jumped in, I'll try to remember my communications theory
class of a few years ago.  The action of the heterodyne converter you
described above is qualitatively different from the "reduce by one or more
octaves" function.  The heterodyne converter "mixes" the input signal with a
constant sinewave in a nonlinear element, ideally, a multiplier.  The result
is a signal at the frequency (or frequencies) which are the _sum_ and
_difference_ of the input and the constant sinewave.  Note that the only
change in "bandwidth" that has occured is a doubling because both the sum and
difference are involved.  This is essentialy AM modulation. One of the two
"sidebands" can be discarded and the result can still be demodulated
("single-sideband"); the bandwidth doubling is not a required.

For more info:  Any good communications theory textbook for EE's.  (warning:
calculus required) an OK one: Roden, Martin S. _Analog and Digital
Communication Systems_, Prentice Hall 1979, 1985.  ISBN 0-13-032822-7
There are likely better ones.

Summary: mixing with a local oscilator results addition and subtraction of
frequencies.

Now, in music (and elsewhere) the boundaries of an "octave" differ by a
factor of two; the required operation to reduce a frequency by an octave
is a division.  If you were to take an octave-wide chunk of the audio
spectrum, say from 1000 to 2000Hz, mix it with a 500Hz signal and filter
appropriately, an 1000Hz input would be reduced an octave to 500Hz.
but, a 2KHz input ends up at 1500Hz, which is not an octave down.  One
octave has become more than an octave.  That doesn't make for music that
sounds right.

The technique of clip, devide with a flip-flop, and filter will
reduce a single signal by an octave.  It will also introduce a lot of
distortion, which may not be bad if you're playing certain kinds of
guitar music :-)

To do better, you might take a set of notch filters and device up the spectrum
of interest into lots of little pieces. In each one, split the signal two
ways.  One path gets clipped, and has only frequency information.  Rectify and
filter the other to get amplitude information.  Devide the frequency
information by two with a flip-flop, and use a voltage-controlled-amplifier
controlled by the amplitude half of the signal to get the amplitude right.
Finally, sum up all these little parts of the signal and you've reduced the
input by an octave.  For better results, split into more frequency bands.  I
would guess that eight or ten bands per (input) octave might even sound good.

For perfect results, split into infinitely many frequency bands.  This is
essentialy the same as taking the fourier transform of the signal,
changing the frequency information, and taking the inverse transform, which
someone already suggested.  This is done with a digital signal processor.

One last method, for guitars anyway:  Sell the guitar, and get a MIDI
guitar controller, which you play like a guitar and it produces MIDI
signals corresponding to the notes you hit.  Run the MIDI data through a
computer to mess with the note data and drop things down an octave, and then
to a synthesizer set up to sound like a guitar.   Some synths can
probably do the translation without an external computer.  (1/2  :-)

Sorry this got so long, but I hate to see incomplete information go
uncompleted.  Someone may get really confused.  Someday it may be me who
needs the info.
--------------------------------------------------------------------
Steve Tell      e-mail: tell@wsmail.cs.unc.edu usmail:  #5L Estes Park apts
CS Grad Student, UNC Chapel Hill.                       Carrboro NC 27510

vekurpan@tekred.CNA.TEK.COM (Vincent E Kurpan) (08/07/90)

In a previous article an author suggests using a mixer sceme
to convert frequency.  this can not be used for anything like this
because it will only subtract frequency and not divide.  If you
did this the spacing between the notes would be all wrong and
would sound very strange... unless you had a different channel for
each note in which case you might as well build the whole source.

Unfortunately, the simplest scheme may be to digitize one cycle of the
waveform and then play back with a clock that is synthesized for each
note.  This is not totally trivial and works only one note at a time.
Theres no free lunch.

weimin@zeus.ece.jhu.edu (weimin liu) (08/08/90)

In article <32424@cup.portal.com> R_Tim_Coslet@cup.portal.com writes:
>The only way I know of that will definitely do what you want is a
>Digital Signal Processor doing a Fast Fourier Transform on the input,
>divide the "frequencies" obtained by 2, and inverse Fourier Transform
>to generate the output.

This will change the "color" of the notes, i.e., the resonant properties
of a particular instrument.  What you really want is to change the 
fundamental frequency (f0) but not the resonant frequencies.  I don't
know much about music but for speech there are several methods, such as
linear predictive coding (LPC) and cepstrum (not spectrum) analysis, to
separate f0 from the higher resonant stuff.

They did something like this once on Late Night with David Letterman in
which Paul Shaefer's voice pitch was significantly lowered through the
microphone.

weimin@zeus.ece.jhu.edu

paul@hpldola.HP.COM (Paul Bame) (08/09/90)

I think Rat Shack still sells their tape recorder which allows you
to up to double the playback speed of a tape and have the pitch
corrected.  I believe they use the technique described years ago
in one of the popular electronics magazines using two "bucket-brigade"
audio fifos and some fancy clocking which amounts to some type of
re-sampling.  I'm surprised some DSP type hasn't chimed in to describe
this in detail.

			-Paul "Spice is the Variety of Life"
			paul@hpldola.hp.com	N0KCL

bobt@pogo.WV.TEK.COM (Bob Tidrick) (08/10/90)

In article <6101@tekred.CNA.TEK.COM> vekurpan@tekred.CNA.TEK.COM (Vincent E Kurpan) writes:

>Unfortunately, the simplest scheme may be to digitize one cycle of the
>waveform and then play back with a clock that is synthesized for each
>note.  This is not totally trivial and works only one note at a time.
>Theres no free lunch.

This is not exactly true. When one waveform is digitized it can be played back
at half speed. If you are sampling at say 50 Khz send it out again at 25 Khz
and you will have the wave form at half speed. A reasonably fast micro processor
should be able to keep up with the playing. All you will lose is half of the
waveforms. but you will need to lose these anyway. What needs to be done is
sense the highest peak of the wave form and look for it again. This should
give you one period. send this to a circuit that will clock it out again at
half of the sample rate. Another waveform can be caught while this one is
going out. Higher notes will take less samples and lower ones more. You would
want to be sure to allow enough memory in your playback circuit for the
lowest notes. Something similar to this has been done to compress speech.
The wave forms are put out on a tape running at half speed. When it is played
back the speech is at the proper frequency but twice as fast.

Just my  $.04 worth (inflation you know)
-- 
                                                Bob Tidrick
                                                GPID Engineering
                                                Tektronix Inc.
                                                Wilsonville OR.