p0 = output start time (seconds) p1 = duration (seconds) p2 = pitch (Hz or oct.pc) p3 = amplitude (absolute, for 16-bit soundfiles: 0-32768) p4 = first half-wavetable reference p5 = second half-wavetable reference p6 = wavetable mid-crossover point [0.0-1.0] p7 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0] p2 (pitch), p3 (amplitude), p6 (wavetable mid-crossover point) and p7 (pan) can receive dynamic updates from a table or real-time control source. p4 (first half-wavetable reference) and p8 (second half-wavetable reference), if used, should be references to pfield table-handles. Author Brad Garton, 7/2007
In addition, the 'join' point of the two waveforms (p6, "WMIDPOINT") can be dynamically modulated for timbral change throughout the note:
HALFWAVE can produce both mono and stereo output.
Sample Scores
very basic:
   rtsetparams(44100, 1)
   load("HALFWAVE")
   w1 = maketable("wave3", 1000, 0.5, 1, 0)
   w2 = maketable("wave3", 1000, 0.5, 1, 180)
   dex = maketable("line", 1000, 0,0, 1,1, 2,0.5)
   HALFWAVE(0, 3.5, 8.00, 20000, w1, w2, dex)
   rtsetparams(44100, 2)
   load("HALFWAVE")
   amp = 3000
   ampenv = maketable("line", 1000, 0,0, 1,1, 9,1, 10,0)
   dur = 9.8
   w1 = maketable("wave3", 1000, 0.5, 1, 0, 1, 0.2, 0, 3, 0.1, 0)
   w2 = maketable("wave3", 1000, 0.5, 1, 180, 4, 0.5, 180, 7, 0.1, 180)
   basepitch = 7.00
   for (i = 0; i < 49; i += 1) {
      dex = maketable("line", "nonorm", 1000, 0, random(), 1, random(), 2, random(), 3, random())
      prange = 0.24
      poff = maketable("line", "nonorm", 1000, 0, irand(0, prange),
         0.5, irand(0, prange), 1.4, irand(0, prange),
         2.5, irand(0, prange), 3, irand(0, prange), 5, irand(0, prange))
      pan = maketable("line", "nonorm", 1000, 0, random(), 1, random(), 2, random(), 3, random())
      HALFWAVE(0, dur, basepitch+poff, amp*ampenv, w1, w2, dex, pan)
   }