an open-source digital signal processing and sound synthesis language
about · links · contact
TRANS3 -- pitch-transposiion using 3rd-order interpolation
in RTcmix/insts/std


quick syntax:
TRANS3(outsk, insk, dur, AMP, TRANSP[, inputchan, PAN])

CAPITALIZED parameters are pfield-enabled for table or dynamic control (see the maketable or makeconnection scorefile commands). Parameters after the [bracket] are optional and default to 0 unless otherwise noted.



   p0 = output start time (seconds)
   p1 = input start time (seconds)
   p2 = output duration (or endtime if negative) (seconds)
   p3 = amplitude multiplier (relative multiplier of input signal)
   p4 = interval of transposition (oct.pc)
   p5 = input channel [optional; default is 0]
   p6 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0]

   p3 (amplitude), p4 (transposition) and p6 (pan) can receive dynamic updates
   from a table or real-time control source.

   Author: Doug Scott; rev. for v4 by JG, 2/11/06



TRANS3 transposes the input for the specified output duration (p2), starting at the input start time (p1). It has the same syntax as TRANS and is used in the same fashion. The difference is that TRANS3 uses 3rd-order interpolation to achieve the pitch-shift. This is s a bit more expensive computationally, but it does produce smoother results.

Usage Notes

The use of TRANS3 is identical to the TRANS instrument. See the TRANS Usage Notes for more information.

Sample Scores

very basic:
   rtsetparams(44100, 2)
   load("TRANS") // note that TRANS3 is loaded in the TRANS library

   rtinput("mysound.aif")

   trans = -0.02
   // do both channels of a stereo input file
   TRANS3(outskip=1, inskip=2, dur=4, amp=1, trans, inchan=0, pan=0)
   TRANS3(outskip=1, inskip=2, dur=4, amp=1, trans, inchan=1, pan=1)


slightly more advanced:
   rtsetparams(44100, 2)
   load("TRANS")

   rtinput("mysound.aif")

   start = 0
   inskip = 0
   dur = 7.8
   amp = 1.0
   ampenv = maketable("line", 1000, 0,0, 1,1, 7,1, 7.8,0)

   low = octpch(-0.05)
   high = octpch(0.03)
   transp = maketable("line", "nonorm", 1000, 0,0, 1,low, 3,high)
   transp = makeconverter(transp, "pchoct")

   /*
   This transposition starts at 0, moves down by a perfect fourth (-0.05),
   then up to a minor third (0.03) above the starting transposition.  The
   table is expressed in linear octaves, then converted to octave.pc by the
   call to makeconverter.
   */
   TRANS3(start, inskip, dur, amp*ampenv, transp)


See Also

maketable, makeconverter, MOCKBEND, SCRUB, TRANS, TRANSBEND, PVOC