PITCH SCALER USER’S MANUAL

 

About the author

Introduction

Parameters Explained

Attributes Explained

Tweaking Tips : WARNING READ CAREFULLY

Known Bugs and further development

Technology & Licences

Acknowledgements

Contact

 


About the author


I’m a European (French) student recently graduated in computer science applied to business management. I’m member of the Moov’Art’ association which activity is centered around audiovisual projects. As my passion is around sound, music and multimedia, I also decided to contribute in the development of Buzz’s plugins. And that’s it, after months , one of my dreams is coming true : my first DSP effect, the Pitch Wizard !

 


Introduction


So what can do this machine for you ?

Here’s a short list of what features you can manage with it :

 

Many old generators couldn’t manage the new pitch wheel MIDI messages. Plug in your MIDI keyboard to your computer, connect the Pitch Wizard after a generator, set up the same midi channel for both generator and Pitch Wizard, set the PW amplitude, play and enjoy !

 

a Tired of sung or speech samples that you can’t transpose without getting a Mickey mouse’s or Dark Vador’s voice ? Select the Formant process in the Pitch Wizard tracks and transpose them as you wish (don’t expect more than 1 octave up and down : some things still remain utopia)

 

b Do you feel lazy and have a great CPU : make your chords dynamically by adding tracks to the Pitch Wizard and setting the relative transpositions on each track. One key pressed, a chord out of your speakers !

 

c Do you want to apply different effects to each Pitch Wizard track (delay on the higher chord partial, vibrato on the lower, etc etc): select an AuxBus channel for each track and connect the desired effects after the AuxReturn machines !

 

d Tired of recurrent pad presets : connect Pitch Wizard after a generator, set up the length of scaling slides and tweak it, you’ll getting more evolutive pads with moving partials !

 Back to top


Parameters Explained


 

u Size of the FFT transform used to process analysis and synthesis (in some cases this value has to be tweaked to avoid strange sounds in Formant mode, sorry. I’m still working on it)

      Adjust this value according to the sample rate of your audio driver and to the “voice” to process (Higher fundamentals require less FFT size, Lower fundamentals require more)

      Here’s a informational note for sample rates (for “good” results):

                        Harmonic mode          Formant mode

<= 44 kHz:      256/512                      128/256          

      48 kHz:      512/1024                    256/512

96 kHz :           1024/2048                  512/1024

      >96kHz     interpolate and try        interpolate and try

      This parameter will become an attribute when I fix the problems with Formant recognition.

v Pitch wheel range in semitones

w Position of the pitch wheel

x Initial value of transposition when setting a scaling slide length, instantaneous transposition level else (doesn’t modify the sound while a slide is in progress, just sets the next value to use).

y Final value of transposition when setting a scaling slide length, instantaneous transposition level else (modifies the sound while a slide is in progress by interpolating values).

z Length of the scaling slide

{ Processing type : Harmonics is good only for instruments, Formants can be selected for both human voice and  instruments (listen and make your choice)

| Redirection to one or two internal auxiliary bus channels of Buzz (Mono or stereo mode)

} Volume of this track

 

  Back to top


Attributes Explained



 

u Overlap rate of synthesis frames after each inverse FFT (Fast Fourier Transform)

v MIDI channel used to control the pitch wheel parameter

w Anti-click system inertia when triggering the Gain parameter

x Anti-click system inertia when triggering the pitch wheel position


                                                                                                   

  Back to top


Tweaking Tips : WARNING  !!! READ CAREFULLY !!!


 

-         This version seems to be quite stable, but check your CPU performances if you decide to increase the overlap rate or the FFT Size: this could lead to a complete freeze of your system because of the lack of resources.

 

-         Adapt the size of the FFT according to the average fundamental frequency of the input signal in Formant mode. See next section for explanations ...


Known Bugs and further development.


 

- The Formant processing mode has to be considered as an early Alpha version feature : it’s based on a very simplified algorithm that will be much more enhanced in the future.

 

- The code is not optimised yet, I will enhance this among each new release

  Back to top


Technology & Licences


           

            Pitch Wizard License

                       

                                   Pitch Wizard (c)

                                   Version 0.1 beta (july 2003)

                                  

                                   Buzz Effect : Pitch Scaling routines

 

                                   COPYRIGHT 2003 Marc Alvarez (mad-knight@wanadoo.fr)

 

Permission to use, copy and distribute this software and its

 documentation for any purpose and FOR FREE is hereby granted without fee, provided that

 the above copyright notice and this license appear in all source copies.

 THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF

 ANY KIND. The code is not distributed. It remains property of the author and should not be recovered from reverse engineering neither sold or distributed in any way.

 

                                   This software is based on freeware programs :

 

The FFT engine is a freeware code :

 

FFTReal

            Version 1.03, 2001/06/15

 

            Class of Fourier transformation of real data (FFT and IFFT)

            Portable ISO C++

 

            (c) Laurent de Soras ldesoras@club-internet.fr

 

The Pitch Scaling algorithm is DERIVED from a freeware code :

 

NAME: smsPitchScale.cp

VERSION: 1.01

HOME URL: http://www.dspdimension.com

KNOWN BUGS: none

 

SYNOPSIS: Routine for doing pitch scaling while maintaining

duration using the Short Time Fourier Transform.

 

DESCRIPTION: The routine takes a pitchScale factor value which is between 0.5

(one octave down) and 2. (one octave up). A value of exactly 1 does not change

the pitch. numSampsToProcess tells the routine how many samples in indata[0...

numSampsToProcess-1] should be pitch scaled and moved to outdata[0 ...

numSampsToProcess-1]. The two buffers can be identical (ie. it can process the

data in-place). fftFrameSize defines the FFT frame size used for the

processing. Typical values are 1024, 2048 and 4096. It may be any value <=

MAX_FFT_FRAME_LENGTH but it MUST be a power of 2. osamp is the STFT

oversampling factor which also determines the overlap between adjacent STFT

frames. It should at least be 4 for moderate scaling ratios. A value of 32 is

recommended for best quality. sampleRate takes the sample rate for the signal

in unit Hz, ie. 44100 for 44.1 kHz audio. The data passed to the routine in

indata[] should be in the range [-1.0, 1.0), which is also the output range

for the data.

 

COPYRIGHT 1999 Stephan M. Sprenger <sms@dspdimension.com>

 

The Wide Open License (WOL)

 

 Permission to use, copy and distribute this software and its

 documentation for any purpose is hereby granted without fee, provided that

 the above copyright notice and this license appear in all source copies.

 THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF

 ANY KIND. See http://www.dspguru.com/wol.htm for more information.

 

 

 

  Back to top


Acknowledgements


 

I wish to thank many people that contributed in a way to this project :

 

- Oskari Tammelin for having made Buzz and the API @ www.jeskola.net

- Marc Van Agteren who keeps the treasures @ www.buzzmachines.com

- Edward Blake for his detailed guide to build Buzz machines

- Miko Appo for his helpful machine template @  http://web.hibo.no/~mva/dev/ch_template106.zip

- Stephen Sprenger for his useful article about pitch scaling and a piece of his code @ www.dspdimension.com

- Steven W. Smith for his wonderful DSP book @ www.dspguide.com

- Laurent de Soras which FFTReal routines are the core of this plugin (I don’t remember where I got his package but here’s his mail : ldesoras@club-internet.fr

- Matteo Frigo’s team who is in charge of the FFTW project (ultra fast FFTs) @ www.fftw.org (I wish I could use FFTW routines but I would have to distribute Buzz sources to comply with the GNU GPL, and as Buzz is not open source I used FFTReal)

- My girlfriend who supported me along this long and hard trip (no mail neither picture, sorry ...)

- all Buzz community members that help keeping this virtual studio the best as it can be

 


Contact


You can send a mail to mad-knight@wanadoo.fr for comments, suggestions, bug reports, songs made with this plugin, or even commercial adaptation requests and job proposition ...

  Back to top