Automated Presentation of directory src/exampleCode/audio/harmonizer/

HUB | Up | Download | Pheedbak | Tree | Topic | A-Z | Search | Hot | New


Please be aware: what appears below are the v4.2 DT bits in auto-generated html form.
As we have the time, we will update these to reflect the current "state of the world".


README file from "harmonizer" directory

           ~4Dgifts/toolbox/src/exampleCode/audio/harmonizer README


     Simple harmonizer - a real-time audio pitch bender example program


     Usage: harmonizer note1 <note2 note3 ... >
     
     	Output is to the standard Indigo audio device (speaker).
     
     	Notes are specified by an integer relating the note in 
	half steps to middle C.  
     
     	Middle C would be 0. C# would be 1
     
     	for no effect at all     :      harmonizer 0
     	for the chipmunk effect  : 	harmonizer 12
     	for a deep voice machine :	harmonizer -7
     	to simulate a major cord : 	harmonizer 0 4 7

     
     Comments: 
     
     	Advise running as root or suid root to take advantage of
     	memory pinning and non-degrading high priority of audio 
	process.  To make harmonizer setuid root, run the following
	command:
                   chown root harmonizer ; chmod 4755 harmonizer

     	Libraries you need to compile with come from the Digital
     	Media Development option, now up to version 1.1 (for 
     	systems running IRIX 4.0.X) and version 1.2 (for systems
     	running IRIX 5)
     
     	Pitch shifting of realtime input from the microphone.
     
     	Code isn't optimized. 
     
     	With the computing power of the indigo R3k, about 4 notes
     	can be harmonized simultaneously without a problem.
     	R4k does well up to even 8 notes.


     Harmonizer algorithm :

           Assume that the original pitch that we're bending
           has its orginal pitch at MIDDLEC.  This is
           an arbitrary starting point and could be anything. 

           To halve the pitch (move it down an octave) we 
           duplicate samples.  AS expected, only half of the 
           input buffer is used as it  gets copied to the audio 
           output buffer. 

           To double the pitch (move it up an octave) we 
           just copy every other sample of the original sound 
           into the audio output buffer.

           Both of these are handled by computing the ratio
           of the original pitch to the desired output pitch.
           And skipping/repeating samples accordingly.
           
           For an octave higher, the ratio is 2.0:1.0 and
           samples are skipped. For an octave lower, the
           ration is 0.5:1.0 and samples are doubled.
           For a musical interval of a perfect fifth higher,
           the ration is 1.5:1.0, etc. 

           To make calculations based on a piano keyboard, the
           TWELFTH_ROOT_OF_TWO is used as a multiplier to
           find any pitch on the piano keyboard.  The number
           of half-steps away a pitch is from MIDDLEC is
           the power that the ratio is raised to. Thus,
           the C-sharp above MIDDLEC has a ratio of
           TWELFTH_ROOT_OF_TWO:1.0 with respect to MIDDLEC.
           The D Natural above MIDDLE C is
           TWELFTH_ROOT_OF_TWO ^ 2 : 1.0 with repect to
           MIDDLEC and so forth.

           The output pitch is based on the sampled audio input 
           only. So this the time over which the pitch is 
           harmonized is discetized and only the audio input
           buffer for that duration of time is used as the
           sample input for the algorithm.  Consequently,
           a continuous version of this algorithm (ala
           glissando) would be less efficient to code.
           

Files of interest from "src/exampleCode/audio/harmonizer" directory

Source

Documentation

Reference


Select any combo of files you'd like to send yourself a compressed tar image of. Executables/scripts are indicated with a trailing `*' character. (Depending upon the browser, it may be necessary to hold down the Ctrl key to select/deselect disjoint items.) a compressed tar image of the above-selected items.
OR, ...
a compressed tar image of the entire harmonizer directory.

Copyright © 1995, Silicon Graphics, Inc.