<section id="PrefaceWhatsNew"><title>What's new in Csound &csoundversion;</title>
<!--     <bridgehead>Release Notes for Csound 6.XX ()</bridgehead>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend=""><citetitle></citetitle></link></simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>-->

<bridgehead>Release Notes for Csound 6.18 (2022 October)</bridgehead>
  <para>
    Mainly a bug-fixing release.  Major new facility is MP3 (MPEG) audio files
    support is now implemented for both input and output with libsndfile.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="scanmap"><citetitle>scanmap</citetitle></link>
                reads internal state of scanu.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                elapsedcycles, elapsedtime, eventcycles, and eventtime. See
                under "bugs fixed" for details.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                Fixed midi list printing to stdout part of the list.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>Fixed bug in sum.</simpara>
            </listitem>
            <listitem>
              <simpara>
                pitchamd opcode caused segmentation fault (macOS) (#1599)
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed crash on channel setting with empty channel name.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed bug in ftloadk (#1611).</simpara>
            </listitem>
            <listitem>
              <simpara>
                Now, qnan works even when compiled with fast arithmetic.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed the flanger opcode for sample-accurate mode, where the
                xdel input was not being correctly offset.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                elapsedcycles, elapsedtime, eventcycles, and eventtime
                (introduced as fixed versions of timek, times, timeinstk and
                timeinsts) now return the correct values instead of being one
                cycle late.  This preserves backward compatability.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Protect against types not given as strings.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed OSClisten and OSCsend_lo to work with zero-data messages.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Changing OSCsend to match manual.</simpara>
            </listitem>
            <listitem>
              <simpara>rifft segfaulted for non n^2+1 arrays. Fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Fixed sum.</simpara>
            </listitem>
            <listitem>
              <simpara>Calling csound via exec() in PHP hanged Apache.</simpara>
            </listitem>
            <listitem>
              <simpara>
                instr0 can't be freed and this won't be changed in 6.*.
                Added comments to that effect.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Channel issue fixed (#1631).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                Fix for issue #1613: fixes the rtauhal module for all cases of
                multichannel output. Previously the module would not work
                correctly with some devices.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Csound now supports MP3 files for input and output.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>
                Many changes to Bela csound.  See bela web site for details.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

<bridgehead>Release Notes for Csound 6.17 (2022 February)</bridgehead>
  <para>
    Mainly a bug-fixing release but also a major re-organisation of the
    libraries to move all opcodes with dependencies into a separate plugins
    repository. The only exception to this is the OSC opcodes (which
    depend on liblo). This is in part a preparation for Csound7. This is
    the last release using the current parser (v.2).
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                scanmap and scansmap are like the xscanmap/xscansmap opcodes but
                work with the mainstream scan opcodes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                trigexpseg, triglinseg are aliases for trigExpseg, trigLinseg.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                xscan opcodes are deprecated as they add nothing to the scan
                opcodes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                bformdec2 provides more ambisonic decoding of bformat audio.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                metrobpm is like metro but the timing is in beats per minute
                and the signal can be offset by a proportion of the cycle.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                sequ is a csound version of an hardware sequencer. It has many
                modes and options.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                gtadsr implements a gated ADSR envelope.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                Message printing has been revised so -m0 suppresses (nearly)
                all messages.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                add channel count to list_audio_devices (called when the flag
                --devices is used so that it can be parsed by frontends.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                Event opcode does not bail out if the instrument called does
                not exist.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Added an optional prefix to soundfont instruments printed via
                sfilist.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                lpslots reworked with better control.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Utilities:
          <itemizedlist>
            <listitem>
              <simpara>
                cvanal now uses the SADIR environment to look for analysis
                files.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>
                fareylen called a non-existent function leading to a crash.
                Removed typo.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                turnoff could cause clicks in some cases; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>turnoff3 improved.</simpara>
            </listitem>
            <listitem>
              <simpara>
                cntReset fixed; had a false initialisation code.
              </simpara>
            </listitem>
            <listitem>
              <simpara>binary search in bpf fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>pvscfs frame counting issue fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                --sample-accurate fixed in a-rate form of tabsum.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Problem in atssinnoi fixed; did read outside allocated memory.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                hrtfmove fixed; it could use the wrong value for sr.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Named instruments could use wrong structure in redefinition.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixes in the jack backend relating to --get-system-sr.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                pvcross frequency warp mode fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                lpcfilter/lpcanal bug where processing could not be restarted
                after a freeze fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The emugens collection of opcode, a large group incorporation
                mainly array operations were not made available due to a small
                editing error.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If using a float build (rather than a double) array access
                could be wrong.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                In some cases instr0 code could ignore loops after an incorrect
                warning. Now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bugs in mp3len and similar fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Crash in syncgrain issue #1773 fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                UDO Fsign output is fixed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                winsound has been removed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>
                CreateThread2 is a new API function that allows threads to be
                given a user-defined stack size.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>External Plugin Code:
          <itemizedlist>
            <listitem>
              <simpara>
                For a variety of reasons including licences, plugin opcodes
                that allow csound to be a host for VST plugins is available
                from <ulink
                url="https://github.com/gogins/csound-vst3-opcodes.git">
                <citetitle>https://github.com/gogins/csound-vst3-opcodes.git</citetitle></ulink>
                where installation instructions can be found. It has been shown
                to work on Linux, MacOS and Windows.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.16 (2021 June)</bridgehead>
  <para>
    This delayed release was mainly a bug fixing release but there
    are significant new opcodes, including support for simpler use of MIDI
    controls and a new opcode to connect to an Arduino.  Also there is an
    optional limiter in the sound output chain.
  </para>
  <para>
    Also there are a number of new filters including the final
    opcode written by the 'father of computer music' Max Mathews (with
    Julius Smith)! ported by Joel Ross.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="cntDelete"><citetitle>cntDelete</citetitle></link>
                deletes a counter object.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="lfsr"><citetitle>lfsr</citetitle></link>,
                a linear feedback shift register opcode for pseudo random
                number generation.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ctrlsave"><citetitle>ctrlsave</citetitle></link>
                stores the current values of MIDI controllers in an array.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="turnoff3"><citetitle>turnoff3</citetitle></link>
                extends tuning off to remove instrument instances that are
                queued via scheduling but not yet active.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ctrlprint"><citetitle>ctrlprint</citetitle></link>
                prints the result of a ctrlsave call in a form that can be
                used in an orchestra.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link
                linkend="ctrlprintpresets"><citetitle>ctrlprintpresets</citetitle></link>
                prints the MIDI controller preset.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ctrlselect"><citetitle>ctrlselect</citetitle></link>
                selects a preset for MIDI controller values.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ctrlpreset"><citetitle>ctrlpreset</citetitle></link>
                defines a preset for MIDI controllers.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="outall"><citetitle>outall</citetitle></link>
                writes a signal to all output channels.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="scale2"><citetitle>scale2</citetitle></link>
                is similar to scale but has different argument order and has
                an optional port filter.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="arduinoReadF"><citetitle>arduinoRead</citetitle></link>
                extends the arduino family to transfer floating point values.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="triglinseg"><citetitle>triglinseg</citetitle></link>
                and
                <link linkend="trigexpseg"><citetitle>trigexpseg</citetitle></link>
                are triggered versions of linseg and expseg.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="vclpf"><citetitle>vclpf</citetitle></link>
                is a 4-pole resonant lowpass linear filter based on a typical
                analogue filter configuration.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="spf"><citetitle>spf</citetitle></link>
                is a second-order multimode filter based on the Steiner-Parker
                configuration with separate lowpass, highpass, and bandpass
                inputs and a single output.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="skf"><citetitle>skf</citetitle></link>
                is a second-order lowpass or highpass filter based on a
                linear model of the Sallen-Key analogue filter.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="svn"><citetitle>svn</citetitle></link>
                is a non-linear state variable filter with overdrive control
                and optional user-defined non-linear map.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="autocorr"><citetitle>autocorr</citetitle></link>
                computes the autocorrelation of a sequence stored in an array.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="turnoff2"><citetitle>turnoff2_i</citetitle></link>
                is init-time version of turnoff2.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="scanu2"><citetitle>scanu2</citetitle></link>
                is a revision of scanu to make it closer to the original
                concept.  Damping now a positive value and plucking
                initialisation totally rewritten, plus various code
                improvements.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="st2ms"><citetitle>st2ms</citetitle></link> and
                <link linkend="ms2st"><citetitle>ms2st</citetitle></link>
                are stereo to MS and vice-versa conversion opcodes
                with stereo width control.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="mvmfilter"><citetitle>mvmfilter</citetitle></link>
                is a filter with pronounced resonance and controllable decay time.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New gen:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="GEN44"><citetitle>gen44</citetitle></link>
                allows the writing of stiffness matrices for scanu/scanu2 in a
                textual format.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                The operations += and -= now work for i and k arrays.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                k-rate array operators are now only processed at k-rate.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                An instance of a named instrument can have a decimal fraction
                added to the name to allow for tied notes and other facilities
                that were only avaliable for numbered instruments.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Options:
          <itemizedlist>
            <listitem>
              <simpara>
                New options --limiter and --limiter=num (where num is in range
                [0,1]) inserts a tanh limiter (see clip version2) at the end of
                each k-cycle. This can be used when experimenting or trying
                some alien inputs to save your ears or speakers.  The default
                value in the first form is 0.5.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A typing error meant that the tag &lt;CsShortLicense&gt; was
                not recognised, although the English spelling (CsSortLicence)
                was. Corrected.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New option --default-ksmps=num changes the default value from
                the internal fixed number.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New environment variable `CS_USER_PLUGINDIR` has been added to
                indicate a user plugin dir path (in addition to the system
                plugin directory). This added search path defaults to standard
                locations on different platforms (documented in the manual).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                slicearray_i now works for string arrays.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="OSCsend"><citetitle>OSCsend</citetitle></link>
                always runs on the first call regardless of the value of kwhen.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvadd"><citetitle>pvadd</citetitle></link>
                can access the internal ftable -1.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pan2"><citetitle>pan2</citetitle></link>
                efficiency improved in many cases.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Add version of pow for the case kout[] = kx ^ ivalues[]
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="expcurve"><citetitle>expcurve</citetitle></link>
                and
                <link linkend="logcurve"><citetitle>logcurve</citetitle></link>
                now incorporate range checks and corrects end values.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Streaming LPC opcodes have had a major improvement in
                performance (>10x speedup for some cases), due to a new
                autocorrelation routine.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Restriction on size of directory name size in ftsamplebank
                removed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If a non string is passed to sprintf to be formatted as a %s
                an error is signalled.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                readk family of opcodes now support comments in the input which
                is ignored.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Added iflag parameter to sflooper.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Opcodes beosc, beadsynt, tabrowl, and getrowlin removed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General Usage:
          <itemizedlist>
            <listitem>
              <simpara>
                Csound no longer supports Python2 opcodes following end of life
                for Python 2.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixed:
          <itemizedlist>
            <listitem>
              <simpara>
                The wterrain2 opcode was not correctly compiled on some
                platforms.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                fprintks opcode crashed when format contains one %s.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in rtjack when number of outputs differed from the number
                in inputs.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                FLsetVal now works properly with "inverted range" FLsliders.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Conditional expressions with a-rate output now work correctly.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in --opcode-dir option fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                sfpassign failed to remember the number of presets causing
                confusion.  This also affects sfplay ad sfinstrplay.
              </simpara>
            </listitem>
            <listitem>
              <simpara>midiarp opcode fixed (issue 1365).</simpara>
            </listitem>
            <listitem>
              <simpara>
                A bug in moogladder where the value of 0dbfs affected the
                output is now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bugs in several filters where istor was defaulting to 1 instead
                of 0 as described in the manual have been fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in assigning numbers to named instruments fixed.  This
                particularly affected dynamic definitions of instruments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Use of %s format in sprintf crashed if the corresponding item
                was not a string.  Thus now gives an error.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fix bug in ftprint where trigger was not working as advertised.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Asynchronous use of diskin2 fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                pvs2tab does not crash in the sliding case but gives a error.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                In some circumstances turnoff2 could cause the silencing of
                another instrument for one k-cycle. This is now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                timeinstk behaved differently in a UDO to normal use. This
                has been corrected.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed midiarp init method as it was causing an issue with one
                of the arp modes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed scaling of attack stage of xadsr.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Fix printarray behaviour for string arrays (default is to print
                at every cycle); added a variant without trigger.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug with named instrument merging in new compilations fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ATSA opcode atsinnoi could cause memory problems.  The 6.16
                release is better but not yet verified.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                New autocorrelation routine can compute in the frequency or
                in the time domain. Thanks to Patrick Ropohl for the improvement
                suggestion.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Minimum cmake version bumped to 3.5.</simpara>
            </listitem>
            <listitem>
              <simpara>Image opcodes removed, now in plugin repo.</simpara>
            </listitem>
            <listitem>
              <simpara>faust opcodes removed, now in plugin repo.</simpara>
            </listitem>
            <listitem>
              <simpara>Python opcodes are now in plugin repo.</simpara>
            </listitem>
            <listitem>
              <simpara>Ableton Link opcodes moved to plugins repo.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
        <itemizedlist>
          <listitem>
            <para>MacOS:
            <itemizedlist>
              <listitem>
                <simpara>
                  Some opcode libs with dependencies have been removed from
                  release. Image opcodes, Python opcodes, Faust opcodes, and
                  FLTK Widget opcodes have been moved to a separate repository
                  and are not included anymore.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
        </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.15 (2020 August)</bridgehead>
  <para>
    Quite a few new opcodes are in this release as well as extensions of
    existing opcodes. In particular there is the introduction of streamed
    LPC which has long been requested.
  </para>
  <para>
    Another feature in this release is a large number of internal fixes to
    incorrect data access, as well as the usual tweaks and changes.
  </para>
  <para>
    Starting from this release, no third-party graphic frontends are shipped
    with the installation packages on MacOs and Windows. Users should
    install their choice of frontend separately.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="ftset"><citetitle>ftset</citetitle></link> sets
                multiple elements of a table to a given value.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="lufs"><citetitle>lufs</citetitle></link> opcode
                calculates a momentary, integrated and short-term loudness meter.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="bob"><citetitle>bob</citetitle></link> filter is
                a numerical simulation of the Moog analog resonant filter.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="sterrain"><citetitle>sterrain</citetitle></link>
                is an enhanced version of <emphasis>wterrain</emphasis> with
                more possible orbits.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="wterrain2"><citetitle>wterrain2</citetitle></link>
                is a alternative enhancement of <emphasis>wterrain</emphasis>
                with less variation that <emphasis>sterrain</emphasis>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                count, count_i, cntCreate, cntRead, cntReset, cntCycles and
                cntState together implement a new counter object that cycles
                through a constant range, similar to in PD.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                new alias for sc_ opcodes: sc_lag -> lag, sc_lagud -> lagud,
                sc_trig -> trigholf, sc_phasor -> phasortrigo.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="println"><citetitle>println</citetitle></link>
                is similar to <emphasis>printf</emphasis> but without the
                trigger.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="rndseed"><citetitle>rndseed</citetitle></link>
                provides a seed for rnd and birnd functions.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                arduinoStart, arduinoRead and arduinoStop provide a protocol for
                transferring sensor data from an Arduino to Csound.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                lpcfilter, lpcanal, allpole, pvslpc, pvscfs, apoleparams,
                resonbnk: new streaming linear prediction opcodes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="gauss"><citetitle>gauss</citetitle></link> -
                new version accepting mean and standard deviation as
                parameters, implementing the Box-Muller algorithm.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvsbandwidth"><citetitle>pvsbandwidth</citetitle>
                </link> - returns spectral bandwidth.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="vps"><citetitle>vps</citetitle></link> -
                vector phase shaping.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>#include of a url now works again.</simpara>
            </listitem>
            <listitem>
              <simpara>
                The end of file case is better handled in the pre-lexer.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Corrections to reported line number in a few error cases.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Conditional expressions yielding strings fixed, and other cases.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The sequence //* no longer is misinterpreted as starting a
                comment block.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                When using sample-accurate mode a new score event that was
                aligned to the ksmps could stop one cycle early. Now correct.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The maximum line length for various inputs has been increased
                to 8192.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Now legal to set the number of input channels to zero.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                New score opcode B is like b but is accumulative.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The end of file case is better handled in the pre-lexer.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Options:
          <itemizedlist>
            <listitem>
              <simpara>
                keep-sorted-score and simple-sorted-score both can take a
                filename in which to write the score after a =.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                print_version option prints the version of Csound used at the
                end of a rendering.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                syntax-check-only return an error if syntax failed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                opcode-dir: loads all plugin opcodes from a given directory (in
                addition to the plugins loaded from the opcode plugin path).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>cent, semitone, dB accuracy improved.</simpara>
            </listitem>
            <listitem>
              <simpara>taninv2 now has an array version.</simpara>
            </listitem>
            <listitem>
              <simpara>ftslice has more variations.</simpara>
            </listitem>
            <listitem>
              <simpara>
                ptable opcodes are now deprecated as they are identical to table
                opcodes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                GEN20 case 9 (sinc function) now has an optional parameter to
                the x range.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fprint(k)s now has a %s format specifier.</simpara>
            </listitem>
            <listitem>
              <simpara>lastcycle corrected and clarified.</simpara>
            </listitem>
            <listitem>
              <simpara>
                chn_k can now accept the mode as a string. r=1 (input),
                w=2 (output), rw=3 (input+output).
              </simpara>
            </listitem>
            <listitem>
              <simpara>trim improved.</simpara>
            </listitem>
            <listitem>
              <simpara>The HDF5 opcodes upgraded to v1.12.0.</simpara>
            </listitem>
            <listitem>
              <simpara>GEN16 is more careful about lengths of data.</simpara>
            </listitem>
            <listitem>
              <simpara>
                scale has additional optional arguments to specify the input
                range.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                schedule/schedulek can take arguments from an array.
              </simpara>
            </listitem>
            <listitem>
              <simpara>GEN11 improved with respect to rounding errors.</simpara>
            </listitem>
            <listitem>
              <simpara>
                partials has an improved method of phase estimation.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ctrlinit checks that the values are in the range [0,127].
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                fin as format argument changed, and is now deprecated.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fink has the same argument change.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>
                lpanal now contains a new alternative algorithm based on the
                Durbin method, in addition to the original Gauss method.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General Usage:
          <itemizedlist>
            <listitem>
              <simpara>
                if using FLTK the widgets are reset on ending a run, which was
                not always the case earlier.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>setcols was very broken; fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                cps2pch and cpsxpc fixed in the case of a table of frequencies.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The 31 bit pseudo random number generator was seeded with zero
                then it stayed on zero. That is now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>GEN 20 was wrong in the case of 8 (triangle).</simpara>
            </listitem>
            <listitem>
              <simpara>
                Turning off an instrument from inside a UDO now works.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Macro expansion in both orchestra and score had a bug related
                to uninitialised variable.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If a UDO set a different value for ksmps any output to a
                multichannel device was incorrectly calculated.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                reshape array had a number of problems, now all fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ftprint had problems not following the manual regarding
                trig == -1 and could show the wrong index.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Part2txt/partials occasionally emitted the same track (including
                same track ID) multiple times for a given time point. Fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                expsegr was incorrectly dependent on ksmps when sample-accurate
                is in force.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                table opcodes had an error when used with non power-of-two
                lengths.
              </simpara>
            </listitem>
            <listitem>
              <simpara>A fencepost error in OSCraw fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                A crash when csound.evalcode was called without csound.start
                fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Many fixes to memory problems, mainly invalid reads/writes.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>New API to hard override default plugin dir.</simpara>
            </listitem>
            <listitem>
              <simpara>New API function to load plugins.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
        <itemizedlist>
          <listitem>
            <para>WebAudio:
            <itemizedlist>
              <listitem>
                <simpara>Built using Emscripten 1.39.13 (LLVM backend).</simpara>
              </listitem>
              <listitem>
                <simpara>
                  New single-file release of CsoundObj.js with all classes and
                  webassembly files combined using npm and rollup.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Breaking: CsoundObj.importScripts() was removed and replaced
                  with CsoundObj.initialize().
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Paths for loading other files no longer relevant with
                  single-file
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  initialize takes in optional AudioContext, otherwise CsoundObj
                  will create one for use.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Breaking: CSOUND\_AUDIO\_CONTEXT moved from global namespace;
                  instead reference CsoundObj.CSOUND\_AUDIO\_CONTEXT.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Compile flags changed to -O3 and without debug information,
                  per recommendations for release builds by Emscripten.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Link-Time Optimization (LTO) enabled for reduced size.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>MacOS:
            <itemizedlist>
              <listitem>
                <simpara>
                  coreaudio now checks the number of channels and fails if there
                  are insufficient.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>Bela:
            <itemizedlist>
              <listitem>
                <simpara>Updated digiBelaOut and digiIOBela.</simpara>
              </listitem>
              <listitem>
                <simpara>Added trill opcode.</simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
        </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.14 (2020 January)</bridgehead>
  <para>
    A number of bug fixes and enhancements, but also potentially
    significant changes are included.
  </para>
  <para>
    For live coders the orchestra macros are now remembered between calls
    to compilerstr.  This should not change the behaviour of current valid
    orchestras but could be useful in live coding.
  </para>
  <para>
    MIDI devices now include mapping multiple devices to higher channels.
    The details are in the manual MIDI section.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New Opcodes:
          <itemizedlist>
            <listitem>
              <simpara>randc is like randi but uses a cubic interpolation.</simpara>
            </listitem>
            <listitem>
              <simpara>
                mp3out is an experimental implementation of writing an mp3 file.
                It may be replaced by the current work in libsndfile to deal
                with MPEG files.
              </simpara>
              <simpara>
                Simple example:
<programlisting>
<emphasis role="nt">&lt;CsoundSynthesizer&gt;</emphasis>
<emphasis role="nt">&lt;CsInstruments&gt;</emphasis>
<emphasis role="vg">ksmps</emphasis> <emphasis role="o">=</emphasis> <emphasis role="mi">1000</emphasis>
<emphasis role="kd">instr</emphasis> <emphasis role="nf">1</emphasis>
  aa <emphasis role="nb">diskin</emphasis> "fox.wav", 1
  <emphasis role="nb">mp3out</emphasis>  aa, aa, "test.mp3"
<emphasis role="kd">endin</emphasis>
<emphasis role="nt">&lt;/CsInstruments&gt;</emphasis>
<emphasis role="nt">&lt;CsScore&gt;</emphasis>
<emphasis role="nb">i</emphasis><emphasis role="mi">1</emphasis> <emphasis role="mi">0</emphasis> <emphasis role="mi">3</emphasis>
<emphasis role="nb">e</emphasis>
<emphasis role="nt">&lt;/CsScore&gt;</emphasis>
<emphasis role="nt">&lt;/CsoundSynthesizer&gt;</emphasis>
</programlisting>
                The syntax is "mp3out aleft, aright, Sfilename" with three optional arguments
                "mode" (0=stereo, 1=Jointstereo (default), 3=Mono),  "bitrate" defaulting to 256,
                and "quality" (in range 1 to 7) defaulting to 2 (high quality).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="metro2"><citetitle>metro2</citetitle></link> is
                like metro but with added controllable swing.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ftexists"><citetitle>ftexists</citetitle></link>
                reports whether a numbered ftable exists.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="schedulek"><citetitle>schedulek</citetitle></link>
                is a k-time opcode just like schedule.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                new array based channel opcodes:
                <link linkend="chnget">
                <citetitle>chngeti, chngetk, chngeta, chngets</citetitle></link>,
                <link linkend="chnset">
                <citetitle>chnseti, chnsetk, chnseta, chnsets</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="lastcycle"><citetitle>lastcycle</citetitle></link>
                identifies the last k-cycle of an instrument instance.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="strstrip"><citetitle>strstrip</citetitle></link>
                removes whitespace from both ends of a string.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                The conditional expression syntax a?b:c incorrectly always
                calculated b and c before selecting which to return.  This could
                give incorrect division by zero errors or cause unexpected multiple
                evaluations of opcodes.  It now implements the common C-like semantics.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Orchestra macros are now persistent, so they apply in every
                compilation after they are defined until they are undefined.
                It has been changed because of the need of live coding in
                particular. A correct orchestra should not be affected.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Following a syntax error there were cases when Csound gave a
                segmentation error. This is now fixed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Options:
          <itemizedlist>
            <listitem>
              <simpara>
                New option simple-sorted-score creates file score.srt in a more
                user-friendly format.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Revise treatment of CsOptions wrt double quotes and spaces which
                need escaping.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Setting the 1024 bit in -m suppresses printing of messages about
                using deprecated opcodes. This option is itself deprecated.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                squinewave now handles optional a or k rate argument.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                pindex opcode handles string fields as well as numeric ones.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                sflooper reworked to avoid a crash and provide warnings.
              </simpara>
            </listitem>
            <listitem>
              <simpara>event_i and schedule can take fractional p1.</simpara>
            </listitem>
            <listitem>
              <simpara>
                in soundfont opcodes better checking. Also no longer will load
                multiple copies of a soundfont, but reuses existing load.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                fluidControl has a new optional argument to control printing
                messages.
              </simpara>
            </listitem>
            <listitem>
              <simpara>bpf has an audio version now.</simpara>
            </listitem>
            <listitem>
              <simpara>stsend/stecv can work with unmatched k-rates.</simpara>
            </listitem>
            <listitem>
              <simpara>pvstrace has new optional arguments.</simpara>
            </listitem>
            <listitem>
              <simpara>lpfreson checks number of poles.</simpara>
            </listitem>
            <listitem>
              <simpara>
                syncloop had a small typing error that caused crashes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>bpfcs has new array versions.</simpara>
            </listitem>
            <listitem>
              <simpara>
                zacl can omit second argument, defaults to clearing only the
                given channel.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                outvalue attempted to use a k-rate value which could be invalid
                at the time. This is mainly a small performance problem, and
                it is now eliminated.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Channel names for chnget and chnset opcodes can now be updated
                at k-rate so they can be called within a loop.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                copya2ftab now has an optional additional argument which is an
                offset into the ftable for where to copy the array.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>
                lpanal now checks that sufficient poles are requested.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>
                CsoundQt: Released to coincide with Csound 6.14 there is CsoundQt 0.9.7.
                See Release notes
                <ulink url="https://github.com/CsoundQt/CsoundQt/blob/master/release_notes/Release%20notes%200.9.7.md">
                <citetitle>https://github.com/CsoundQt/CsoundQt/blob/master/release_notes/Release%20notes%200.9.7.md</citetitle></ulink>.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General Usage:
          <itemizedlist>
            <listitem>
              <simpara>
                // comments at the start of a line now accepted in CsOptions
                section of a csd file.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Option --orc has been corrected so it runs without a score;
                that is for ever until an exit condition.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>shiftin fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>exitnow delivers the return code as documented.</simpara>
            </listitem>
            <listitem>
              <simpara>
                fixed bug in beosc, where gaussian noise generator was not being
                initialised.
              </simpara>
            </listitem>
            <listitem>
              <simpara>OSCraw fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                ftkloadk could select incorrect internal code causing a crash.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                GEN01 when used to read a single channel of a multi-channel
                file got the length incorrect.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ftgenonce had a fencepost problem so it could overwrite a table
                in use.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                a race condition in Jacko opcodes improved (issue #1182).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                syncloop had a small typing error that caused crashes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                lowresx was incomplete and did not work as intended; rewritten
                (issue #1199)
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                if outch was incorrectly given an odd number parameters it
                would give a segmentation error. This now gives an error message.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                New plugin class for opcodes with no outputs written.
                perform time errors and init errors are also reported in the
                return code of the command line system. The new API function
                GetErrorCnt is available to do something similar in other
                variants.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>
                Function GetErrorCnt gives the number of perf-time errors, and
                adds in the init-time errors at the end of a rendering.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Function FTnp2Find no longer prints messages if the table is not
                found, but just returns NULL. Previous behaviour is available as
                FTnp2Finde.
              </simpara>
            </listitem>
            <listitem>
              <simpara>csoundGetInstrument() added.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
        <itemizedlist>
          <listitem>
            <para>WebAudio:
            <itemizedlist>
              <listitem>
                <simpara>
                  added csoundCompile to CsoundObj that adds commandline args
                  so that one can override CsOptions values in CSDs.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  added getPlayState(), addPlayStateListener(), and other
                  methods to CsoundObj for querying and listening to changes
                  of play state.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>Windows:
            <itemizedlist>
              <listitem>
                <simpara>
                  stsend reworked for winsock library.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
        </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.13 (2019 July)</bridgehead>
  <para>
    Not many new opcodes but there are a significant number of opcodes being
    extended to use arrays in a variety of ways, widening the options for
    users. There have been many fixes to the core code as well as opcodes.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><emphasis>string2array</emphasis> is a variant of
                fillarray with the data coming from a string of space separated
                values.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="nstrstr"><citetitle>nstrstr</citetitle></link>
                returns the name string of an instrument number or an empty
                string if the number does not refer to a named instrument.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="ntof"><citetitle>ntof</citetitle></link>
                converts notename to frequency at i- and k-time.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ampmidicurve"><citetitle>ampmidicurve</citetitle></link>
                is a new opcode that maps an input MIDI velocity number to an
                output gain factor with a maximum value of 1, modifying the
                output gain by a dynamic range and a shaping exponent.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>The consistency of kr, sr and ksmps reworked especially
                when there is overriding.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Corrected default 0bdfs usage.</simpara>
            </listitem>
            <listitem>
              <simpara>Resolving the path for #include files reworked to be
                more liberal.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Reading and writing to multidimensional arrays was very
                wrong. This is now correct.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Better checking for unknown array types (issue #1124)
              </simpara>
            </listitem>
            <listitem>
              <simpara>In all array operations the size of an array is
                determined at init time and no allocation happens at perf time.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Array arithmetic now respects --sample-accurate.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Score:
          <itemizedlist>
            <listitem>
              <simpara>The characters n and m could erroneously get ignored in
                scores.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Resolving the path for #include files reworked to be
                more liberal.
              </simpara>
            </listitem>
            <listitem>
              <simpara>After an error the backtrace of files and macros
                incorrectly read the information for orchestra rather than
                scores; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>The end of an r (repeated) section was not always
                correct.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Nested {} parts of a score could lead to errors.
              </simpara>
            </listitem>
            <listitem>
              <simpara>After an s statement a newline was required; no longer
                needed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>The {} score loops have been reworked to allow macros
                and expressions in the loop count.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Options:
          <itemizedlist>
            <listitem>
              <simpara>The new option --use-system-sr set the sample rate to the
                hardware/system value.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>Sending failure in OSC is now a warning rather than an
                error.
              </simpara>
            </listitem>
            <listitem>
              <simpara>passign can now have an array as the target.</simpara>
            </listitem>
            <listitem>
              <simpara>Version of bpf/bpfcos added to allow points defined
                via arrays.
              </simpara>
            </listitem>
            <listitem>
              <simpara>grain can now use tables of any size, which was only a
                power of 2.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Changing colours in FL widgets now works (it previously
                did not redraw the colour).
              </simpara>
            </listitem>
            <listitem>
              <simpara>fillarray can read from a file of values overcoming the
                argument limit.
              </simpara>
            </listitem>
            <listitem>
              <simpara>sumarray now works for audio arrays as well as for
                scalar values.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Assignment of an audio value to an audio array now works.
              </simpara>
            </listitem>
            <listitem>
              <simpara>monitor was broken in the array form.</simpara>
            </listitem>
            <listitem>
              <simpara>gendyc now respects sample-accurate mode.</simpara>
            </listitem>
            <listitem>
              <simpara>mtof and ftom now have array versions.</simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>sc_lag and sc_lagud now use the first k- or a-rate input
                when no initial value is given.
            </listitem>
            <listitem>
              <simpara>printarray now works for string arrays.</simpara>
            </listitem>
            <listitem>
              <simpara>changed2 now works for strings.</simpara>
            </listitem>
            <listitem>
              <simpara>diskgrain, syncgrain and syncloop now can do sample rate
                scaling.
              </simpara>
            </listitem>
            <listitem>
              <simpara>GEN01 correctly reads raw audio files when requested.
              </simpara>
            </listitem>
            <listitem>
              <simpara>ftaudio can now take two additional optional arguments
                for the start and end of the table data being written to file.
              </simpara>
            </listitem>
            <listitem>
              <simpara>sensekey recoded in the 'key down' mode.</simpara>
            </listitem>
            <listitem>
              <simpara>loscilx can return an audio array.</simpara>
            </listitem>
            <listitem>
              <simpara>schedule opcode reports undefined instruments in all
                cases.
              </simpara>
            </listitem>
            <listitem>
              <simpara>event_i now accepts tagged instrument numbers.</simpara>
            </listitem>
            <listitem>
              <simpara>printarray treats %d correctly.</simpara>
            </listitem>
            <listitem>
              <simpara>beadsynt now works with i arrays as well as k arrays as
                in the manual.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>hetro had a number of fixes and improvements.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General Usage:
          <itemizedlist>
            <listitem>
              <simpara>There have been a number of improvements in the semantics
                for multicore; most of these are corrections with a few
                efficiency gains.
              </simpara>
            </listitem>
            <listitem>
              <simpara>There is a maximum number of arguments for an opcode
              which was neither explicit nor policed. Attempts to use too many
              arguments now gives a syntax error.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>FLgetsnap fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>directory fixed regarding file extensions.</simpara>
            </listitem>
            <listitem>
              <simpara>FLsetText reused a string incorrectly which led to
                incorrect values.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fmb3 failed to initialise the lfo rate in some cases.
              </simpara>
            </listitem>
            <listitem>
              <simpara>ftaudio at i-rate was totally broken.</simpara>
            </listitem>
            <listitem>
              <simpara>Following a reinit printks could be skipped; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>printks fixed so it prints at correct times.</simpara>
            </listitem>
            <listitem>
              <simpara>tabrowlin and getrowlin would calculate wrong size under
                certain conditions.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>Hash Table implementation modified to expand on load for
                better performance when map contains large number of entries.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Plugin GEN functions can have a zero length, but the
                code must check for this and act accordingly. This allows for
                deferred allocations.
              </simpara>
            </listitem>
            <listitem>
              <simpara>schedule reports undefined instr numbers/names and
                continues, rather than causing an error.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Allow multiple calls to midi out controls.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>find_opcode_new and find_opcode_exact now exposed in API.
              </simpara>
            </listitem>
            <listitem>
              <simpara>After a reset a default message string callback handle
                is configured.
              </simpara>
            </listitem>
            <listitem>
              <simpara>New function csoundSystemSr added to the API to read
                hardware-imposed sample rate.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>WebAudio: libsndfile now compiled with FLAC and OGG
                support.
              </simpara>
            </listitem>
            <listitem>
              <simpara>In both orchestra and score the path tracking of
                #include expects a \ separator.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Haiku port now available.</simpara>
            </listitem>
            <listitem>
              <simpara>Allow analog in and out with different channel numbers.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.12 (2018 November)</bridgehead>
  <para>
    Many changes including the removal of vst2cs functionality due to a
    copyright issue.
  </para>
  <para>
    The changes made in 6.11 to raw format reading have been modified so
    gen1 and diskin ignore positive file formats and use the file header,
    unless the format is negative when it uses the absolute value in a raw
    audio file. This should preserve most compatibility issues.
  </para>
  <para>
   There are a number of new and improved opcodes, new facilities in
   scores and many bug fixes.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link
              linkend="fluidInfo"><citetitle>fluidInfo</citetitle></link>
              </simpara> retrieves program information from a currently loaded
              soundfont.
            </listitem>
            <listitem>
              New opcode <simpara><link
              linkend="ftaudio"><citetitle>ftaudio</citetitle></link></simpara>
              writes a ftable to an audio file; irate and triggered k-rate
              version exist and k-rate version supports sync or async writing.
            </listitem>
            <listitem>
              Version of <simpara><link
              linkend="OSClisten"><citetitle>OSClisten</citetitle></link>
              </simpara> that writes the data to a k-rate array now exists.
            </listitem>
            <listitem>
              <simpara><link linkend="OSCcount"><citetitle>OSCcount</citetitle>
              </link></simpara> returns the number of OSC incoming messages
              pending.
            </listitem>
            <listitem>
              <simpara><link
              linkend="faustplay"><citetitle>faustplay</citetitle></link>
              </simpara> and <simpara><link linkend="faustdsp">
              <citetitle>faustdsp</citetitle></link></simpara> are new opcodes
              splitting the faust DSP instantiation and performance.
            </listitem>
            <listitem>
              <simpara><link
              linkend="OSCbundle"><citetitle>OSCbundle</citetitle></link>
              </simpara> sends a collection of similar OSC messages as a single
              packet for efficiency.
            </listitem>
            <listitem>
              <simpara>beosc</simpara>
              and <simpara>beadsynt</simpara> are band enhanced
              oscillator and oscillator bank. <simpara><link
              linkend="bpfcos"><citetitle>bpfcos</citetitle></link></simpara>
              is for breakpoint files with interpolation. Similarly <simpara>
              <link linkend="lincos"><citetitle>lincos</citetitle></link>
              </simpara> adds cosine interpolation to <simpara><link
              linkend="linlin"><citetitle>linlin</citetitle></link></simpara>.
            </listitem>
            <listitem>
              <simpara><link
              linkend="printarray"><citetitle>printarray</citetitle></link>
              </simpara> and <simpara><link linkend="reshapearray">
              <citetitle>reshapearray</citetitle></link></simpara> act on
              arrays.
            </listitem>
            <listitem>
              <simpara><link
              linkend="trim"><citetitle>trim</citetitle></link>
              </simpara> and <simpara><link linkend="trim">
              <citetitle>trim_i</citetitle></link></simpara> adjust the size of
              a 1 dimensional array, either bigger or smaller, preserving data
              and/or padding with zeros.
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                New preprocessor option #includestr.  This is like #include but
                has macro expansion in the double-quote delimited string.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Use of tied notes in subinstr fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Nesting macro calls more than about 10 caused a crash; now
                unlimited nesting works.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Runtime error message now (usually) include a line number and a
                file/macro trace.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Multiple assignments such as ka, kb = 1,2  are again supported
                by the parser; it had inadvertently got lost.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The problematic use of i() with an array element directy is now
                flagged as an error.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If an included file name has a "/" in it then any nested include
                is relative to that directory. (Issue #973).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Redefinition of UDOs with zero output arguments fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A very obscure bug in running sub-instruments, which has been
                in the code for nearly a year, was fixed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                New preprocessor option #includestr. This is like #include but
                has macro expansion in the double-quote delimited string.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                'd' score opcode for real-time performance. This was issue #966.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Bug in np operation fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Use of [] syntax in a score could lead to a loss of precision
                for numbers over about 1 million; older version restored.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Nesting macro calls more than about 10 caused a crash; now
                unlimited nesting works.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The forms for delayed ending of sections (e 5 or s 5) now work
                with fractional delays; previously only read the integer part.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If an included file name has a "/" in it then any nested include
                is relative to that directory. (Issue #973).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                Add optional argument to ftom for rounding answer to integer.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                flooper2 and syncgrain etc now allow resampling.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                chnclear can now take a list of channels to clear instead of
                just one.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                printf and printf_i now are like the manual: all arguments
                beyond the format and trigger are optional.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                prints and printks can take string arguments printed with %s.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                GEN2 can now take a size of zero, which is interpreted as size
                sufficient for the number of values provided.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                faustcompile now includes a new optional parameter to allow it
                to be run in a blocking mode. Defaults (as before) to
                non-blocking.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                fillarray can be run at k-rate if any of the argument/values
                are k-rate.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                slicearray for other than i-rate arrays runs at k-rate only.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                pvstrace now has the option also to return an array containing
                the bin numbers.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>
                A coding error in mixer was fixed. It was very broken.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>
                A typo in p5glove meant that the command to read the button
                status as a bitmap only returned state of button A.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                diskin to array fixed and also use with small ksmps.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                In loscil it sometimes failed to deal with the ibas argument;
                this has now been reworked to be correct.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                madsr could overflow an internal counter when given a negative
                p3.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed mapping from threads to lua_States (issue #959).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The time calculation in flooper2, flooper, and syncgrain was
                corrected.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Resampling and pitch fixed in pvstanal
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Rare buffer overflow case in faust opcodes fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                pvsftw had an incorrect check for fft format which led to
                incorrect claim of bad format; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If ksmps was 1 the opcode linenr at arate failed to work; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>window opcode fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                The test for compatible subtypes of f-values in a number of pvs
                opcodes was wrong, causing spurious error messages.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                cosseg was broken for more than one segment; now OK.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                monitor opcode did not work correctly when using multiple
                processes; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                in the linenr opcode if the release stage was entered before
                the end of the rise the output value jumped to the end value
                and then decayed, causing a glitch. This is fixed. (#1048)
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                The various -zN options now reports the number of opcodes for
                the request, so differs with respect to deprecated and
                polymorphic opcodes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Recompilation of named instruments totally reworked to avoid
                errors and memory leaks.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The allocation of instrument names to internal numbers has been
                rewritten and should now be usable with replacements in live
                coding.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Printing the number allocated to a named instrument now behaves
                the manual, not just for debug.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If liblo version 0.29 is available csound can be built to use
                it (with a compiler flag LIBLO29) and this fixes some bugs
                related to heavy/complex use of OSClisten. Unfortunately the
                older 0.28 version is being distributed by some Linux distros.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The orchestra compiler has a number of new optimisations,
                avoiding unnecessary assignments and doing some more expression
                optimisations.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>
                csound->ReadScore was changed so it behaves the same as a score
                in a csd or sco file. This could incorrectly give an infinite
                score or not in unexpected cases.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>
                Bela: allow analog in and out with different channel numbers.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.11 (2018 May)</bridgehead>
  <para>
    There has been a great amount of internal reorganisation, which should not
    affect most users. Some components are now independently managed and will
    eventually be installable via a new package manager. The realtime option is
    now considered stable and has the "experimental" tag removed. Special
    support for the Bela platform has been introduced. There have
    been more steps towards completing the arithmetic operations involving
    a-arrays.
    <note>Note that changes to GEN01 and diskin2 may not be backward compatible
    if a non zero value is given for the format.</note>
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link
                    linkend="loscil"><citetitle>loscilphs</citetitle></link>,
                <link
                    linkend="loscil3"><citetitle>loscil3phs</citetitle></link>
                are like loscil but return the phase in  addition to the audio.
              </simpara>
            </listitem>
          </itemizedlist>
          <itemizedlist>
            <listitem>
              <simpara>
                More arithmetic between a-rate arrays and a-rate values; this
                completes the arithmetic where one or more argument is an audio
                array.
              </simpara>
            </listitem>
          </itemizedlist>
          <itemizedlist>
            <listitem>
              <simpara>
                <link
                    linkend="balance2"><citetitle>balance2</citetitle></link>
                is like balance but scales the output at a-rate,
                rather than k-rate.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                Characters following a \ in a score string are treated as
                escaped, so \n is a newline rather than two characters. It
                handles escaped a, b, f, n, r, t and v. Other characters
                following a \ ignore the backslash.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                print, printk2 now take an additional optional argument which
                if non-zero causes the k-variable name to be printed as well as
                the value.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                getrow, setrow, getcol, and setcol can now act on i-rate arrays.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                diskin2 was incorrectly described in the manual with respect to
                the iformat parameter. Now if iformat is zero the file is
                expected to have an audio header; if in the range 1-10 (rather
                than 0-9 as before) then it is opened as raw with the specified
                sample format. THIS MAY BE INCOMPATIBLE. For most users the
                value of zero will be correct.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                GEN01 now uses format 0 to get the file type from the header;
                any other value indicates a raw file. THIS MAY BE INCOMPATIBLE.
                For most users the value of zero will be correct.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                GEN01 was incorrectly documented with respect to the format
                argument. There are 9 raw formats whereas the earlier manual
                stated 6.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Small change in slicearray should allow it to be used in
                functional form in most cases.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The family of opcodes tb0 to tb15 and their initialisation
                opcodes tb0_init to tb15_init are deprecated as multi-argument
                functions are allowed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The mode filter now does not allow a frequency in the unstable
                region.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                In scanu and xscanu the value of kpos is supposed to be in the
                range [0,1]. This is now enforced by treating all negative
                values as 0 and all values bigger than 1 as 1.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>
                src_conv is now available on Windows and MacOS.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>
                Belacsound: a new frontend specific for the Bela platform is
                introduced in this version.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>
                linen was reworked to allow for long durations and overlaps.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Resetting csound caused a crash if Lua opcodes were used; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The poscil family of opcodes could give incorrect results if
                used in multi-core orchestras AND another instrument changed
                the f-table. This is now corrected.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Use of out with an audio array did not check that the array
                dimension was not greater than the number of channels, which
                caused a crash. It is now checked and truncated if too large
                with a warning.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in stereo versions of loscil introduced distortion;
                now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fencepost error in phs fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                gen49 read deleted memory if the file was not found; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Loading of LADSPA plugins when relying on search paths was
                wrong and mangled the name; now fixed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                OPCODE6DIR{64} now can contain a colon-separated list of
                directories.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The somewhat curious distinction between k-rate and a-rate
                perf-time has been removed throughput, so only threads 1, 2
                and 3 are used, the s-type output is not used, and some x-type
                inputs have been changed for direct polymorphism. This only
                matters for opcode writers as the s, and x codes and threads
                4, 5, 6 and 7 will be removed in a while.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Translations:
          <itemizedlist>
            <listitem>
              <simpara>As ever the French translations are complete.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>No changes to the API.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>
                WebAudio: from this release onwards, the Csound port for the
                web platforms has been merged into a single package henceforth
                called 'WebAudio Csound'. There are many internal changes to
                this, the AudioWorklet interface is employed wherever supported,
                with a fallback to ScriptProcessorNode elsewhere. Csound is also
                available in the form of independent Nodes, in addition to the
                original CsoundObj API. The csound.js frontend, originally
                designed for PNaCl Csound, is also ported to WebAudio Csound,
                following the deprecation of that port of Csound.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.10 (2017 December)</bridgehead>
  <para>
    This is mostly a bugfix release, including a major bug introduced in loscil
    recently. New and improved opcodes and a long orphaned GEN (53) are here, as
    well as many small internal improvements. Internal changes have removed a
    number of memory leaks.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="midiout_i"><citetitle>midiout_i</citetitle></link>
                which is like midiout, but works at i-rate.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="chnget"><citetitle>chngetks</citetitle></link> and
                <link linkend="chnset"><citetitle>chnsetks</citetitle></link> --
                versions of <emphasis>chnget</emphasis> and <emphasis>chnset</emphasis>
                for string channels that only run at perf-time.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="squinewave"><citetitle>squinewave</citetitle></link>,
                a mostly bandlimited shape-shifting square-pulse-saw-sinewave
                oscillator with hardsync.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>New Gen and Macros:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="GEN53"><citetitle>GEN53</citetitle></link>
                (which has been in the code but not documented for years) is now
                acknowledged. It creates a linear-phase or minimum-phase impulse
                response table from a source table containing a frequency
                response or an impulse response.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                Incorrect use of k-rate if..then.. in instrument 0 is now treated
                as i-rate.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Incorrect use of k-rate operations in instrument 0 are no longer
                treated as an error but a warning.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                In a csd file commented-out tags were acted upon in some cases,
                leading to truncated orchestras. This is now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Arrays can be assigned from i-rate and k-rate to krate and
                i-rate; previously rates had to match.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The use of ! as a Boolean operation (meaning negation) is now
                supported, where previously the parser accepted it but did not
                use it.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Constant folding now implemented on a wide range of arithmetic.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Attempts to use an undefined macro produce a syntax error now.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Missing " (or other terminator) in #include is noticed and
                the #include is ignored.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                In a csd file commented-out tags were acted upon in some cases,
                leading to truncated scores. This is now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>The evaluation form [..] can now be nested.</simpara>
            </listitem>
            <listitem>
              <simpara>
                The extract feature (-x from command line) now works.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Use of the score opcode x could cause spurious error messages
                which are now suppressed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                After calling a undefined macro the rest of the line is ignored.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A couple of bugs in repeated sections (r opcode) have been removed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Missing " (or other terminator) in #include is noticed and the
                #include is ignored.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Options:
          <itemizedlist>
            <listitem>
              <simpara>
                The --tempo (and -t) option now can be fractional; was
                previously limited to an integer.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                new option: --udp-console=address:port redirects console to a
                remote address:port.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                new option: --udp-mirror-console=address:port mirrors the
                console to a remote address:port.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                new option: --udp-echo echoes messages sent to the UDP server.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>loscil/loscil3 accept floating point increment.</simpara>
            </listitem>
            <listitem>
              <simpara>OSCraw closes socket after use.</simpara>
            </listitem>
            <listitem>
              <simpara>
                fout can now generate ogg format, as well as accepting -1 to
                mean the same format as -o uses.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                bitwise and opcode (&amp;) at a-rate corrected for sample-accurate
                mode.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                slicearray has an optional additional argument to give a stride
                to the slice.
              </simpara>
            </listitem>
            <listitem>
              <simpara>chnset now can have variable channel names.</simpara>
            </listitem>
            <listitem>
              <simpara>
                a-rate arrays may be added, subtracted, multiplied and scaled.
                This is a start on a-rate array arithmetic.
              </simpara>
            </listitem>
            <listitem>
              <simpara>dssiinit improved removing some crashes.</simpara>
            </listitem>
            <listitem>
              <simpara>partials improved to remove a fencepost issue.</simpara>
            </listitem>
            <listitem>
              <simpara>vco2ift fixed when an existing table is used.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>
                Emscripten: Now compiled as WebAssembly (runs in all major
                browsers). API now somewhat more conformed to other HTML5 APIs.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                CsoundQT: Now built from master branch for improved stability.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixed:
          <itemizedlist>
            <listitem>
              <simpara>
                The optionality of the last argument in sc_phasor now works.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Freezing in dconv fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                looptseg no longer crashes if presented with too few arguments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                schedule etc now work correctly with double-quoted strings
                within {{ }} strings.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                problem with CLI frontend interrupt handler fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                outs2 was broken (always wrote to channel 1 like outs1).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Various errors in the DSSI/ladspa system fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                vbap was broken in all cases except 4-speakers, now corrected.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Live evalution of Csound Orchestra code code could result in
                hard to diagnose, odd errors (e.g., crashes, division by zeros,
                NaNs). This was due to a bug in merging of newly found constants
                into the global constant pool.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <!-- <listitem> -->
            <!--   <simpara> -->
            <!--     The GNU Lesser General Public License, version 2.1, for CsoundVST -->
            <!--     and the vst4cs opcodes has been modified to grant an exception -->
            <!--     for compiling and linking with the VST2 SDK, which is available -->
            <!--     from <ulink url="https://github.com/steinbergmedia/vst3sdk">https://github.com/steinbergmedia/vst3sdk</ulink>. -->
            <!--     For more information, see <ulink -->
            <!--     url="https://github.com/csound/csound/blob/develop/Opcodes/vst4cs/licensing_considerations_for_csoundvst_and_vst4cs.md">https://github.com/csound/csound/blob/develop/Opcodes/vst4cs/licensing_considerations_for_csoundvst_and_vst4cs.md</ulink>. -->
            <!--   </simpara> -->
            <!-- </listitem> -->
            <listitem>
              <simpara>
                UDP Server now accepts some new commands, which are prefixed by
                an opcode. These include support for events (&amp;) and scores ($);
                setting control channels (@ ); setting string channels (% );
                getting control channel values via UDP (:@ ) and string channel
                contents (:% ).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Translations:
          <itemizedlist>
            <listitem>
              <simpara>As ever the French translations are complete.</simpara>
            </listitem>
            <listitem>
              <simpara>
                The Italian translations of messages are greatly improved in
                scope; about a half of error and warning messages are now done.
              </simpara>
            </listitem>
             <listitem>
              <simpara>
                Some progress as been made in German translations.
              </simpara>
            </listitem>
           </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>
                CompileCsdText now always returns a value indicating success/failure.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Eight new asynchronous versions of API functions now available:
                csoundCompileTreeAsync(), csoundCompileOrcAsync(), csoundReadScoreAsync(),
                csoundInputMessageAsync(), csoundScoreEventAsync(), csoundScoreEventAbsoluteAsync(),
                csoundTableCopyOutAsync(), and csoundTableCopyInAsync().
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                For server use, three new API functions: csoundUDPServerStart,
                csoundUDPServerStatus and csoundUDPServerClose.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>Windows</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Now compiled with Microsoft Visual Studio 2017 or later.</simpara>
                </listitem>
                <listitem>
                  <simpara>Continuous integration for Windows with AppVeyor.</simpara>
                </listitem>
                <!-- <listitem> -->
                <!--   <simpara> -->
                <!--     The AppVeyor build and installer now includes CsoundVST and -->
                <!--     the vst4cs opcodes that enable hosting VST plugins in Csound. -->
                <!--     The LGPL v2.1 license for that code has been modified, with -->
                <!--     permission of Hermann Seib the original author of the VSTHost -->
                <!--     code, to permit use with the separately downloaded VST2 SDK -->
                <!--     from Steinberg. -->
                <!--   </simpara> -->
                <!-- </listitem> -->
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>GNU/Linux</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    GNU/Linux ALSA MIDI backend now ignores some spurious ENOENT
                    error codes.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.09 (2017 May)</bridgehead>
  <para>A mixed bag of new opcodes and many fixes and improvements.</para>
  <para>
    Also as usual there are a number of internal changes, including many memory
    leaks fixed and more robust code.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="select"><citetitle>select</citetitle></link> --
                sample-by-sample comparison of audio selecting the output.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="midiarp"><citetitle>midiarp</citetitle></link> --
                generates arpeggios based on currently held MIDI notes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="hilbert2"><citetitle>hilbert2</citetitle></link> --
                a DFT-based implementation of a Hilbert transformer.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Ableton Link opcodes -- for synchronizing tempo and beat across
                local area networks.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvstrace"><citetitle>pvstrace</citetitle></link> --
                retain only the N loudest bins.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                several new unary functions/opcodes for k-rate and i-time numeric
                arrays: ceil, floor, round, int, frac, powoftwo, abs, log2, log10,
                log, exp, sqrt, cos, sin, tan, acos, asin, atan, sinh, cosh, tanh,
                cbrt, limit1.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                several new binary functions/opcodes for k-rate and i-time numeric
                arrays: atan2, pow, hypot, fmod, fmax, fmin.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="limit"><citetitle>limit</citetitle></link> --
                numeric limiting within a given range (for arrays).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="tvconv"><citetitle>tvconv</citetitle></link> --
                a time-varying convolution (FIR filter) opcode.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="liveconv"><citetitle>liveconv</citetitle></link> --
                partitioned convolution with dynamically reloadable impulse
                response.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="bpf"><citetitle>bpf</citetitle></link>,
                <link linkend="xyscale"><citetitle>xyscale</citetitle></link>,
                <link linkend="ntom"><citetitle>ntom</citetitle></link>,
                <link linkend="mton"><citetitle>mton</citetitle></link> --
                (from SuperCollider?).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="OSCsend"><citetitle>OSCsend</citetitle></link> --
                now implemented directly using system sockets. Old version using
                liblo has been kept as OSCsend_lo.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <emphasis>OSCraw</emphasis> -- to listen for all OSC messages at
                a given port.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="sorta"><citetitle>sorta</citetitle></link> and
                <link linkend="sortd"><citetitle>sortd</citetitle></link>--
                sort elements of an array.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="dot"><citetitle>dot</citetitle></link> --
                calculates the dot product of two arrays.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                zero delay filters --
                <link linkend="zdf_1pole_mode"><citetitle>zdf_1pole_mode</citetitle></link>,
                <link linkend="zdf_2pole_mode"><citetitle>zdf_2pole_mode</citetitle></link>,
                <link linkend="zdf_ladder"><citetitle>zdf_ladder</citetitle></link>,
                <link linkend="zdf_1pole"><citetitle></citetitle>zdf_1pole</link> and
                <link linkend="zdf_2pole"><citetitle></citetitle>zdf_2pole</link>,
                <link linkend="diode_ladder"><citetitle></citetitle>diode_ladder</link>,
                <link linkend="k35_hpf"><citetitle>K35_hpf</citetitle></link> and
                <link linkend="k35_lpf"><citetitle>K35_lpf</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="product"><citetitle>product</citetitle></link> --
                takes a numeric array (k or i-rate) and calculates its product.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                supercollider ugens --
                <link linkend="sc_phasor"><citetitle>sc_phasor</citetitle></link>,
                <link linkend="sc_lag"><citetitle>sc_lag</citetitle></link>,
                <link linkend="sc_lagud"><citetitle>sc_lagud</citetitle></link>,
                <link linkend="sc_trig"><citetitle>sc_trig</citetitle></link>.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                Including a directory of UDO files no longer fails if more than
                about 20 entries.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                It was possible for kr, sr, and ksmps to be inconsistent in one
                case, no more.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Macro names better policed and bracket matching.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Octal values as \000 can be in strings.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (from 6.09.1) In a UDO the out* opcodes now work, where before
                it was working only sometimes.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                Improved line number reporting in r opcode and case with no
                macro implemented.
              </simpara>
            </listitem>
            <listitem>
              <simpara>m and n opcodes fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Expansion of [...] corrected and improved.</simpara>
            </listitem>
            <listitem>
              <simpara>Strings in scores improved.</simpara>
            </listitem>
            <listitem>
              <simpara>
                The ) character can be in a macro argument if it is escaped
                with \.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Use of the characters e or s could lead to errors; now fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Macro names better policed, and bracket matching.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                p2 and p3 are now at higher precision, no longer truncated to
                6 decimal places.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                new opcode d to switch off infinite notes (denote); same as i
                with negative p1.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                named instruments can be turned off with i if a - follows the ".
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (from 6.09.1) if an r-opcode section ended in e-opcode it used
                to stop early.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Options:
          <itemizedlist>
            <listitem>
              <simpara>
                jack midi module now can report available devices under
                --midi-devices.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (from 6.09.1) defining smacros and omacros on command line only
                happens once.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (from 6.09.1) defining smacros  from command line now works.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>ftgentmp improved string arguments.</simpara>
            </listitem>
            <listitem>
              <simpara>
                hdf5read opcode now reads entire data sets when dataset name
                string is suffixed with an asterisk.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                use of non power-of-two lengths now acceptable where before
                it was inconsistent.
              </simpara>
            </listitem>
            <listitem>
              <simpara>ampmidid optionally can be aware of 0dbfs.</simpara>
            </listitem>
            <listitem>
              <simpara>
                dust and dust2 at k-rate now conform to the manual (NOTE:
                this is an incompatible change).
              </simpara>
            </listitem>
            <listitem>
              <simpara>In prints the format %% now prints one %.</simpara>
            </listitem>
            <listitem>
              <simpara>OSClisten can be used with no data outputs.</simpara>
            </listitem>
            <listitem>
              <simpara>GEN18 corrected to write to requested range.</simpara>
            </listitem>
            <listitem>
              <simpara>sockrev now can read strings.</simpara>
            </listitem>
            <listitem>
              <simpara>
                vbap system can in some cases allow arbitrary number of
                speakers via arrays (work in progress).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Websocket server can only accept one protocol output, so
                limiting intype to just a single argument.
              </simpara>
            </listitem>
            <listitem>
              <simpara>sum opcode will also sum elements of an array.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Overloaded pvs2tab and tab2pvs now can create and use split
                magnitude and phase arrays.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>dnoise fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>Removed HTML5 Csound editor which has quit working.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Emscripten: Emscripten Csound (asm.js) now requires sourcing in
                CsoundObj.js and FileList.js separately from libcsound.js. This
                is to accommodate using the same JS API with either asm.js or
                wasm backends.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                CsoundQT: CsoundQt 0.9.4 is announced:
                <ulink url="https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20notes%200.9.4.md">
                <citetitle>https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release notes 0.9.4.md</citetitle></ulink>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Windows installer with CsoundQt includes PythonQt.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>pwd works on OSX.</simpara>
            </listitem>
            <listitem>
              <simpara>Fencepost error in sensLine fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>OSCsend corrected for caching of host name.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in push/pop opcodes fixed (this opcode is now a plugin and
                deprecated).
              </simpara>
            </listitem>
            <listitem>
              <simpara>Bug in sprintf removed.</simpara>
            </listitem>
            <listitem>
              <simpara>Bug in soundin removed.</simpara>
            </listitem>
            <listitem>
              <simpara>losci/losci3 fixed in case of long tables.</simpara>
            </listitem>
            <listitem>
              <simpara>inrg was broke for a while.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Partikkel channelmask panning laws had an indexing error, now
                fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                jack audio module now allows for independent numbers of in and
                out channels.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Bug in string copying fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in hdf5read where if two hdf5read opcodes were placed in
                series in an instrument, the argument names of the second opcode
                instance would be incorrect due to directly changing the last
                string character of the first when reading an entire dataset.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Memory leaks fixed in some plugin opcodes.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System Changes:
          <itemizedlist>
            <listitem>
              <simpara>soundin now uses the diskin2 code.</simpara>
            </listitem>
            <listitem>
              <simpara>
                out family of opcodes reworked to reduce interleaving costs and
                to take proper regard if nchnls value.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (from 6.09.1) a crash on Linux i386 removed relating to server mode.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>
                New csound_threaded.hpp header-only facility, obviating need for
                csPerfThread.cpp object in some projects.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Added GetA4 function.</simpara>
            </listitem>
            <listitem>
              <simpara>
                New framework for plugin opcode development in C++ using
                Csound's allocator.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Added StrDup function.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Boost dependencies removed from Csound interfaces and CsoundAC.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (from 6.09.1) Two new API function, csoundSetSpinSample and
                csoundClearSpin.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>iOS</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    iPad portrait SplitView fix+animation, info popover
                    resizing, stop button fix in Soundfile Pitch Shifter.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    Csound-iOS API updates; Examples cleaned up,
                    enhanced/expanded, and reordered. Manual revised, expanded,
                    updated. Updates to API and examples support iOS 10 and
                    Xcode 8.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Android</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    Multichannel input and output allowed.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Windows</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    csound64.lib import library added to Windows installer.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.08 (2016 November)</bridgehead>
  <para>
    As usual there are a number of opcode fixes and improvements, but the major
    changes are in the language structures. First the score language has all-new
    treatment of macros and preprocessing, bringing it in line with those of the
    orchestra. The parsing of the orchestra has had a number of fixes as
    outlined below.
  </para>
  <para>
    A major, and not totally compatible change as been made in reading and
    writing array elements. The rate of the index now often determines the
    time of processing; check the entry below under Orchestra. This simplifies
    much code and seems to capture expectations; the earlier ad hoc code had
    many anomalies.
  </para>
  <para>
    Also as usual there are a number of new opcodes and internal fixes to
    memory leaks and more robust code.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="dct"><citetitle>dct</citetitle></link>: Discrete
                Cosine Transform of a sample array (type-II DCT).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="getftargs"><citetitle>getftargs</citetitle></link>:
                copy arguments of a gen to an S-variable.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="mfb"><citetitle>mfb</citetitle></link>:
                implements a mel-frequency filterbank for an array of input
                magnitudes.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>New Gen and Macros:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="GENquadbezier"><citetitle>quadbezier</citetitle></link>:
                generating Bezier curves in a table.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                The character ¬ is now correctly treated as a variant of ~ for
                bitwise not.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Lexing bug which could corrupt strings fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Ensure no newlines in string-lexing.</simpara>
            </listitem>
            <listitem>
              <simpara>Small improvement in reported line numbers.</simpara>
            </listitem>
            <listitem>
              <simpara>Better checking of macro syntax.</simpara>
            </listitem>
            <listitem>
              <simpara>Improved parsing of setting of labels.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Added error handling for unmatched brackets for UDO arg
                specification.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Check that #included file is not a directory.</simpara>
            </listitem>
            <listitem>
              <simpara>Deeply nested macro calls better policed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                For years Csound has fixed the pitch of A4 at 440Hz. Now this
                can be set in the header using the new r-variable A4, and also
                read with that variable.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Floating point values can use e or E for exponent.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Array access semantics have been clarified:
                <itemizedlist>
                  <listitem>
                    <simpara>
                      i[i] => reading at i-time and perf-time, writing at i-time only.
                    </simpara>
                  </listitem>
                  <listitem>
                    <simpara>
                      i[k] => reading at perf-time, writing yields a runtime error.
                    </simpara>
                  </listitem>
                  <listitem>
                    <simpara>
                      k[i], k[k] => reading at perf-time, writing at perf-time.
                    </simpara>
                  </listitem>
                  <listitem>
                    <simpara>
                      a[i], a[k] => reading at perf-time, writing at perf-time.
                    </simpara>
                  </listitem>
                  <listitem>
                    <simpara>
                      other (S[], f[]) => reading and writing according to index
                      type (i,k).
                    </simpara>
                  </listitem>
                </itemizedlist>
                In particular, i(k[i]) will continue not to work, as before,
                but the new operator i(k[],i) is provided to cover this case.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                xout validation no longer fails when constants are given.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                New code to handle macros and other preprocessor commands.
                Brings it into line with orchestra code.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New score opcode C introduced as a way of switching automatic
                carry off (C 0) or on (default) (C 1).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Options:
          <itemizedlist>
            <listitem>
              <simpara>
                The tempo setting can now be a floating point value (previously
                fixed to integer).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New option --version prints version information and exits.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>Problems in centroid fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Better treatment of rounding in printks.</simpara>
            </listitem>
            <listitem>
              <simpara>OSC extended to include multicast.</simpara>
            </listitem>
            <listitem>
              <simpara>Faust opcodes brought up to date with faust.</simpara>
            </listitem>
            <listitem>
              <simpara>oscil1 and oscili can take a negative duration.</simpara>
            </listitem>
            <listitem>
              <simpara>fout opcode documentation clarified.</simpara>
            </listitem>
            <listitem>
              <simpara>Release time in mxadsr fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                centroid opcode extended to take array inputs in addition.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ptable opcodes are now identical to table family.
              </simpara>
            </listitem>
            <listitem>
              <simpara>ftgen now as array input option.</simpara>
            </listitem>
            <listitem>
              <simpara>subinstr can now have string arguments.</simpara>
            </listitem>
            <listitem>
              <simpara>
                the i() format is extended to work on k-rate arrays with the
                first argument being an array, followed by the indices.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>
                pvlook now always prints explicit analysis window name.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>
                HTML5
                <itemizedlist>
                  <listitem>
                    <simpara>
                      csound.node: Implemented for Linux, minor API fix.
                    </simpara>
                  </listitem>
                  <listitem>
                    <simpara>
                      pnacl: Added compileCsdText method to csound object.
                    </simpara>
                  </listitem>
                </itemizedlist>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General Usage:
          <itemizedlist>
            <listitem>
              <simpara>Checking of valid macro names improved.</simpara>
            </listitem>
            <listitem>
              <simpara>#undef fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs Fixed:
          <itemizedlist>
            <listitem>
              <simpara>Fixes to prints in format use.</simpara>
            </listitem>
            <listitem>
              <simpara>jitter2 reworked to make it more like the manual.</simpara>
            </listitem>
            <listitem>
              <simpara>
                oscbank has had multiple fixes and now works as advertised.
              </simpara>
            </listitem>
            <listitem>
              <simpara>bformdec1 with arrays and type 4 fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Bug in pvsceps fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>
                In various formatted print opcodes extra trash characters might
                appear -- fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Assigning variables with --sample-accurate could give unexpected
                results; this is believed fixed now.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                padsynth square profile fix, and opcode prints less depending
                on warn level.
              </simpara>
            </listitem>
            <listitem>
              <simpara>gen31 fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>gen41 fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Bug in sensekey fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>A number of issues in centroid fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System changes:
          <itemizedlist>
            <listitem>
              <simpara>New score lexing and preprocessor.</simpara>
            </listitem>
            <listitem>
              <simpara>MAC line endings now work again.</simpara>
            </listitem>
            <listitem>
              <simpara>
                System information messages (system sampling rate, etc) are now
                directed to stdout.
              </simpara>
            </listitem>
            <listitem>
              <simpara>rtjack reworked to deal with names and numbers.</simpara>
            </listitem>
            <listitem>
              <simpara>
                The version printing now includes the commit as so the
                developers know which patches have been applied.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>API version now 4.0.</simpara>
            </listitem>
            <listitem>
              <simpara>Now supports named gens.</simpara>
            </listitem>
            <listitem>
              <simpara>fterror now in API.</simpara>
            </listitem>
            <listitem>
              <simpara>API functions SetOutput and GetOutputFormat fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Many API functions now use const where appropriate.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Messages can now be directed to stdout from the API by using
                CSOUNDMSG_STDOUT attribute.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New Lisp CFFI and FFI interfaces tested with Steel Bank Common
                Lisp (64 bit CPU architecture), runs in separate thread.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ctcsound.py, a new FFI interface for Python was introduced in
                version 6.07. It is now the recommanded interface for Python,
                csnd6.py being deprecated.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>Android.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Multichannel input and output allowed.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Windows.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    csound64.lib import library added to Windows installer.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.07 (2016 March)</bridgehead>
  <para>
    A large number of bug fixes, some quite major, some internal are
    included, as well as some new facilities and extensions. As ever there
    are coding improvements as well.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="compress2"><citetitle>compress2</citetitle></link>:
                like compress but using a more normal use of dB (0.0 for full
                scale).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                (Experimental, source code-only) New cuda opcodes: cudasynth2
                and cudanal2.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="directory"><citetitle>directory</citetitle></link>
                opcode: reads a directory and outputs to a string array a list
                of file names.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ftsamplebank"><citetitle>ftsamplebank</citetitle></link>:
                to load a sample library from a directory.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="mvclpf1"><citetitle>mvclpf1</citetitle></link>,
                <link linkend="mvclpf2"><citetitle>mvclpf2</citetitle></link>,
                <link linkend="mvclpf3"><citetitle>mvclpf3</citetitle></link>,
                <link linkend="mvclpf4"><citetitle>mvclpf4</citetitle></link>,
                <link linkend="mvchpf"><citetitle>mvchpf</citetitle></link>:
                Moog voltage-controlled filter emulations from Fons Andriaensen.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="ops"><citetitle>S()</citetitle></link>
                converter from k-rate and i-time number to a string.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="cepsinv"><citetitle>cepsinv</citetitle></link>
                opcode to calculate the inverse cepstrum of an array.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="moogladder2"><citetitle>moogladder2</citetitle></link>,
                is a faster, less accurate implementation of moogladder.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="paulstretch"><citetitle>paulstretch</citetitle></link>
                opcode is a lightweight implementation of the PaulStretch
                time-stretching algorithm by Nasca Octavian Paul. It is ideal
                for timestretching a signal by very large amounts.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="mp3scal"><citetitle>mp3scal</citetitle></link>
                implements phase-locked vocoder processing from mp3-format disk
                files, resampling if necessary.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="filescal"><citetitle>filescal</citetitle></link>
                implements phase-locked vocoder processing from disk files,
                resampling if necessary.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>
                The boolean ? .. : .. construction can now have string results,
                while previously it only allowed numbers.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The line number reported when an error is detected at the end
                of a line is now correct. Also more improvements in line numbers
                for complex syntax.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="while"><citetitle>while</citetitle></link> loop
                improved/fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Better and consistent reading of comments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Continuation lines handled better, especially respecting line
                numbers.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                opcode: <link linkend="ops"><citetitle>S(.)</citetitle></link>
                syntax now allowed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>
                The list of tempo points in score opcode
                <link linkend="t"><citetitle>t</citetitle></link> is now
                arbitrarily long.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A stupidity in <link linkend="r"><citetitle>r</citetitle></link>
                and <link linkend="leftbrace"><citetitle>{</citetitle></link>
                opcodes fixed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Options:
          <itemizedlist>
            <listitem>
              <simpara>
                The <link linkend="FlagsCatMinusLowerZ"><citetitle>-z</citetitle></link>
                option now suppresses deprecated opcodes, unless given
                a 2 or 3 argument.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The new option --fftlib controls which real fft library to
                use internally (FFTLIB = 0, PFFFT = 1, vDSP = 2)
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>
                In <link linkend="OSC"><citetitle>OSC</citetitle></link>
                opcodes it is now possible to send and receive arrays,
                tables and audio.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Better diagnostic if
                <link linkend="diskin2"><citetitle>diskin2</citetitle></link>
                fails.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="rezzy"><citetitle>rezzy</citetitle></link>
                now checks for unstable filter and modifies to close
                stable version.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="adsr"><citetitle>adsr</citetitle></link>
                rewritten so it gives an error if the segments are
                longer than p3.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Use of <link
                linkend="diskin"><citetitle>diskin</citetitle></link> to an
                array now resizes the output array if necessary.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="chnget"><citetitle>chnget</citetitle></link>
                now checks for a change in channel name as well as data.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              <link linkend="interp"><citetitle>interp</citetitle></link>
                can take an optional extra argument to give an initial value.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="oscilikts"><citetitle>oscilikts</citetitle></link>
                uses a more liberal table lookup.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                opcode <link linkend="in"><citetitle>in</citetitle></link> can
                read mono or stereo, obviating the <link
                linkend="in"><citetitle>in</citetitle></link>/<link
                linkend="ins"><citetitle>ins</citetitle></link> distinction.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="sensekey"><citetitle>sensekey</citetitle></link>
                rewritten to provide better diagnostics and fixes a minor bug.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fix to a case of defining a macro with arguments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="sockrecv"><citetitle>sockrecv</citetitle></link>
                now works at a and k rate.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="GEN49"><citetitle>GEN49</citetitle></link> now
                works from <link linkend="ftgen"><citetitle>ftgen</citetitle></link>
                calls.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="GEN34"><citetitle>GEN34</citetitle></link>
                liberalised in tables it accepts.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="chnget"><citetitle>chnget</citetitle></link>
                now allows channel names to be changed at perf time.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                iceps has been renamed cepsinv to avoid name clashes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                mp3 support improved in a number of minor ways.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A minor fix to allow a ladspa plugin to be re-loaded by the host.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Frontends:
          <itemizedlist>
            <listitem>
              <simpara>csdebugger:</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Some memory issues fixed.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>HTML5:</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    CsoundQT has its own notes at
                    <ulink url="https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20Notes%200.9.2.1.md">
                    <citetitle>https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20Notes%200.9.2.1.md</citetitle></ulink>.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General usage:
          <itemizedlist>
            <listitem>
              <simpara>
                The multicore options somewhat improved.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                When replacing instruments the new version inherits <link
                linkend="maxalloc"><citetitle>maxalloc</citetitle></link>
                and active flags.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Multicore code now works with midi instruments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                MIDI operations now available via a new rtmidi jack module
                (-+rtmidi=jack).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs fixed:
          <itemizedlist>
            <listitem>
              <simpara>
                Fix to <link
                linkend="trigseq"><citetitle>trigseq</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Major error in <link
                linkend="rezzy"><citetitle>rezzy</citetitle></link> fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="p"><citetitle>p()</citetitle></link> fixed for
                high numbers of p-arguments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="p"><citetitle>p()</citetitle></link> now works
                from MIDI events.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The 31-bit random number generator could give a very short
                loop if seeded with zero; fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Macros in .orc files now work.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A long-standing bug in display of graphs fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixes to the envelope opcodes
                <link linkend="linen"><citetitle></citetitle>linen</link>,
                <link linkend="expsegr"><citetitle></citetitle>expsegr</link>,
                <link linkend="linsegr"><citetitle></citetitle>linsegr</link>,
                <link linkend="cossegr"><citetitle></citetitle>cossegr</link>,
                <link linkend="transegr"><citetitle></citetitle>transegr</link>,
                <link linkend="envlpx"><citetitle></citetitle>envlpx</link>,
                including new warnings.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Many fixes in string opcodes
                (<link linkend="strsub"><citetitle></citetitle>strsub</link>,
                <link linkend="strcpy"><citetitle></citetitle>strcpy</link>
                and others).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed bugs in print formats
                (<link linkend="sprintf"><citetitle></citetitle>sprintf</link>,
                <link linkend="printf"><citetitle></citetitle>printf</link>,
                <link linkend="prints"><citetitle></citetitle>prints</link>).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvsmooth"><citetitle></citetitle>pvsmooth</link>
                had a missing initialisation.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Array initialisation now robust.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Bug in <link
                linkend="copya2ftab"><citetitle></citetitle>copya2ftab</link>
                fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fix in cudapvsanal (EXPERIMENTAL).
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="partikkel"><citetitle>partikkel</citetitle></link>
                fix to subsample grain placement.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Opcodes that require an odd number of arguments are now
                properly checked.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                pvswrite now takes proper notice of 0dbfs.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="GEN34"><citetitle>GEN34</citetitle></link>
                now allowing non-power-of-two source tables.
              </simpara>
            </listitem>
            <!-- <listitem> -->
            <!--   <simpara> -->
            <!--     vst4cs will now work on 64bit architecture. -->
            <!--   </simpara> -->
            <!-- </listitem> -->
            <listitem>
              <simpara>
                <link linkend="strcat"><citetitle>strcat</citetitle></link>
                mended.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="nstance"><citetitle>nstance</citetitle></link>
                mended.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                fixed small issues in rtauhal module.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Windows installer for 64 bit CPU architecture now sets
                environment variables on system level as it should.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                transeg at k-rate with itype non-zero had an initial delay if
                one cycle.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                log function on arrays fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Rescaling of named GENs fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                A fencepost error in reading ATS files believed fixed; it
                generated spurious errors about file finishing early.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Initialisation error in pvbandp fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                readfi string allocation fixed.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System changes:
          <itemizedlist>
            <listitem>
              <simpara>
                Extensive use made of in-memory files. Orc and sco are always
                thus, as are .csound6rc. This simplifies much internally.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Nested longjmps fixed which affected some API use.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                If a non-existent .csd file is presented Csound no longer
                crashes.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The kcounter value is now consistently an unsigned 64bit
                value, allowing for long performances.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>
                csoundCompileCsdText: New function to compile a CSD from a
                string of text.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                The function call csound->GetKcounter(csound) now returns an
                unsigned 64 bit integer.  Previously it returned a long which is
                unclear.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                ctcsound.py is a new wrapper file to the Csound API for the
                Python language.  It is a pure Python file using the FFI
                (Foreign Function Interface) module ctypes. It does not depend
                on Swig, and it works with Python2 and Python3 as well. It uses
                numpy for its data structures, numpy being the fundamental
                package for scientific computing with Python.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>Windows.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    The Windows installer for Csound now contains all executables
                    built for 64 bit CPU architecture.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    The Windows installer for 64 bit CPU architecture now
                    provides NW.js "out of the box." It runs all features of
                    Csound, as well as all features of HTML5, in a browser-like
                    runtime with JavaScript scripting, and includes a Csound
                    editor implemented in HTML. The editor will run pieces
                    either as .csd files with embedded &lt;html&gt; or as .html
                    files calling the csound object, and includes JavaScript
                    debugging.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    A new simplified build system has been implemented in the
                    csound/mingw64 directory for building Csound using the
                    MSYS2/mingw64 toolchain.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    Linking to pthreads and other libraries now static.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    Some limited support for non-ASCII characters in file names.
                  </simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>OSX.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Installer fixed for link names for _csnd6 and _CsoundAC.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>GNU/Linux.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>
                    <link linkend="date"><citetitle>date</citetitle></link>
                    opcode more accurate.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.06 (2015 September)</bridgehead>
  <para>A number of bug fixes, some quite major, are included, as well as some
  new facilities and extensions.</para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>getseed reads the state of the PRN generator;
              opposite of seed opcode.</simpara>
            </listitem>
            <listitem>
              <simpara>tabifd — Instantaneous Frequency Distribution, magnitude
              and phase analysis.</simpara>
            </listitem>
            <listitem>
              <simpara>websocket — Read and write signals and arrays using a
              websocket connection.</simpara>
            </listitem>
            <listitem>
              <simpara>framebuffer — Read audio signals into 1 dimensional
              k-rate arrays and vice-versa with a specified buffer size.</simpara>
            </listitem>
            <listitem>
              <simpara>olabuffer — Sum overlapping frames of audio as k-rate
              arrays and read as an audio signal</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>Labels are allowed in instrument 0.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>Maximum string length in scores increased to 1024.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>diskin2 array version uses array size to give number
              of channels in raw file form.</simpara>
            </listitem>
            <listitem>
              <simpara>diskin2 now has the kpitch parameter defaulting to 1 for
              simple use.</simpara>
            </listitem>
            <listitem>
              <simpara>Vibrato f-table in wgflute and wgcar optional,
              defaulting to sine wave.</simpara>
            </listitem>
            <listitem>
              <simpara>schedule now accept string arguments.</simpara>
            </listitem>
            <listitem>
              <simpara>urandom now available on OSX platforms.</simpara>
            </listitem>
            <listitem>
              <simpara>GEN18 had fencepost problem; largely rewritten.</simpara>
            </listitem>
            <listitem>
              <simpara>In poscil family of opcodes it is possible to skip
              initialisation of phase.</simpara>
            </listitem>
            <listitem>
              <simpara>svfilter now can skip initialisation.</simpara>
            </listitem>
            <listitem>
              <simpara>When opening an input file nchncls_i is used rather
              than nchnls. This is a change that should have followed the
              existence of nchnls_i</simpara>
            </listitem>
            <listitem>
              <simpara>rtjack module now reports the sampling rate.</simpara>
            </listitem>
            <listitem>
              <simpara>The opcodes rfft, rifft, fft, fftinv, r2c and c2r now
              have i-rate array versions.</simpara>
            </listitem>
            <listitem>
              <simpara>New optional threshhold parameter in opcodes tradsyn,
              sinsyn and resyn.</simpara>
            </listitem>
            <listitem>
              <simpara>New thresholding option for partials.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>extract fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>src_conv improved and integrated with -U options.</simpara>
            </listitem>
            <listitem>
              <simpara>fixes in atsa, and heti.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>pnacl:</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Support for 48000 sample rate fixed.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>csound~:</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Changes to the threading system. String channel
                  initialisation fixed. A number of other bugs were
                  fixed.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Emscripten:</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Csound Javascript object can now receive data
                  from the outvalue opcode.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>HTML5:</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Integrate HTML, JavaScript, and other features of
                  HTML5 with Csound, either by embedding a Web page as an
                  &lt;html&gt; element in the CSD file for CsoundQt or Csound
                  for Android, or by hosting Csound in the JavaScript context
                  of a standalone Web browser (Emscripten, PNaCl) or embedded
                  Web browser (csound.node).</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General usage:
          <itemizedlist>
            <listitem>
              <simpara>Ill-formatted macros in the orchestra now trapped.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs fixed:
          <itemizedlist>
            <listitem>
              <simpara>Use of Windows-style environments for INCDIR etc now
              works with device numbers.</simpara>
            </listitem>
            <listitem>
              <simpara>vibrato opcode fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Clicking in real-time sample accurate case fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Copying of strings now correct; did confuse memory
              sometimes.</simpara>
            </listitem>
            <listitem>
              <simpara>Bug in pvstanal fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Rounding error in cpspch fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Removed crash on recompiling a named instrument.</simpara>
            </listitem>
            <listitem>
              <simpara>Fix interpolation bug in tablexkt.</simpara>
            </listitem>
            <listitem>
              <simpara>Fix to plltrack when ksmps is 1.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System changes:
          <itemizedlist>
            <listitem>
              <simpara>The "error" message from STK plugin is now a warning.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>API:
          <itemizedlist>
            <listitem>
              <simpara>Redefinition of opcodes and UDOs fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>OSX.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>csnd6.jar link installed in the correct location.</simpara>
                </listitem>
                <listitem>
                  <simpara>Java JNI linking issues solved.</simpara>
                </listitem>
                <listitem>
                  <simpara>fixed link name for libpng in libfltk_image.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

  <bridgehead>Release Notes for Csound 6.05 (2015 April)</bridgehead>
  <para>As ever there are new facilities and numerous bug-fixes.  A major part of
  this release is the removal of a number of memory leaks and over use
  of memory.  Naturally these changes are all but invisible, just a
  smaller memory foot-print.

  Note that we track bugs and requests for enhancements via the github
  issues system, and these had a significant affect on this release.</para>
  <para>
    <itemizedlist>
      <listitem>
        <para>Opcodes :
          <itemizedlist>
            <listitem>
              <simpara>The opcode sndload is now deprecated.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>New Gen and Macros:
          <itemizedlist>
            <listitem>
              <simpara>Paul Octavian Nasca's padsynth algorithm implemented as a gen.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>Fixed string location calculation bug when processing score
              lines [fixes #443]</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Options:
          <itemizedlist>
            <listitem>
              <simpara>A short-format copyright option is available, with a fixed
              number of well-known licences (CC, etc)</simpara>
            </listitem>
            <listitem>
              <simpara>New command-line option to report MIDI devices in simple
              format</simpara>
            </listitem>
            <listitem>
              <simpara>New command-line option to set ksmps</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara><emphasis>adsynt</emphasis> handles amplitude changes
              better</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>sfont</emphasis> has better checking for
              corruptions</simpara>
            </listitem>
            <listitem>
              <simpara>better checking in physical models for out-of-range
              frequencies</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>ftgenonce</emphasis> and others allows string
              parameters</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>gausstrig</emphasis> reworked and extended with new
              features</simpara>
            </listitem>
            <listitem>
              <simpara>use of <emphasis>p()</emphasis> function no longer
              complains overrides the pcnt warning</simpara>
            </listitem>
            <listitem>
              <simpara>fix to <emphasis>midirecv</emphasis></simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>OSCsend</emphasis> cleans up after use
              improved</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>fillarray</emphasis> is limited to 1 or 2
              dimensional arrays; in fact it failed silently previously for 3D
              and higher.</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>oscbnk</emphasis> now works when the equaliser
              is used.</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>mp3in</emphasis> now works with both mono and
              stereo input files</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>flooper</emphasis> &amp; <emphasis>flooper2</emphasis>
              now allow stereo tables</simpara>
            </listitem>
            <listitem>
              <simpara>Release phase of <emphasis>expsegr</emphasis> fixed</simpara>
            </listitem>
            <listitem>
              <simpara>f-tables created by a large number of arguments could
              overwrite memory, now fixed</simpara>
            </listitem>
            <listitem>
              <simpara>performance of <emphasis>plltrack</emphasis> improved
              </simpara>
            </listitem>
            <listitem>
              <simpara>init of arrays clarified and checked</simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>gen23</emphasis> corrected to stop an infinite
              loop</simpara>
            </listitem>
            <listitem>
              <simpara>alwayson now starts from score offset.
              <!-- ; this is part of -->
              <!-- a fix to the long-standing problem with alwayson in
                   CsoundVST -->
              </simpara>
            </listitem>
            <listitem>
              <simpara>invalue now checks for output string size and reallocates
              memory if smaller than default string size (set at 256 bytes
              for backwards compatibility)</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Utilities:
          <itemizedlist>
            <listitem>
              <simpara>The srconv utility has been improved but it does not
              work well, with groups of noise in otherwise good output. We
              recommend the use of Erik de Castro Lopo's Secret Rabbit Code
              (aka libsamplerate) as providing sample rate conversion at high
              quality. srconv will be removed shortly possibly to be replaced
              by an SRC-based utility.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>pnacl</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Added interface to allow the use of Csound's MIDI input
                  system.</simpara>
                </listitem>
                <listitem>
                  <simpara>Fixed audio input to conform to the latest Pepper API
                  spec.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs fixed:
          <itemizedlist>
            <listitem>
              <simpara>bugs in fastabi,oscktp, phasorbnk, adsr, xadsr, hrtfer fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>bugs in the harmon. harmon2, harmon3 and harmon4 fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>Csound could crash after a parsing error, a case now removed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          System changes:
          <itemizedlist>
            <listitem>
              <simpara>There are now checks that xin/xout types match those defined
              as part of UDO definition.</simpara>
            </listitem>
            <listitem>
              <simpara>jack now has a timeout.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>Many defects indicated by coverity fixed or code changed.
              Should make csound more robust in edge cases.</simpara>
            </listitem>
            <listitem>
              <simpara>Parser-related changes simplifies allocation of temporary
              variables, with some new optimisations.</simpara>
            </listitem>
            <listitem>
              <simpara>code for multi-thread rendering improved and stablised
              vis-a-vis redefinition of instruments.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>iOS.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Fixed audio callback to work correctly with lightning
                  output and Apple TV.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Android.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>New experimental audio IO mode: csoundPerformKsmps()
                  is called from the OpenSL ES output callback. This mode can
                  be optionally enabled by passing a value of "false" to a new
                  second parameter to the CsoundObj constructor (bool isAsync).
                  The default constructor and the one-parameter sets this to
                  "true" (keeping backwards compatibility with existing
                  code).</simpara>
                </listitem>
                <listitem>
                  <simpara>The OSC opcodes are included in distribution.</simpara>
                </listitem>
                <listitem>
                  <simpara>Android app</simpara>
                  <itemizedlist>
                    <listitem>
                      <simpara>There are new file open and save dialogs that
                      permit the user to access the SD card on the device, if
                      there is one, in addition to internal storage.</simpara>
                    </listitem>
                    <listitem>
                      <simpara>There is a new "Save as..." button that permits
                      the user to save the csd as a new file with a new name.</simpara>
                    </listitem>
                    <listitem>
                      <simpara>Many of the examples in the archive of Android
                      examples are now built into the app and can be run from the
                      app's menu.</simpara>
                    </listitem>
                    <listitem>
                      <simpara>Includes now the exciter opcode.</simpara>
                    </listitem>
                  </itemizedlist>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>OSX.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Installation now places csladspa.so rather than
                  csladspa.dylib on disk.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Linux.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>Linux is now build without FLTK threads. This removes
                  system hangs and is in line with other builds.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

<bridgehead>Release Notes for Csound 6.04 (2014 November)</bridgehead>
  <para>This new version has many extensions and fixes; many new opcodes
  and significant numbers of internal reworking.  There is a new
  frontend and iOS and Android version have seen many improvements.</para>
  <para>As ever we track bugs and requests for enhancements via the github
  issues system.  Already proposals for the next release are being
  made but the volume of changes require a release now.</para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="pinker"><citetitle>pinker</citetitle></link>
              generates high quality pink noise.</simpara>
            </listitem>
            <listitem>
              <simpara>power opcode ^ now works with array arguments.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="exciter"><citetitle>exciter</citetitle></link>
              opcode, modelled on the calf plugin.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="vactrol"><citetitle>vactrol</citetitle></link>
              opcode simulates an analog envelope follower.</simpara>
            </listitem>
            <listitem>
              <simpara>family of hdf5 opcodes to handle hdf5 format files.</simpara>
            </listitem>
            <listitem>
              <simpara>(experimental undocumented) buchla opcode models the lowgate
              filter of Buchla.</simpara>
            </listitem>
            <listitem>
              <simpara>New k-rate opcodes acting on arrays:
              <itemizedlist>
                <listitem>transforms: rfft, rifft, fft, fftinv</listitem>
                <listitem>complex product: complxprod</listitem>
                <listitem>polar - rectangular conversion: rect2pol, pol2rect, mags, phs</listitem>
                <listitem>real - complex: r2c, c2r</listitem>
                <listitem>windowing: window</listitem>
                <listitem>cepstrum: pvscpes, iceps, ceps</listitem>
                <listitem>column / row access: getrow, getcol, setrow, setcol</listitem>
                <listitem>a-rate data - k-array copy: shiftin, shiftout</listitem>
                <listitem>phase unwraping: unwrap</listitem>
              </itemizedlist>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New Gen and Macros:
          <itemizedlist>
            <listitem>
              <simpara>Line numbers corrected in instr statements.</simpara>
            </listitem>
            <listitem>
              <simpara>New control operation, while, for looping.</simpara>
            </listitem>
            <listitem>
              <simpara>A long-standing bug with macros which use the same name for an
              argument has been corrected.</simpara>
            </listitem>
            <listitem>
              <simpara>Redefinition of an instrument in a single call to compile is
              flagged as an error.</simpara>
            </listitem>
            <listitem>
              <simpara>ID3 header skip for mp3 files now properly implemented.</simpara>
            </listitem>
            <listitem>
              <simpara>Errors induced by not defining the location of STK's raw wave
              files has been removed.</simpara>
            </listitem>
            <listitem>
              <simpara>bug fixed where UDO's could not read strings from pfields.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>stackops opcodes deprecated.</simpara>
            </listitem>
            <listitem>
              <simpara>lenarray extended to handle multi-dimensional arrays.</simpara>
            </listitem>
            <listitem>
              <simpara>ftgenonce accepts string arguments correctly and multiple
              string arguments.</simpara>
            </listitem>
            <listitem>
              <simpara>max and min now have initialisation-time versions.</simpara>
            </listitem>
            <listitem>
              <simpara>gen23 improved regarding comments and reporting problems.</simpara>
            </listitem>
            <listitem>
              <simpara>in OSCsend the port is now a k-rate value.</simpara>
            </listitem>
            <listitem>
              <simpara>socksend now works at k-rate.</simpara>
            </listitem>
            <listitem>
              <simpara>a number of envelope-generating opcodes are now correct in
              sample-accurate mode.</simpara>
            </listitem>
            <listitem>
              <simpara>faust compilation is now lock-protected.</simpara>
            </listitem>
            <listitem>
              <simpara>mp3 fixed to allow reinit to be used with it.</simpara>
            </listitem>
            <listitem>
              <simpara>In remote opcode the name of the network can be set via
              the environment variable CS_NETWORK.  Defaults to en0 (OSX) or
              eth0.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>icsound:
                New frontend icsound is now ready for general use. icsound is
                a python interface for interactive work in the ipython notebook.
              </simpara>
            </listitem>
            <listitem>
              <simpara>csdebugger:
                A number of changes and improvements have been made, like
                stepping through active instruments, better line number use.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>General usage:
          <itemizedlist>
            <listitem>
              <simpara>Jack module now does not stop Csound if autoconnect fails.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs fixed:
          <itemizedlist>
            <listitem>
              <simpara>atsinnoi fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>ftsavek fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>sprintf fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>gen27 fixed, especially with extended arguments, as well as
              fixed a number of errors in extended score arguments.</simpara>
            </listitem>
            <listitem>
              <simpara>Physem opcodes (guiro cabasa, sekere) fixed so second call
              works.</simpara>
            </listitem>
            <listitem>
              <simpara>flooper fixed in mode 2.</simpara>
            </listitem>
            <listitem>
              <simpara>OSCsend multiple fixes.</simpara>
            </listitem>
            <listitem>
              <simpara>UDO fix for case of local ksmps of 1.</simpara>
            </listitem>
            <listitem>
              <simpara>More changes/fixes to dssi code.</simpara>
            </listitem>
            <listitem>
              <simpara>xscanu and scanu fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>temposcal and mincer fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>crash in ftload fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          System changes:
          <itemizedlist>
            <listitem>
              <simpara>In server mode exit is now clean.</simpara>
            </listitem>
            <listitem>
              <simpara>Fixes to rtalsa module.</simpara>
            </listitem>
            <listitem>
              <simpara>Pulseaudio rt module fixes.</simpara>
            </listitem>
            <listitem>
              <simpara>Fix to remove fluidEngine entries for csound instance
              (prevents crash on moduleDestroy).</simpara>
            </listitem>
            <listitem>
              <simpara>Opcodes called through function calls that returned arrays
              did not correctly synthesize args as array types due to not
              converting the arg specifier to the internal format.</simpara>
            </listitem>
            <listitem>
              <simpara>fixed crashing issue during note initialization for tied
              notes due to goto skipping over code.</simpara>
            </listitem>
            <listitem>
              <simpara>fixed incorrect initialization of pfields when note's pfields
              length were less than instrument expected (off-by-one).</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>Added Runtime Type Identification for instrument variables;
              removed use of XINCODE/XOUTCO.</simpara>
            </listitem>
            <listitem>
              <simpara>fix malloc length in negative number parsing, and improved
              handling of negative numbers.</simpara>
            </listitem>
            <listitem>
              <simpara>writing to circularBuffer is now atomic.</simpara>
            </listitem>
            <listitem>
              <simpara>a number of memory leaks and potential dangerous code have been
              fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>type-inference has been extensively reworked, as have a few
              parsing areas.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          API:
          <itemizedlist>
            <listitem>
              <simpara> Added API function for retrieving GEN parameters used for
              creating a table.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Platform Specific:
          <itemizedlist>
            <listitem>
              <simpara>iOS.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>API Refactored for clearer method names and abstraction names (i.e.
                  CsoundBinding instead of CsoundValueCacheable).</simpara>
                </listitem>
                <listitem>
                  <simpara>Updated to remove deprecated code.</simpara>
                </listitem>
                <listitem>
                  <simpara>A significant amount of reworking has been done on the code.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Android.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>API Refactored for clearer method names and abstraction names (i.e.
                  CsoundBinding instead of CsoundValueCacheable).</simpara>
                </listitem>
                <listitem>
                  <simpara>Changes to enable HTML 5 with JavaScript and it is to be hoped WebGL
                  in the Csound6 Android app.</simpara>
                </listitem>
                <listitem>
                  <simpara>Enabled change of screen orientation in the Csound6 app without
                  forcing a restart of the app.</simpara>
                </listitem>
                <listitem>
                  <simpara>Enabled local storage (useful for saving and restoring widget
                  values, etc.).</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Windows.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>fixed pointer arithmetic that caused crashing on Windows.</simpara>
                </listitem>
                <listitem>
                  <simpara>pyexec changed to use python's file opening functions to
                  prevent crash on Windows.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>OSX.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>CsoundAC now compiles.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <simpara>Linux.</simpara>
              <itemizedlist>
                <listitem>
                  <simpara>threadlocks bug fix on linux.</simpara>
                </listitem>
              </itemizedlist>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

<bridgehead>Release Notes for Csound 6.03 (2014 May)</bridgehead>
  <para>
    This new version has a large number of bug fixes (including clearing
    many tickets on SourceForge and GitHub) as well internal changes to improve
    performance.
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="printks2"><citetitle></citetitle>prinks2</link></simpara>:
              prints a new value every time a control variable
              changes using a printf() style syntax
            </listitem>
            <listitem>
              <simpara><emphasis>mp3sr</emphasis>, <emphasis>mp3bitrate</emphasis>,
              and <emphasis>mp3nchnls</emphasis> to get information on mp3 files</simpara>
            </listitem>
            <listitem>
              <simpara>EXPERIMENTAL: CUDA opcodes for partitioned convolution direct
                convolution and sliding phase vocoding; OpenCL opcode for
                additive synthesis
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="compilecsd"><citetitle></citetitle>compilecsd</link></simpara>
              to compile instruments from a standard CSD file
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>The argument for i() is supposed to be a variable not an
                expression. This is now enforced. (bug #90)
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Score:
          <itemizedlist>
            <listitem>
              <simpara>New score opcode y sets the random seed (for ~) at read time
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Options:
          <itemizedlist>
            <listitem>
              <simpara>There was a bug in CsOptions; the last argument was missed being
                read(issue #296)
              </simpara>
            </listitem>
            <listitem>
              <simpara>As command-line options expression-opt and no-expression-opt do
                nothing in Csound6 a warning is printed
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>For ogg output it is possible to specify a VBR (variable block
                rate) quality.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>dssi4cs</emphasis> code has been extensively reworked
                to avoid potential memory faults.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Many array operations now available for i-arrays as well as
                k-arrays.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>fillarray</emphasis> will work for string arrays
              </simpara>
            </listitem>
            <listitem>
              <simpara>Displays of FFT (via <emphasis>dispfft</emphasis>) improved
              with scaling/zooming options
              </simpara>
            </listitem>
            <listitem>
              <simpara>Signal flow graph opcodes are now working with a-rate array
                signals.
              </simpara>
            </listitem>
            <listitem>
              <simpara>In alsa RT code the sample rate is taken from the device
              </simpara>
            </listitem>
            <listitem>
              <simpara>Faust opcode system updated to latest faust API
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Utilities:
          <itemizedlist>
            <listitem>
              <simpara>fixed bug in lpanal
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          csound~:
          <itemizedlist>
            <listitem>
              <simpara>OSX - fix for running with 32-bit cpu architecture
              </simpara>
            </listitem>
            <listitem>
              <simpara>Windows - csound~ now available for Windows
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Emscripten:
          <itemizedlist>
            <listitem>
              <simpara>This is now generally merged into the code-base
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          General usage:
          <itemizedlist>
            <listitem>
              <simpara>--displays now switches graphs on, as expected
              </simpara>
            </listitem>
            <listitem>
              <simpara>New commandline option --get-system-sr added to obtain the
                machine's sample rate
              </simpara>
            </listitem>
            <listitem>
              <simpara>New command-line option --devices[=in|out] gives a list of
                available audio devices and then exit
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes:
          <itemizedlist>
            <listitem>
              <simpara>fixed the bug when tables were replaced but the size did not change
              </simpara>
            </listitem>
            <listitem>
              <simpara>A number of bugs in --sample-accurate have been detected and
                fixed. This includes opcodes <emphasis>out</emphasis>,
                <emphasis>outn</emphasis>, and <emphasis>line</emphasis>
              </simpara>
            </listitem>
            <listitem>
              <simpara>A number of bugs in <emphasis>grain3</emphasis> were fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>Bug in str_chanel could cause a crash; fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>Small bug in rtjack fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>Error in resize opcode corrected
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed an unlikely bug in atsa
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed rtauhal pause issue
              </simpara>
            </listitem>
            <listitem>
              <simpara>A number of bugs/untidiness fixed in GEN23
              </simpara>
            </listitem>
            <listitem>
              <simpara>Array bound checks fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>strings channels were not correctly set for dynamic-size
                strings, now fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>memory allocation for string formatting in <emphasis>printfsk</emphasis>
                was fixed, stopping string truncation
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>strcat</emphasis> safe against overflow
              </simpara>
            </listitem>
            <listitem>
              <simpara>error in compilation of arrays fixed (issue #293)
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>GetPvsChannel</emphasis> fixed against a crash
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          System Changes:
          <itemizedlist>
            <listitem>
              <simpara><emphasis>turnoff</emphasis> opcode now checks that the
                instrument being affected is active
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>lenarray</emphasis> can accept any array type
              </simpara>
            </listitem>
            <listitem>
              <simpara>the way of rounding a table number to an integer was changed
                and is now more as expected
              </simpara>
            </listitem>
            <listitem>
              <simpara>there is a new possible section in a csd file called
                &lt;CsFile...&gt; which is like csFileB but with unencoded text.
              </simpara>
            </listitem>
            <listitem>
              <simpara>UDO compilation now uses the type system. This means that
                UDOs now allow any array type to be used
              </simpara>
            </listitem>
            <listitem>
              <simpara>Improved orchestra parsing speeds with better algorithms
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>The whole system has been checked by the Coverity static checker
                which identified a number of (mainly minor) problems. These have
                been reviewed and checked. In particular better use of printing
                and string copying should prevent overflows
              </simpara>
            </listitem>
            <listitem>
              <simpara>The type and variable system has been extensively rewritten; this
                allows better array and UDO support
              </simpara>
            </listitem>
            <listitem>
              <simpara>Alignment of variables got right in all cases
              </simpara>
            </listitem>
            <listitem>
              <simpara>Array copying is now using the type system to copy values; fixes
                issues with copying string arrays, f-sigs, etc
              </simpara>
            </listitem>
            <listitem>
              <simpara>Always reset Csound when stopping to ensure state is clean; was
                not being reset when there was a compile error, so that next
                successful run would start with an invalid Csound engine (issue
                #305)
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          API:
          <itemizedlist>
            <listitem>
              <simpara>All opcodes etc now use the API memory allocation operations,
                so it is possible to replace the whole memory allocator
              </simpara>
            </listitem>
            <listitem>
              <simpara>Added <emphasis>csoundCompileCsd</emphasis> to API and
                associated new <emphasis>compilecsd</emphasis> opcode
              </simpara>
            </listitem>
            <listitem>
              <simpara>Protected <emphasis>csoundGetStringChannel</emphasis> against
              null and short strings and added a check for string size
              </simpara>
            </listitem>
            <listitem>
              <simpara>A number of API functions have had char* changed to
                const char* which reflect the usage
              </simpara>
            </listitem>
          </itemizedlist>
          The performance engine now includes debugging capabilities to allow
          interrupting rendering and providing introspection into the engine's state
          and instrument variables. The following new functions are available by
          including the csdebug.h header:
          <programlisting>
void csoundDebuggerInit (CSOUND *csound);
void csoundDebuggerClean (CSOUND *csound);
void csoundSetInstrumentBreakpoint (CSOUND *csound, MYFLT instr, int skip);
void csoundRemoveInstrumentBreakpoint (CSOUND *csound, MYFLT instr);
void csoundClearBreakpoints (CSOUND *csound);
void csoundSetBreakpointCallback (CSOUND *csound, breakpoint_cb_t bkpt_cb, void *userdata);
void csoundDebugContinue (CSOUND *csound);
void csoundDebugStop (CSOUND *csound);
debug_instr_t *csoundDebugGetInstrInstances(CSOUND *csound);
void csoundDebugFreeInstrInstances(CSOUND *csound, debug_instr_t *instr);
debug_variable_t *csoundDebugGetVariables(CSOUND *csound, debug_instr_t *instr);
void csoundDebugFreeVariables(CSOUND *csound, debug_variable_t *varHead);</programlisting>
        </para>
      </listitem>
      <listitem>
        <para>
          Windows:
          <itemizedlist>
            <listitem>
              <simpara>Soundfonts in Windows had an internal alignement problem
                which is fixed
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

<bridgehead>Release Notes for Csound 6.02</bridgehead>
  <para>
This new version has a large number of bug fixes (including clearing
all general tickets on SourceForge). It also introduces some major new
facilities such as use as a server, code to run Csound in a browser
and a large generalisation of filter opcodes to have parameters
changeable at audio rate.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="nstance"><citetitle>nstance</citetitle></link>
              opcode schedules a new instrument instance, storing the instance handle.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="turnoff"><citetitle>turnoff</citetitle></link>
              nw variant to stop a given instrument instance.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="strfromurl"><citetitle>strfromurl</citetitle></link>
              to set a string from a URL.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Orchestra:
          <itemizedlist>
            <listitem>
              <simpara>If building supports it, a #include string can be a URL or a
              file.</simpara>
            </listitem>
            <listitem>
              <simpara>A space is again permitted between a function name and the
              opening bracket for all functions allowed in Csound5 (but not in
              general).</simpara>
            </listitem>
            <listitem>
              <simpara>The Csound command can start with an empty CSD in daemon mode
              (--daemon): do not exit if CSD/orchestra is not
              given, is empty or does not compile).</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Score:
          <itemizedlist>
            <listitem>
              <simpara>If building supports it, a #include string can be a URL or a
              file.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>Many filters generalised to allow k- or a-rate parameters.  In
              particular it includes these:
              <informaltable frame="none">
                <tgroup cols="2">
                <tbody>
                  <row>
                    <entry>areson</entry>
                    <entry>atonex</entry>
                  </row>
                  <row>
                    <entry>butterworth filters</entry>
                    <entry>fofilter</entry>
                  </row>
                  <row>
                    <entry>lowres</entry>
                    <entry>lowresx</entry>
                  </row>
                  <row>
                    <entry>lpf18</entry>
                    <entry>mode</entry>
                  </row>
                  <row>
                    <entry>moogladder</entry>
                    <entry>moogvcf</entry>
                  </row>
                  <row>
                    <entry>reson</entry>
                    <entry>resonr</entry>
                  </row>
                  <row>
                    <entry>resonx</entry>
                    <entry>resonz</entry>
                  </row>
                  <row>
                    <entry>statevar</entry>
                    <entry>tonex</entry>
                  </row>
                </tbody>
                </tgroup>
              </informaltable>
              </simpara>
            </listitem>
            <listitem>
              <simpara>The maximum number of presets in sfont increased to 16384.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>cpsmidinn</emphasis> is now more accurate.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>max_k</emphasis> now behaves like the documentation.
              There were cases when it gave strange results.
              </simpara>
            </listitem>
            <!-- <listitem> -->
            <!--   <simpara>The vst4cs opcodes have been re-factored. FLTK code has been encapsulated. -->
            <!--   The build system has been updated for Csound 6. -->
            <!--   </simpara> -->
            <!-- </listitem> -->
            <listitem>
              <simpara>In <emphasis>alwayson</emphasis> opcode changes for better
              handling of pfields, more reliable insert of an instrument instance
              for repeating or re-started score sections.
              </simpara>
            </listitem>
            <listitem>
              <simpara>The signal flow graph opcodes have replaced OpenMP
              multi-threading with pthreads, using one-time initialization
              of static structures.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Frontends:
          <itemizedlist>
            <listitem>
              <simpara>PNaCl is now supported as a platform, allowing Csound to run
              under the Chrome browser in all enabled operating systems.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs fixed:
          <itemizedlist>
            <listitem>
              <simpara><emphasis>adsynt2</emphasis> opcode fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>ftgentmp</emphasis> opcode fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>dates</emphasis> opcode fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fixed a bug in <emphasis>pvsfilter</emphasis>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fixed stereo out in <emphasis>temposcal</emphasis> and
              <emphasis>mincer</emphasis>.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>pan2</emphasis> opcode fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>index overflow in <emphasis>randh</emphasis> and
              <emphasis>randi</emphasis> fixed.
              </simpara>
            </listitem>
            <!-- <listitem> -->
            <!--   <simpara>A number of fixes to CsoundVST: initialization, score -->
            <!--   handling, and MIDI driver initialization, so it now works for Csound 6. -->
            <!--   </simpara> -->
            <!-- </listitem> -->
            <listitem>
              <simpara>fixed <emphasis>pycalln</emphasis> for no inputs.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fixed/revised setting and use of <emphasis>ksmps</emphasis>
              and <emphasis>kr</emphasis> in UDOs.
              </simpara>
            </listitem>
            <listitem>
              <simpara>fixed problem in sending a score event from max to csound via
              csound~ (Ticket #58).
              </simpara>
            </listitem>
            <listitem>
              <simpara>If itype in <emphasis>chn_k</emphasis> was set to 3 and
              values are set less than 1, Csound6 used to give an INIT Error.
              (Ticket #67).
              </simpara>
            </listitem>
            <listitem>
              <simpara>A number of reported seg faults have been dealt with.
              </simpara>
            </listitem>
            <listitem>
              <simpara><emphasis>xtratim</emphasis> opcode was using incorrect
              ekr value from csound instead of from instance; when used in
              conjunction with <emphasis>setksmps</emphasis>, was causing notes
              to have very long <emphasis>xtratim</emphasis> set and
              thus notes were effectively not getting turned off
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>System changes:
          <itemizedlist>
            <listitem>
              <simpara>A server mode is now available, accepting input via UDP (with
              --port option).
              </simpara>
            </listitem>
            <listitem>
              <simpara>A longstanding bug in extract was detected and fixed. It does
              suggest that this facility is little used!
              </simpara>
            </listitem>
            <listitem>
              <simpara>The way the external score generator was coded is
              substantially changed. In particular this should fix a very
              strange bug in Windows.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed crashing bug with invalue channel callback due to
              wrong data object being pulled from csound host data.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed bug in UDOs with no local ksmps where kcounter was
              being used incorrectly.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Better checking in channels.
              </simpara>
            </listitem>
            <listitem>
              <simpara>(Experimental) If the environment variable CS_UDO_DIR is
              set then any files in the directory that have an .udo extension
              are automatically included at the start of the orchestra.
              This facility needs review to see if it is what is required.
              </simpara>
            </listitem>
            <listitem>
              <simpara>(Experimental) There are new cuda GPGPU opcodes (source
              only): cudasynth (3 versions for additive synthesis, additive
              synthesis of fsigs and phase vocoder resynthesis) and cudanal
              (a GPGPU version of pvsanal).
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Internal changes:
          <itemizedlist>
            <listitem>
              <simpara>Many attempts at faster code.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Type inference and parsing still improving.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>iOS:
          <itemizedlist>
            <listitem>
              <simpara>Fixed crash where no csoundSetHostImplementedMIDIIO is
              used on iOS and no _RTMIDI value is set.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>OSX:
          <itemizedlist>
            <listitem>
              <simpara>Fixed input device name for auhal.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

<bridgehead>Release Notes for Csound6</bridgehead>
<para>
  Csound6 is a significant rewrite of much of the code.  In particular
  the API is not compatible, although all orc/sco/csd works should still
  run.
</para>

<para>
  There are new facilities, like sample accuracy and realtime mode,
  described below.
</para>

<para>
  IMPORTANT:  The environment variable to find plugins are called
  <emphasis role="strong">OPCODE6DIR64</emphasis> or
  <emphasis role="strong">OPCODE6DIR</emphasis> (note the 6) so it can co-exist
  with Csound5.
</para>

<para>
  Similarly <emphasis role="strong">.csoundrc</emphasis> is renamed
  <emphasis role="strong">.csound6rc</emphasis>.
</para>

<para>
  Arrays are now mainstream, with syntax and opcode support.  They also
  exist in multidimensional format.  They are created (usually)
  with <emphasis>init</emphasis> opcode or <emphasis>fillarray</emphasis>.
      <informalexample>
        <programlisting>
  k1[]  <emphasis role="opc">init</emphasis> 4</programlisting>
      </informalexample>
  generates a k-rate 1-D array of length 4. Similarly
      <informalexample>
        <programlisting>
  a2[][] <emphasis role="opc">init</emphasis> 4, 4</programlisting>
      </informalexample>
  creates a square 4x4 a-rate array.
      <informalexample>
        <programlisting>
  k2[]  <emphasis role="opc">fillarray</emphasis> 1, 2, 3, 4</programlisting>
      </informalexample>
  creates a 4-element vector filled with 1,..4, which also defines the
  length.
</para>

<para>
  Elements are used via indexing in [] such as k1[2] or a2[2][3].
  One dimensional arrays replace tvars, and can be used in opcodes like
  <emphasis>maxtab</emphasis>, <emphasis>mintab</emphasis> and
  <emphasis>sumtab</emphasis> (see below). Array setting can be done in
  left-hand side of opcodes, i.e.:
      <informalexample>
        <programlisting>
  aSigs[0] <emphasis role="opc">vco2</emphasis> .1, 440
  aSigs[1] <emphasis role="opc">vco2</emphasis> .1, 880</programlisting>
      </informalexample>
</para>

<para>
  The new realtime priority mode can be switched on with by passing the
  --realtime or setting the CSOUND_PARAMS field realtime_mode to 1.
  This has the following effects:
  <orderedlist>
    <listitem>
      <simpara>all opcode audio file reading/writing is handled asynchronously
      by a separate thread.</simpara>
    </listitem>
    <listitem>
      <simpara>all init-pass operations are also performed asynchronously.</simpara>
    </listitem>
  </orderedlist>
</para>

<para>
  Multicore support is totally rewritten using a different algorithm for
  task-dispatch, which should use less memory and fewer locks.
</para>

<para>
  <itemizedlist>
    <listitem>
      <para>New opcodes:
        <itemizedlist>
          <listitem>
            <simpara><emphasis>faustgen</emphasis></simpara>
          </listitem>
          <listitem>
            <simpara><emphasis>array</emphasis> -- many new or revised
            opcodes -- see <link linkend="arrayOpcodes"><citetitle>Array
            Opcodes</citetitle></link>.</simpara>
          </listitem>
          <listitem>
            <simpara><emphasis>compileorc</emphasis> takes a filename containing
            a collection of instrument definitions and compiles them, replacing
            existing versions. It returns 0 on success.</simpara>
          </listitem>
          <listitem>
            <simpara><emphasis>compilestr</emphasis> is like
            <emphasis>compileorc</emphasis> but takes a string.</simpara>
          </listitem>
          <listitem>
            <simpara><emphasis>readscore</emphasis> runs the score preprocessor
            on a string and then schedules new events via the RT event mechanism,
            returning 0 if successful.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Orchestra
        <itemizedlist>
          <listitem>
            <simpara>Note events can start and end in mid-kcycle. As this is an
            incompatible change it is only invoked when the command-line option
            --sample-accurate is specified. Note that this does not work for
            tied notes, and use of skipping initialisation has questionable
            use.</simpara>
          </listitem>
          <listitem>
            <simpara>Instruments can run at local <emphasis>ksmps</emphasis>
            values using <code>setksmps iksmps</code> as in Csound 5 UDOs.</simpara>
          </listitem>
          <listitem>
            <simpara>Compilation can be done at any stage, new instruments are
            added or replace old ones.  Running instances of old instrument
            definitions are not affected.  Only limitation is that header
            constants in instr 0 are read only once at the time of the
            first compilation.  Init-time code can be placed outside
            instruments in the global space, and this will be executed
            once-only following the compilation.  In this case, score event
            generation can be completely replaced by orchestra code.
            See also new opcodes <emphasis>compileorc</emphasis> and
            <emphasis>compilestr</emphasis>.</simpara>
          </listitem>
          <listitem>
            <simpara>New syntax operators +=, -=, *= and /=.  These are more
            than syntactic sugar; please use += and -= for accumulating reverbs
            as it gives better multicore behaviour.</simpara>
          </listitem>
          <listitem>
            <simpara>The opcodes <emphasis>add</emphasis>, <emphasis>sub</emphasis>,
            <emphasis>mul</emphasis> and <emphasis>div</emphasis> have been
            deleted; use the forms + - * /. Not many people were aware of these
            opcodes.</simpara>
          </listitem>
          <listitem>
            <simpara>Any opcode with a single output or with no outputs can be
            used as a function. Some opcodes might require type annotation to
            resolve ambiguities, more details on the
            <link linkend="functional"><citetitle>Function syntax in
            Csound 6</citetitle></link>.</simpara>
          </listitem>
          <listitem>
            <simpara>A statement can be broken across lines after a , = or
            arithmetic operation.</simpara>
          </listitem>
          <listitem>
            <simpara>There are a range of new or recoded operations on k-valued
            arrays, most restricted to 1 dimensional arrays (vectors):
            <informalexample>
              <programlisting>
 kans <emphasis role="opc">minarray</emphasis> ktab       <emphasis role="comment">returns the smallest value in the</emphasis>
                          <emphasis role="comment">(possibly) multidimensional array</emphasis>
 kans <emphasis role="opc">maxarray</emphasis> ktab       <emphasis role="comment">is like mintab</emphasis>
 kabs <emphasis role="opc">sumarray</emphasis> ktab       <emphasis role="comment">returns sum of all values in the array</emphasis>
 ktab <emphasis role="opc">genarray</emphasis> imin, imax[, inc]
                          <emphasis role="comment">generates vector of values from imin</emphasis>
                          <emphasis role="comment">to imax by increments of inc (default 1)</emphasis>
 ktab2 <emphasis role="opc">maparray</emphasis> ktab1, "sin" <emphasis role="comment">maps the k-rate 1-arg function in</emphasis>
                          <emphasis role="comment">the string to every element of the vector</emphasis>
 ktab2 <emphasis role="opc">maparray_i</emphasis> ktab1, "sin" <emphasis role="comment">maps the i-rate 1-arg function</emphasis>
                          <emphasis role="comment">in the string to every element of the vector</emphasis>
 ktab2 <emphasis role="opc">slicearray</emphasis> ktab1, istart, iend
                          <emphasis role="comment">returns a slice of ktab1 from ktab1[istart]</emphasis>
                          <emphasis role="comment">to ktab1[iend]</emphasis>
 <emphasis role="opc">copyf2array</emphasis> ktab, kfn    <emphasis role="comment">copies data from an ftable to a vector</emphasis>
 <emphasis role="opc">copya2ftab</emphasis>  ktab, kfn    <emphasis role="comment">copies data from a vector to an ftable</emphasis></programlisting>
            </informalexample>

            Arithmetic on arrays is allowed.  In particular addition,
            subtraction, multiplication, division on a element-by-element
            version is provided in arithmetic format. Similar operations
            between an array and a scalar are allowed.</simpara>
          </listitem>
          <listitem>
            <simpara>Each instance of any instrument has a scratchpad of 4 values
            that persist; allows values to carry to next use of the
            instrument; hope it may be useful in legato etc.</simpara>
          </listitem>
          <listitem>
            <simpara>If a table number is given as -1 then an internal sine wave
            equivalent to <code>f. 0 16382 10 1</code> is used. Attempts to
            write to this table will give unpredictable results, but is not
            policed. The 16382 can be change by command line option
            --sine-size=# where the # is rounded up to a power of two.</simpara>
          </listitem>
          <listitem>
            <simpara>A number of oscil opcodes now have the f-table parameter as
            optional, defaulting to the internal sine wave. (<emphasis>oscil1,
            oscil1i, oscil, oscil3, oscili, foscil, foscil1, loscil,
            loscil3</emphasis>).</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Score:
        <itemizedlist>
          <listitem>
            <simpara>Score lines can have multiple strings.</simpara>
          </listitem>
          <listitem>
            <simpara>Change to escape characters in score strings -- they do not
            happen.</simpara>
          </listitem>
          <listitem>
            <simpara>Also note the <emphasis>readscore</emphasis> opcode.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Modified Opcodes and Gens:
        <itemizedlist>
          <listitem>
            <simpara>The <emphasis>k()</emphasis> function can take an a-rate
            argument in which case it is a call to <emphasis>downsamp</emphasis>.
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Utilities
        <itemizedlist>
          <listitem>
            <simpara><emphasis>Hetro/adsyn</emphasis> analysis files can be
            machine byte-order independent if created with -X. Down side is a
            longer file and a little slower loading. The
            <emphasis>het_export</emphasis> utility will create the independent
            format from the old, and <emphasis>het_import</emphasis> is no
            longer necessary.</simpara>
          </listitem>
          <listitem>
            <simpara><emphasis>cvanal</emphasis> and <emphasis>lpanal</emphasis>
            will produce machine independent files if -X option is used. The
            <emphasis>convolve</emphasis> and <emphasis>lpread</emphasis> etc
            opcodes will accept either format. You are encouraged to use the
            machine independent form. Analysis files produced with -X can be used
            on other systems.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Frontends</para>
    </listitem>
    <listitem>
      <para>Bugs fixed:</para>
    </listitem>
    <listitem>
      <para>System Changes:
        <itemizedlist>
          <listitem>
            <simpara>In Linux and OSX the treatment of locales is now thread-safe
            and local.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Platform Changes:</para>
    </listitem>
    <listitem>
      <para>API:
        <simpara>New API functions...</simpara>
        <itemizedlist>
          <listitem>
            <simpara>new configuration/parameter setting functions
            <informalexample>
              <programlisting>
        PUBLIC int csoundSetOption(CSOUND *csound, char *option);
        PUBLIC void csoundSetParams(CSOUND *csound, CSOUND_PARAMS *p);
        PUBLIC void csoundGetParams(CSOUND *csound, CSOUND_PARAMS *p);
        PUBLIC void csoundSetOutput(CSOUND *csound, char *name, char *type,
                                    char *format);
        PUBLIC void csoundSetInput(CSOUND *csound, char *name);
        PUBLIC void csoundSetMIDIInput(CSOUND *csound, char *name);
        PUBLIC void csoundSetMIDIFileInput(CSOUND *csound, char *name);
        PUBLIC void csoundSetMIDIOutput(CSOUND *csound, char *name);
        PUBLIC void csoundSetMIDIFileOutput(CSOUND *csound, char *name);</programlisting>
            </informalexample></simpara>
          </listitem>
          <listitem>
            <simpara>new parsing/compilation functions
            <informalexample>
              <programlisting>
        PUBLIC TREE *csoundParseOrc(CSOUND *csound, char *str);
        PUBLIC int csoundCompileTree(CSOUND *csound, TREE *root);
        PUBLIC int csoundCompileOrc(CSOUND *csound, const char *str);
        PUBLIC int csoundReadScore(CSOUND *csound, char *str);
        PUBLIC int csoundCompileArgs(CSOUND *, int argc, char **argv);</programlisting>
            </informalexample></simpara>
          </listitem>
          <listitem>
            <simpara>new function for starting csound after first compilation
            <informalexample>
              <programlisting>
        PUBLIC int csoundStart(CSOUND *csound);</programlisting>
            </informalexample></simpara>
          </listitem>
          <listitem>
            <simpara>new software bus threadsafe getters/setters
            <informalexample>
              <programlisting>
        PUBLIC MYFLT csoundGetControlChannel(CSOUND *csound, const char *name);
        PUBLIC void csoundSetControlChannel(CSOUND *csound, const char *name, MYFLT val);
        PUBLIC void csoundGetAudioChannel(CSOUND *csound, const char *name, MYFLT *samples);
        PUBLIC void csoundSetAudioChannel(CSOUND *csound, const char *name, MYFLT *samples);
        PUBLIC void csoundSetStringChannel(CSOUND *csound, const char *name, char *string);
        PUBLIC void csoundGetStringChannel(CSOUND *csound, const char  *name, char *string);</programlisting>
            </informalexample></simpara>
          </listitem>
          <listitem>
            <simpara>new table threadsafe copy functions
            <informalexample>
              <programlisting>
        PUBLIC void csoundTableCopyOut(CSOUND *csound, int table, MYFLT *dest);
        PUBLIC void csoundTableCopyIn(CSOUND *csound, int table, MYFLT *src);</programlisting>
            </informalexample></simpara>
          </listitem>
        </itemizedlist>
        API has been made threadsafe so that performance and control
        can occur in separate threads (after a call to <emphasis>csoundStart()</emphasis>
        or <emphasis>csoundCompile()</emphasis>). Threadsafety is ensure by
        <orderedlist>
          <listitem>
            <simpara>use of atomic read/writing to control channels</simpara>
          </listitem>
          <listitem>
            <simpara>spinlocks in audio and string channels</simpara>
          </listitem>
          <listitem>
            <simpara>mutexes protecting compilation, score events and table
            access.</simpara>
          </listitem>
        </orderedlist>
      </para>
    </listitem>
    <listitem>
      <para>Internal:
        <itemizedlist>
          <listitem>
            <simpara>The build system is now cmake (and not scons as in
            Csound5).</simpara>
          </listitem>
          <listitem>
            <simpara>A number of table access opcodes have been rewritten but
            should behave the same. Similarly <emphasis>diskin</emphasis> and
            <emphasis>diskin2</emphasis> now use the same code and so
            <emphasis>diskin</emphasis> should be more stable.</simpara>
          </listitem>
          <listitem>
            <simpara>The old parser is completely removed.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>New internal functions in Csound
      <informalexample>
        <programlisting>
    void (*FlushCircularBuffer)(CSOUND *, void *);
    void *(*FileOpenAsync)(CSOUND *, void *, int, const char *, void *,
                           const char *, int, int, int);
    unsigned int (*ReadAsync)(CSOUND *, void *, MYFLT *, int);
    unsigned int (*WriteAsync)(CSOUND *, void *, MYFLT *, int);
    int  (*FSeekAsync)(CSOUND *, void *, int, int);
    char *(*GetString)(CSOUND *, MYFLT);
             <emphasis role="comment">Extract a string originating from a score-event argument.</emphasis></programlisting>
      </informalexample>
      </para>
    </listitem>
    <listitem>
      <para>Functions removed
      <informalexample>
        <programlisting>
    void *(*FileOpen)(CSOUND *, void*, int, const char*, void*, const char*);</programlisting>
      </informalexample>
      </para>
    </listitem>
    <listitem>
      <para>
        The "private" parts of the API have been changed considerably.
        Also structures like EVTBLK have changed.
      </para>
    </listitem>
    <listitem>
      <para>
        The LINKAGE1/FLINKAGE1 macros are renamed as
        LINKAGE_BUILTIN/FLINKAGE_BUILTIN.
      </para>
    </listitem>
    <listitem>
      <para>Template for a-rate perf-pass opcodes is
      <informalexample>
        <programlisting>
int perf_myopcode(CSOUND *csound, MYOPCODE *p)
{
    uint32_t offset = p-&gt;h.insdshead-&gt;ksmps_offset;
    uint32_t early  = p-&gt;h.insdshead-&gt;ksmps_no_end;
    uint32_t nsmps = CS_KSMPS;
    ...
    if (UNLIKELY(offset)) memset(p-&gt;res, '\0', offset*sizeof(MYFLT));
    if (UNLIKELY(early))  {
      nsmps -= early;
      memset(&amp;p-&gt;res[nsmps], '\0', early*sizeof(MYFLT));
    }
    for (n=offset; n&lt;nsmps; n++) {
        .....
        p-&gt;res[n] = ....
    }
    return OK;
}</programlisting>
      </informalexample>
      </para>
    </listitem>
    <listitem>
      <para>String variables re-implemented</para>
    </listitem>
    <listitem>
      <para>
        OENTRY structure has changed and has a new dependency field; please
        use this field as it is required for multicore semantics. You could
        set it to -1 and disallow all parallelism, but at least it is safe.
      </para>
    </listitem>
    <listitem>
      <para>
        All opcodes that touch audio should take note of sample-accurate code.
      </para>
    </listitem>
    <listitem>
      <para>
        A number of previous API functions are removed;
        <emphasis>OpenFile</emphasis> and <emphasis>OpenFile2</emphasis>
        both replaced by new <emphasis>OpenFile2</emphasis> with additional
        argument.
      </para>
    </listitem>
    <listitem>
      <para>
        Additions have been made for arg type specifications for opcodes.
        <itemizedlist>
          <listitem>
            <simpara>Any-types have been added, as follows:
            <itemizedlist>
              <listitem><simpara>'.' signifies a required arg of any-type</simpara></listitem>
              <listitem><simpara>'?' signifies an optional arg of any-type</simpara></listitem>
              <listitem><simpara>'*' signifies a var-arg list of any-type</simpara></listitem>
            </itemizedlist></simpara>
          </listitem>
          <listitem>
            <simpara>Arrays are now specified using "[x]" where x is a
            type-specifier. The type-specifier can be any of the of the current
            specifiers, including any-types. See <emphasis>Opcodes/arrays.c</emphasis>
            for example usage.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>New Type System</para>
      <para>
        A new type system has been added to Csound6, and significant changes
        have been made to the compiler. The previous system for handling types
        involved depending on the first-letter of a variable's name every time
        it was used to determine type. This meant there was a lot of re-checking
        of types. Also, adding new types was difficult, as there was a lot of
        custom code that had to be updated to check for new type letters.
      </para>
      <para>
        In Csound6, a separate system of types was added.  Types are defined as
        CS_TYPE's. The creation of variables from types and the initialisation
        of memory has been encapsulated within the CS_TYPE's. This change
        allows easier addition of new types, as well as generic calculations of
        memory pools, amongst other things.
      </para>
      <para>
        The compiler has been modified since Csound5 to now use the type system
        as an integral part of its semantic checking phase. Variables are now
        registered into a CS_VAR_POOL when they are first defined, with the
        CS_VARIABLE having a reference to its CS_TYPE.  After first time
        definition within the pool, the type information is then looked up in
        consequent variable lookups, rather than re-calculated from the variable
        name. This opens up possibilities for new variable naming and typing
        strategies, i.e. using "myVar:K" to denote a k-rate arg. This also
        opens up possibilities for user-defined types, such as
        "data myType kval, aval", then using "myVar:myType" to define a var
        of that type. (The previous is speculative, and is not an active
        proposal at this time.)
      </para>
      <para>
        The addition of the type system has formalised the static type system
        that has existed in Csound prior to Csound6. It has, arguably, simplified
        the code-base in terms of type handling, as well as laid the ground work
        for future type-related research to be integrated into Csound.
      </para>
    </listitem>
  </itemizedlist>
</para>

<bridgehead>New in Version 5.19 (2013 January 7)</bridgehead>
<para>
  This is mainly a bug-fixing release but with a number of new opcodes and
  enhanced features.
</para>
<para>
  <itemizedlist>
    <listitem>
      <para>New opcodes:
        <itemizedlist>
          <listitem>
            <simpara><emphasis>ipmidi</emphasis> module for MIDI over network.</simpara>
          </listitem>
        </itemizedlist>
        <itemizedlist>
          <listitem>
            <simpara><emphasis>ppltrack</emphasis> opcode.</simpara>
          </listitem>
        </itemizedlist>
        <itemizedlist>
          <listitem>
            <simpara><link linkend="combinv"><citetitle>combinv</citetitle></link> opcode.</simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>New Gen and Macros:
        <itemizedlist>
          <listitem>
            <simpara>
              Better checking in <link linkend="GEN28"><citetitle>GEN28</citetitle></link>.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Check range in <link linkend="outrg"><citetitle>outrg</citetitle></link>,
              and optionally allow wrapping.
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Orchestra:
        <itemizedlist>
          <listitem>
            <simpara>
              Change empty statement to a warning.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Added line numbers to many input args message (new parser).
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Modified Opcodes and GENs:
        <itemizedlist>
          <listitem>
            <simpara>
              Better error and warning messages.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              <link linkend="loopseg"><citetitle>loopseg</citetitle></link> now
              checks argument count.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              <link linkend="harmon2"><citetitle>harmon2/3/4</citetitle></link> improved.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              <link linkend="active"><citetitle>active</citetitle></link>: added
              the option to skip the instances in release phase.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              New and more tested implementation of ChordSpace.
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Bug fixed:
        <itemizedlist>
          <listitem>
            <simpara>
              Fix botched optimisation in lowpass filters.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Chn opcodes fixed in Linux.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Fix bug in <link linkend="loscil"><citetitle>loscil</citetitle></link> with silence.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Correct <link linkend="GEN23"><citetitle>GEN23</citetitle></link>
              when comment does not end in newline.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Correcting <link linkend="loopseg"><citetitle>loopseg</citetitle></link>.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Number of input and output channels fixed in new parser.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Fixed <link linkend="GEN43"><citetitle>GEN43</citetitle></link> issue.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Fixed <link linkend="fout"><citetitle>fout</citetitle></link>.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              <link linkend="centroid"><citetitle>centroid</citetitle></link>
              was likely to crash.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Minor bug in printing which lost %.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              An uninitialised value in <link linkend="fold"><citetitle>fold</citetitle></link> fixed.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Uninitalised values in <link linkend="dconv"><citetitle>dconv</citetitle></link> fixed.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Assignment of fsigs now works.
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>System Changes:
        <itemizedlist>
          <listitem>
            <simpara>
              Avoid seg fault on some user errors.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Faster modal4 opcodes.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Allow cabbage compilation.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Made pfield size dynamic in event message csoundapi~.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              The default output format with pipe and double float is AU.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Change to ircam with default format, '-o stdout' and pipe.
            </simpara>
          </listitem>
          <listitem>
            <simpara>
              Added double float precision for output format.
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>Platform Changes:
        <itemizedlist>
          <listitem>
            <para>Linux:
              <itemizedlist>
                <listitem>
                  <simpara>Spinlocks initialised (fixes bug in chn opcodes).</simpara>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>OSX:
              <itemizedlist>
                <listitem>
                  <simpara>
                    Improved selection of devices in rtauhal module.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    Added a circular buffer interface and lock-free operation to rtauhal.
                  </simpara>
                </listitem>
                <listitem>
                  <simpara>
                    Fixed MacOSX installer (creating symlinks to lib_csnd.dylib).
                  </simpara>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>Haiku:
              <itemizedlist>
                <listitem>
                  <simpara>New platform</simpara>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>Android:
            <itemizedlist>
              <listitem>
                <simpara>
                  Using -B now in android to set circular buffer size.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Added fluid synth opcodes for android.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Added inputMessage method to CsoundObj.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Allow CSDPlayer to be installed on SD Card.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
          <listitem>
            <para>iOS:
            <itemizedlist>
              <listitem>
                <simpara>
                  Improved audio routing.
                </simpara>
              </listitem>
              <listitem>
                <simpara>
                  Bottom speaker the default for iOS.
                </simpara>
              </listitem>
            </itemizedlist>
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
      <para>API:
        <itemizedlist>
          <listitem>
            <simpara>
              Added new API function <emphasis>csoundCompileFromStrings()</emphasis>.
            </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
  </itemizedlist>
</para>
<bridgehead>New in Version 5.18 (2012 August 29)</bridgehead>
<para>
  This is mainly a bug-fixing release but with a number of new opcodes and
  enhanced features.
</para>
<para>
  <itemizedlist>
    <listitem>
      <para>New opcodes:
      <itemizedlist>
        <listitem>
          <simpara><link linkend="centroid"><citetitle>centroid</citetitle></link>
          opcode like pvscent but acting on audio signals</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="cosseg"><citetitle>cosseg</citetitle></link>
          like linseg but with cosine interpolation</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="cossegb"><citetitle>cossegb</citetitle></link>
          like linsegb but with cosine interpolation</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="cossegr"><citetitle>cossegr</citetitle></link>
          like linsegr but with cosine interpolation</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="joystick"><citetitle>joystick</citetitle></link>
          to read input values from an external joystick (Linux only)</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="log2"><citetitle>log2</citetitle></link>
          function for logarithms base 2</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="platerev"><citetitle>platerev</citetitle></link>
          opcode to model a reverberating square plate</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="pwd"><citetitle>pwd</citetitle></link>
          opcode to determine the current working directory</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="readf"><citetitle>readf</citetitle></link>
          opcode to read strings from a file</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="readfi"><citetitle>readfi</citetitle></link>
          opcode to read strings from a file on initialisation</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="vbap"><citetitle>vbap</citetitle></link>
          opcode like other vbap family but flexible about number
          of speakers and choice of layouts.</simpara>
        </listitem>
        <listitem>
          <simpara><link linkend="vbapg"><citetitle>vbapg</citetitle></link>
          opcode like vbap but only calculate the gains on the
          channels.</simpara>
        </listitem>
      </itemizedlist>
      </para>
    </listitem>
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>
              Changes to &lt;CsOptions&gt; to allow spaces between
              words, and escaped characters.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              <link linkend="fout"><citetitle>fout</citetitle></link>
              and <link
              linkend="fin"><citetitle>fin</citetitle></link> use a
              better buffering strategy, and so are
              faster
              </simpara>
            </listitem>
              <listitem>
                <simpara>
                  It is possible to specify just an orchestra with the
                  --orc flag.  This is useful when a score is not needed.
              </simpara>
            </listitem>
              <listitem>
                <simpara>
              A new command-line flag --ogg flag has been added for
              easy use of ogg/vorbis output.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              Added alsaseq real-time midi
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>
              <link
                  linkend="dates"><citetitle>dates</citetitle></link>
              opcode could crash on 64bit architecture; this is fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              Some multicore interlocks were wrong.  It is believed
              that this was not actually a problem, but would be in
              the future.</simpara>
            </listitem>
            <listitem>
              <simpara>
              There were cases when a file was double closed, leading
              to a crash on exit.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Two new features added in <link linkend="partikkel"><citetitle>partikkel</citetitle></link>.  Panning law for
                channelmasks can now be set using a function table
                (second optional argument to partikkel) and new support
                opcodes partikkelget and partikkelset, to access and
                modify the internal mask indices of partikkel.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              <link linkend="follow2"><citetitle>follow2</citetitle></link> was reworked do the i-rate and k-rate
              calculations are the same.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              <link linkend="pvscent"><citetitle>pvscent</citetitle></link> is corrected as it returned half the correct
              value.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              <link linkend="vbaplsinit"><citetitle>vbaplsinit</citetitle></link> can create more than one speaker layout which
              vbap/vbapg can use.  Also much better diagnostics on
              incorrect layouts.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
              Code changed so bison 2.6 can be used.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              It is assumed that libsndfile version 1.0.19 or later is
              available.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              If the score is omitted a near-infinite wait is
              generated.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
  <bridgehead>New in Version 5.17 (March 2012)</bridgehead>
  <para>
  This is mainly a bug-fixing release with no major changes, but the
  number of fixes warrants a release.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="cell"><citetitle>cell</citetitle></link>
               opcode, for cellular automata</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>active now will report total number of active or allocated instruments if argument in zero</simpara>
            </listitem>
            <listitem>
              <simpara>stsend and strecv the TCP socket opcodes reworked to a logical design </simpara>
            </listitem>
                <listitem>
              <simpara>DSSI system now will take up to 9 channels </simpara>
            </listitem>
            <listitem>
              <simpara>FLsavesnap works with other widgets where imin &gt; imax </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Utilities:
          <itemizedlist>
            <listitem>
              <simpara>csbeats better documented and built by default; also more note lengths available </simpara>
            </listitem>
            <listitem>
              <simpara>Some security holes in utilities fixed </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes:
          <itemizedlist>
            <listitem>
              <simpara>unirand opcode at a-rate fixed </simpara>
            </listitem>
            <listitem>
              <simpara>Locale fix for floating point literals in orchestra </simpara>
            </listitem>
            <listitem>
              <simpara>transegr fixed </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          System Changes:
          <itemizedlist>
            <listitem>
              <simpara>Score can now last longer (change to size of time variable) </simpara>
            </listitem>
            <listitem>
              <simpara>An empty score gives a very long performance time (years and years) </simpara>
            </listitem>
            <listitem>
              <simpara>Android code released </simpara>
            </listitem>
            <listitem>
              <simpara>Changes to use of tmp files; now all are deleted at end of run (previously some were left) and the environment variable TMPDIR is used.
              </simpara>
            </listitem>
            <listitem>
              <simpara>interaction between Comments, end of line and end of file fixed </simpara>
            </listitem>
            <listitem>
              <simpara>Hexadecimal numbers now allowed in orchestra </simpara>
            </listitem>
            <listitem>
              <simpara>Empty orchestra now not a crash  </simpara>
            </listitem>
            <listitem>
              <simpara>change to macro expansion inside a string </simpara>
            </listitem>
            <listitem>
              <simpara>avoid infinite loop when eof in malformed score macro </simpara>
            </listitem>
            <listitem>
              <simpara>fixed macroname-with-args diagnostics and memory leak </simpara>
            </listitem>
            <listitem>
              <simpara>change to preprocessor: {{ }} inside "..." and better diagnostics </simpara>
            </listitem>
            <listitem>
              <simpara>fix windows installer so it removes full $INSTDIR\bin from PATH during uninstall: this cleans up the PATH environment variable when uninstalling on
      Windows.  Previously, it was leaving a trailing "\bin" on the PATH.</simpara>
            </listitem>
            <listitem>
              <simpara>CsoundAC MusicModel class more usable by C++ programs </simpara>
            </listitem>
            <listitem>
              <simpara>ftcps had been missed as a function </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>Many! Some messages quietened, code improvements etc </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
  <bridgehead>New in Version 5.16 (February 2012)</bridgehead>
  <para>
    The major change is that the new parser is now the default. The old
    parser is still available in case of difficulty but the new has been
    given extensive testing since the start of the year, including
    complete restructuring of macro expansion.
    A side effect is that the runtime of most orchestras is faster,
    although parsing is slower. There are a few optimisations implemented
    like constant folding in simple cases. Line numbers and file names
    are traced better than before.
  </para>
  <para>
    Some memory leaks also fixed.
  </para>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>Opcodes adapted from SuperCollider by &nametito;:
              <link linkend="dust"><citetitle>dust</citetitle></link>,
              <link linkend="dust2"><citetitle>dust2</citetitle></link>,
              <link linkend="gausstrig"><citetitle>gausstrig</citetitle></link>,
              <link linkend="gendy"><citetitle>gendy</citetitle></link>,
              <link linkend="gendyc"><citetitle>gendyc</citetitle></link>, and
              <link linkend="gendyx"><citetitle>gendyx</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fractal noise generator by &nametito;:
              <link linkend="fractalnoise"><citetitle>fractalnoise</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Opcodes for accessing table values by direct indexing, by &namejohn;:
              <link linkend="ptable"><citetitle>ptable</citetitle></link>,
              <link linkend="ptablei"><citetitle>ptablei</citetitle></link>,
              <link linkend="ptable3"><citetitle>ptable3</citetitle></link>, and
              <link linkend="ptablew"><citetitle>ptablew</citetitle></link>. These opcodes
              are respectively like
              <link linkend="table"><citetitle>table</citetitle></link>,
              <link linkend="tablei"><citetitle>tablei</citetitle></link>,
              <link linkend="table3"><citetitle>table3</citetitle></link>, and
              <link linkend="tablew"><citetitle>tablew</citetitle></link>, but they do not
              require a power-of-2 table size.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens:
          <itemizedlist>
            <listitem>
              <simpara>There was a fence post problem in tab opcode that could falsely report a reference out of range.</simpara>
            </listitem>
            <listitem>
              <simpara>GEN15 mis-called gens 13 and 14 internally, using uninitialised values voice amplitude. Problem fixed.</simpara>
            </listitem>
                <listitem>
              <simpara>fmbell now takes an optional argument to control the sustain time.</simpara>
            </listitem>
            <listitem>
              <simpara>Change to pvsbasic for tab to table conversions.</simpara>
            </listitem>
            <listitem>
              <simpara>poscil is now polymorphic, allowing k- or a-rate amplitude and frequency.</simpara>
            </listitem>
            <listitem>
              <simpara>p() and i() changed when argument at k-rate.</simpara>
            </listitem>
            <listitem>
              <simpara>gen49 deferred now works.</simpara>
            </listitem>
            <listitem>
              <simpara>gen23 now available deferred.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Utilities:
          <itemizedlist>
            <listitem>
              <simpara>Checked for use with the new parser in memory files.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Frontends:
          <itemizedlist>
            <listitem>
              <simpara>Table access added to csoundapi~ via new get/set methods.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>Many in new parser related to precedence and multicore.</simpara>
            </listitem>
            <listitem>
              <simpara>Better diagnostics when orchestra file/csd is missing.</simpara>
            </listitem>
            <listitem>
              <simpara>csd file: fix CsFileB and CsSampleB.</simpara>
            </listitem>
            <listitem>
              <simpara>Fixed score statement 'n'.</simpara>
            </listitem>
            <listitem>
              <simpara>Fixed bug in diskin2 leading to infinite loop.</simpara>
            </listitem>
            <listitem>
              <simpara>Fixed bug causing crossfade noise in hrtfmove.</simpara>
            </listitem>
            <listitem>
              <simpara>Fixed unlikely buffer overflows in some utilities.</simpara>
            </listitem>
            <listitem>
              <simpara>Avoid segfault in midicN.</simpara>
            </listitem>
            <listitem>
              <simpara>Bug in mp3in in skip=0 case fixed.</simpara>
            </listitem>
            <listitem>
              <simpara>'r' score statement fixed with respect to macros.</simpara>
            </listitem>
            <listitem>
              <simpara>sndwarp could segfault.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          System Changes:
          <itemizedlist>
            <listitem>
              <simpara>Preprocessor #if #else #endin working.</simpara>
            </listitem>
            <listitem>
              <simpara>#includes depth now limited rather than infinite recursion.</simpara>
            </listitem>
            <listitem>
              <simpara>Really turn off all displays if --nodisplays or -d is used; fixes bug where using -d or --nodisplays would still cause the
              winFLTK.c csoundModuleInit to setup display callbacks; bug caused with python TK apps and CsoundYield_FLTK being called.</simpara>
            </listitem>
            <listitem>
              <simpara>Memory leak in mp3in and mp3len fixed.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>Very, very, very many! And the new parser...</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
<bridgehead>New in Version 5.15 (December 2011)</bridgehead>
<para>
  <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><citetitle>ftab2tab</citetitle>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="tab2pvs"><citetitle>tab2pvs</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="pvs2tab"><citetitle>pvs2tab</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="cpumeter"><citetitle>cpumeter</citetitle></link> opcode, (not really new but now available in OSX)</simpara>
              </listitem>
            <listitem>
              <simpara><citetitle>minmax</citetitle>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><citetitle>(EXPERIMENTAL) ftresize</citetitle>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><citetitle>(EXPERIMENTAL) ftresizei</citetitle>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="hrtfearly"><citetitle>hrtfearly</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="hrtfreverb"><citetitle>hrtfreverb</citetitle></link>
              opcode.</simpara>
            </listitem>
          </itemizedlist>
        </para>

        <para>
          New Gen and Macros
          <itemizedlist>
            <listitem>
              <simpara>Code to allow GEN49 to be deferred [NB does not seem to work] </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Modified Opcodes and Gens
          <itemizedlist>
            <listitem>
              <simpara>socksend and sockrecv no longer uses MTFU check and work on Windows </simpara>
            </listitem>
            <listitem>
              <simpara>mpulse changed so if next event is at negative time use the absolute value </simpara>
            </listitem>
                <listitem>
              <simpara>serial opcode now runs on Windows as will as Un*x </simpara>
            </listitem>
                <listitem>
              <simpara>out, out2, outq, outh, outo outx and out32 are now identical opcodes and will take up to as many arguments as nchnls. This replaces the current remapping of opcodes </simpara>
            </listitem>
            <listitem>
              <simpara>turnoff2 now polymorphic wrt S and k types (ie accepts instrumnet names) </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bugs fixed:
        <itemizedlist>
          <listitem>
            <simpara> GEN42 fixed </simpara>
          </listitem>
          <listitem>
            <simpara>jacko: fixed a segfault removing the unused JackSessionID option </simpara>
          </listitem>
          <listitem>
            <simpara>doppler memory leak fixed </simpara>
          </listitem>
          <listitem>
            <simpara>transegr fixed in release mode when skipping most of envelope </simpara>
          </listitem>
          <listitem>
            <simpara>FLPack now agrees with manual </simpara>
          </listitem>
          <listitem>
            <simpara>max_k now agrees with manual </simpara>
          </listitem>
          <listitem>
            <simpara>hrtfreverb fixed </simpara>
          </listitem>
          <listitem>
            <simpara>atsa code now works on Windows in more cases </simpara>
          </listitem>
          <listitem>
            <simpara>tabmorph bug fixed </simpara>
          </listitem>
          <listitem>
            <simpara>fixed problem with user-defined opcodes having no outputs </simpara>
          </listitem>
          <listitem>
            <simpara> Various fixes to * ... */ comments </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
      <listitem>
        <para>System Changes:
        <itemizedlist>
          <listitem>
            <simpara> Various licence issues sorted </simpara>
          </listitem>
          <listitem>
            <simpara>Loris is no longer part of the Csound tree </simpara>
          </listitem>
          <listitem>
            <simpara>Memory leaks fixed </simpara>
          </listitem>
          <listitem>
            <simpara>If no score is given a dummy that runs for over 100 years is created </simpara>
          </listitem>
          <listitem>
            <simpara>All score processing takes place in memory without temporary files </simpara>
          </listitem>
          <listitem>
            <simpara>String memory now expandable and no size limitation </simpara>
          </listitem>
          <listitem>
            <simpara>#if #else #end now in new parser </simpara>
          </listitem>
          <listitem>
            <simpara>Adjustments to MIDI file precision in output </simpara>
          </listitem>
          <listitem>
            <simpara>On OSX move from Coreaudio to AuHAL </simpara>
          </listitem>
          <listitem>
            <simpara>Multicore now safe for ZAK, Channels and modifying tables </simpara>
          </listitem>
          <listitem>
            <simpara>New coremidi module </simpara>
          </listitem>
          <listitem>
            <simpara>Virtual Keyboard improved:
                 1) Dropdown for choosing base octave (the one that
                 starts with the virtual key mapped to physical key
                 Z). Default value is 5 which is backwards compatible.
                 2) Shift-X mappings which add two octaves to X
                 mappings for a total of 4 octaves playable from the
                 physical keyboard (starting from selected base octave).
                 3) Control-N / Control-Shift-N mappings to increment
                 / decrement slider for control N.
                 4) Mouse wheel now controls sliders. </simpara>
          </listitem>
          <listitem>
            <simpara>tsig type for vectors </simpara>
          </listitem>
          <listitem>
            <simpara>tsigs and fsigs allowed as arguments in UDOs </simpara>
          </listitem>
          <listitem>
            <simpara>API: Minor version upped </simpara>
          </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
              Very, very, very many! </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
<bridgehead>New in Version 5.14 (October 2011)</bridgehead>
<para>
  <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="mp3len"><citetitle>mp3len</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="qnan"><citetitle>qnan</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="qinf"><citetitle>qinf</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend=" exprandi"><citetitle>
                exprandi</citetitle></link> opcode.</simpara>
              </listitem>
            <listitem>
              <simpara><link linkend="cauchyi"><citetitle>cauchyi</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="gaussi"><citetitle>gaussi</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="cpumeter"><citetitle>cpumeter</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="linsegb"><citetitle>linsegb</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="expsegb"><citetitle>expsegb</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="transegb"><citetitle>transegb</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="expsegba"><citetitle>expsegba</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="pvsgain"><citetitle>pvsgain</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvsbufread2"><citetitle>pvsbufread2</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="serialBegin"><citetitle>serial</citetitle></link>
              opcodes.</simpara>
            </listitem>
            <listitem>
              <simpara>lua opcodes.</simpara>
            </listitem>
            <listitem>
              <simpara>plustab opcode.</simpara>
            </listitem>
            <listitem>
              <simpara>multtab opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="maxarray"><citetitle>maxarray</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="minarray"><citetitle>minarray</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="sumarray"><citetitle>sumarray</citetitle></link>
              opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link
                           linkend="scalearray"><citetitle>scalearray</citetitle></link>
              opcode.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>beats processor renamed to csbeats and distributed </simpara>
            </listitem>
            <listitem>
              <simpara>mkdb utility to provide a catalogue of plugin
              libraries/opcodes </simpara>
            </listitem>
                <listitem>
              <simpara>ladspa library build in default system </simpara>
            </listitem>
                <listitem>
              <simpara>macros are now expanded inside string in the score </simpara>
            </listitem>
            <listitem>
              <simpara>there in an until .. do .. od looping syntax
              (in the new parser only) </simpara>
            </listitem>
            <listitem>
              <simpara>SIGPIPE signals are ignored rather than causing Csound to exit </simpara>
            </listitem>
            <listitem>
              <simpara>It is possible to use vectors of k-rate values,
              named t-variable.  They are initialised to a fixed sizw
              with init adncan be read with a simple [] syntax.
              assignment to elements is only via =.  There are also a
              few new opcodes that provide wider functionality.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
        <itemizedlist>
          <listitem>
            <simpara> reading values to fill tables was broken with
            respect to comments</simpara>
          </listitem>
          <listitem>
            <simpara>internal error in wii_data fixed </simpara>
          </listitem>
          <listitem>
            <simpara>pvsshift fixed </simpara>
          </listitem>
          <listitem>
            <simpara>jacko fixed </simpara>
          </listitem>
          <listitem>
            <simpara>gen23 minor fixes </simpara>
          </listitem>
          <listitem>
            <simpara>wiimote fixed </simpara>
          </listitem>
          <listitem>
            <simpara>atsaadd fixed </simpara>
          </listitem>
          <listitem>
            <simpara>compress fixed to work with 0dbfs </simpara>
          </listitem>
          <listitem>
            <simpara>pvsbufread corrected with respect to position
            counting </simpara>
          </listitem>
          <listitem>
            <simpara>tempo opcode fixed </simpara>
          </listitem>
          <listitem>
            <simpara>CsFileB section in .csd files had a bug, now fixed </simpara>
          </listitem>
          <listitem>
            <simpara>deferred gen01 tables could have wrong size </simpara>
          </listitem>
          <listitem>
            <simpara>vbap_zak made to work(!) </simpara>
          </listitem>
          <listitem>
            <simpara>fixed memory issue in ATSsinoi </simpara>
          </listitem>
          <listitem>
            <simpara>various fixes to cscore </simpara>
          </listitem>
          <listitem>
            <simpara>various fixes to partials and tradsyn </simpara>
          </listitem>
          <listitem>
            <simpara>transegr could crash in some cases</simpara>
          </listitem>
          <listitem>
            <simpara>loris opcodes updated to latest version </simpara>
          </listitem>
          <listitem>
            <simpara>date opcode has new base in some platforms to
            avoid overflow </simpara>
          </listitem>
          <listitem>
            <simpara>pvsblur now works over reinit </simpara>
          </listitem>
          <listitem>
            <simpara>diskin, diskin2 and soundin now can read up to 40
            channels </simpara>
          </listitem>
          <listitem>
            <simpara>prints behaves better with rounding </simpara>
          </listitem>
          <listitem>
            <simpara>fmpercfl now has working vibrato </simpara>
          </listitem>
          <listitem>
            <simpara>atreson now has gain parameter at k-rate </simpara>
          </listitem>
          <listitem>
            <simpara>comb opcode made safe if in and out arguments the
            same </simpara>
          </listitem>
          <listitem>
            <simpara>better accuracy in line and expon </simpara>
          </listitem>
          <listitem>
            <simpara>OSCsend recovers space previously lost </simpara>
          </listitem>
          <listitem>
            <simpara>OSCsend can send a table as a blob with the T tag
            -- experimental and untested.</simpara>
          </listitem>
          <listitem>
            <simpara>lpf18 now has an optional iskip argument </simpara>
          </listitem>
          <listitem>
            <simpara>i() will also accept an i-rate value in which
            case it is a no-op </simpara>
          </listitem>
          <listitem>
            <simpara>makecsd revised and extended to have options for
            MIDI and score processing and licenses </simpara>
          </listitem>
          <listitem>
            <simpara>lpanal reworked to remove bugs and oddities </simpara>
          </listitem>
            <listitem>
              <simpara>an issue with noise in alsa fixed
              and a click in portaudio fixed     </simpara>
            </listitem>
            <listitem>
              <simpara>portaudio driver changed to be more robust on stop/exit </simpara>
            </listitem>
        </itemizedlist>
      </para>
    </listitem>
    <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
              Many many changesto the new parser so it is now
              operational, but should be used with care</simpara>
            </listitem>
            <listitem>
              <simpara>The multicore system is distributed in an
              experimental mode and should be used with great care.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
<bridgehead>New in Version 5.13 (January 2011)</bridgehead>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="median"><citetitle>median</citetitle></link> opcode.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="filevalid"><citetitle>filevalid</citetitle></link>  opcode.</simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvstanal"><citetitle>pvstanal</citetitle></link>,
                <link linkend="pvswarp"><citetitle>pvswarp</citetitle></link>,
                <link linkend="temposcal"><citetitle>temposcal</citetitle></link>,
                pvslock, spectral processing opcodes.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="mincer"><citetitle>mincer</citetitle></link> opcode</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="fareylen"><citetitle>fareylen</citetitle></link> sequence opcodes.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>Real random number generators using /dev/random (Linux only).
              </simpara>
            </listitem>
            <listitem>
              <simpara>INF macro added to orchestras; z read as infinity in scores</simpara>
            </listitem>
            <listitem>
              <simpara>init changed to allow multiple inits in on statement</simpara>
            </listitem>
            <listitem>
              <simpara>GEN for support of farey sequences</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="maxalloc"><citetitle>maxalloc</citetitle></link>,<link linkend="cpuprc"><citetitle>cpuprc</citetitle></link>, <link linkend="active"><citetitle>active</citetitle></link> now accept named instruments.</simpara>
            </listitem>
            <listitem>
              <simpara>If normalisation in pow opcodes is zero treat as 1</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="inch"><citetitle>inch</citetitle></link> can take upto 20 inputs and outputs.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="pvscale"><citetitle>pvscale</citetitle></link>, <link linkend="pvsvoc"><citetitle>pvsvoc</citetitle></link> and <link linkend="pvsmix"><citetitle>pvsmix</citetitle></link> now have very good spectral envelope preservation modes (1 = filtered cepstrum, 2 = true envelope).</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="oscil1"><citetitle>oscil1</citetitle></link> could be static if the duration was long; now there is a
   positive minimum increment.</simpara>
            </listitem>
            <listitem>
              <simpara>GEN49 now uses search paths.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>Count of lines fixed in orchestras, and \ inside strings
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fast tab opcodes made safe from crashes</simpara>
            </listitem>
            <listitem>
              <simpara>% in formated printing could crash</simpara>
            </listitem>
            <listitem>
              <simpara>Double free in fgen fixed</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="sndwarp"><citetitle>sndwarp</citetitle></link> quietened (gave too many messages)</simpara>
            </listitem>
            <listitem>
              <simpara>gen41 deals with positive probabilities</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="adsynt"><citetitle>adsynt</citetitle></link> reworked removing many bugs</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="adsynt2"><citetitle>adsynt2</citetitle></link> phase error fixed</simpara>
            </listitem>
            <listitem>
              <simpara>Bug in max number of gens fixed</simpara>
            </listitem>
            <listitem>
              <simpara>Better checking in grain4</simpara>
            </listitem>
            <listitem>
              <simpara>Better checking in <link linkend="adsyn"><citetitle>adsyn</citetitle></link></simpara>
            </listitem>
            <listitem>
              <simpara>modulus was wrong in new parser</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="atonex"><citetitle>atonex</citetitle></link>/<link linkend="tonex"><citetitle>tonex</citetitle></link> did wrong operation</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="mp3in"><citetitle>mp3in</citetitle></link> could repeat sound at end of file</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="changed"><citetitle>changed</citetitle></link> opcode initialised to zero</simpara>
            </listitem>
            <listitem>
              <simpara>Serious bug in <link linkend="tabmorpha"><citetitle>tabmorpha</citetitle></link> fixed</simpara>
            </listitem>
            <listitem>
              <simpara>GEN49 has serious bug removed, so no longer incorrect silences.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="partikkel"><citetitle>partikkel</citetitle></link> opcode: fixed bug in sub-sample grain placement when
       using grain rate FM</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
   In the new parser only there are operator @ and @@ to round up the
       next integer to a power of 2 or powerof2+1
              </simpara>
            </listitem>
            <listitem>
              <simpara>Score sorting made much faster</simpara>
            </listitem>
            <listitem>
              <simpara>lineto improved</simpara>
            </listitem>
            <listitem>
              <simpara>Named gens allowed</simpara>
            </listitem>
            <listitem>
              <simpara>Various printing include instrument name if available</simpara>
            </listitem>
            <listitem>
              <simpara>Command option to omit loading a library</simpara>
            </listitem>
            <listitem>
              <simpara>Number of out channels no longer constrained to be number of in</simpara>
            </listitem>
            <listitem>
              <simpara>Many fixes to new parser</simpara>
            </listitem>
            <listitem>
              <simpara>More use of Warnings than Messages (allows for them to be switched off)</simpara>
            </listitem>
            <listitem>
              <simpara>csoundSetMessageCallback reset if callback set to null</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
 <bridgehead>New in Version 5.12 (January 2010)</bridgehead>
 <para>
   <itemizedlist>
     <listitem>
       <para>New opcodes:
         <itemizedlist>
           <listitem>
             <simpara>
         <link linkend="transegr"><citetitle>transegr</citetitle></link>
               is a version of
               the <link linkend="transeg"><citetitle>transeg</citetitle></link>
               opcode which has a release section which is triggered
               by midi,
               a <link linkend="turnoff2"><citetitle>turnoff2</citetitle></link>
               opcode or a negative instrument
               number <link linkend="i"><citetitle>i score event</citetitle></link>.
       </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="ftgenonce"><citetitle>ftgenonce</citetitle></link>
               generates a function table from within an instrument
               definition, without duplication of data.
       </simpara>
           </listitem>
           <listitem>
             <simpara><link linkend="passign"><citetitle>passign</citetitle></link>
             allows quick initialization of i-rate variables from p-fields</simpara>
           </listitem>
           <listitem>
             <simpara><link linkend="crossfm"><citetitle>crossfm</citetitle></link>
             implements crossed fm synthesis.</simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="loopxseg"><citetitle>loopxseg</citetitle></link>
               is
               like <link linkend="loopseg"><citetitle>loopseg</citetitle></link>
               but with exponential envelope.
       </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="looptseg"><citetitle>looptseg</citetitle></link>
               is like <link linkend="loopseg"><citetitle>loopseg</citetitle></link>
               but with a flexible envelope like <link linkend="transeg"><citetitle>transeg</citetitle></link>
       </simpara>
           </listitem>
         </itemizedlist>
       </para>
     </listitem>
     <listitem>
       <para>Bug fixes and improvements:
         <itemizedlist>
           <listitem>
             <simpara>
         <link linkend="pvshift"><citetitle>pvshift</citetitle></link> would overwrite in double mode.
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="pan2"><citetitle>pan2</citetitle></link> case 3 fixed.
             </simpara>
           </listitem>
  <!--           <listitem>-->
 <!--             <simpara> -->
<!--          <link linkend="gettempo"><citetitle>gettempo</citetitle></link> now works. -->
<!--              </simpara> -->
  <!--          </listitem> -->
           <listitem>
             <simpara>
         <link linkend="clockon"><citetitle>clockon</citetitle></link>
         and  <link linkend="clockoff"><citetitle>clockoff</citetitle></link>
         now work again.
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="cross2"><citetitle>cross2</citetitle></link> and <link linkend="interp"><citetitle>interp</citetitle></link> could have divided by zero
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         linecount for error messages no longer includes text
         from <link linkend="CommandUnifileParFile"><citetitle>.csoundrc</citetitle></link>
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="p5gconnect"><citetitle>p5gconnect</citetitle></link>
         changed to use a separate thread to avoid timeout problem.
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="transeg"><citetitle>transeg</citetitle></link> checks argument count.
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         <link linkend="sfload"><citetitle>sfload</citetitle></link>
               used to be limited to 10 sound fonts and was not policed.
               Now open-ended.
             </simpara>
           </listitem>
         </itemizedlist>
       </para>
     </listitem>
     <listitem>
       <para>
         Internal Changes:
         <itemizedlist>
           <listitem>
             <simpara>
         \&quot; allowed as an escape in orchestral strings
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         New parser fixed on optional arguments
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         Better checking of <link linkend="f"><citetitle>f</citetitle></link> statement with negative number
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         Soundfonts only initialise pitches array once, in the
         soundfont opcodes.
             </simpara>
           </listitem>
           <listitem>
             <simpara>
         Usual collection of gratuitous minor changes, layout and comments
             </simpara>
           </listitem>
         </itemizedlist>
       </para>
     </listitem>
   </itemizedlist>
 </para>
  <bridgehead>New in Version 5.11 (June 2009)</bridgehead>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="mp3in"><citetitle>mp3in</citetitle></link>
              allows reading of mp3 files directly in the orchestra.</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="wiiconnect"><citetitle></citetitle>wiiconnect</link>, <link linkend="wiidata"><citetitle></citetitle>wiidata</link>, <link linkend="wiisend"><citetitle></citetitle>wiisend</link>, <link linkend="wiirange"><citetitle></citetitle>wiirange</link> opcodes by john ffitch to receive and send data to a wiimote controller.</simpara>
            </listitem>
            <listitem>
              <simpara>New opcodes to receive data directly from a p5glove by john ffitch <link linkend="p5gdata"><citetitle>p5gdata</citetitle></link></simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="tabsum"><citetitle>tabsum</citetitle></link> sums sections of ftables</simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="MixerSetLevel_i"><citetitle>MixerSetLevel_i</citetitle></link> an init-time only version of <link linkend="MixerSetLevel"><citetitle>MixerSetLevel</citetitle></link></simpara>
            </listitem>
             <listitem>
              <simpara><link linkend="doppler"><citetitle>doppler</citetitle></link>
              implements a simulation of the doppler effect.</simpara>
            </listitem>
             <listitem>
              <simpara><link linkend="filebit"><citetitle>filebit</citetitle></link> reports the file depth of a file.</simpara>
            </listitem>
           <listitem>
             <simpara>
         The new <link linkend="SignalFlowGraphOpcodes"><citetitle>Signal
       Flow opcodes </citetitle></link> enable the usage of
               signal flow graphs in Csound.
       </simpara>
           </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>
                New panning type for <link linkend="pan2"><citetitle></citetitle>pan2</link> opcode
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New csd score tag &lt;CsExScore&gt;.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New -Ma option for ALSA RT MIDI module which listens to all devices.
              </simpara>
            </listitem>
            <listitem>
              <simpara>There is a gen49 to read mp3 files
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Added rounding bin code to <link linkend="pvscale"><citetitle>pvscale</citetitle></link>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              Added non-power-of-2 table support for <link linkend="ftload"><citetitle>ftload</citetitle></link> and <link linkend="ftsave"><citetitle>ftsave</citetitle></link>
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              GEN23 totally rewritten to be more consistent in what constitutes
       a separator and comments. (Still no /* */ comments)
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>
                New examples for pvs opcodes by Joachim Heintz: <link linkend="pvsarp"><citetitle></citetitle>pvsarp</link>, <link linkend="pvscent"><citetitle></citetitle>pvscent</link>, <link linkend="pvsbandp"><citetitle></citetitle>pvsbandp</link>, <link linkend="pvsbandr"><citetitle></citetitle>pvsbandr</link>, <link linkend="pvsbufread"><citetitle></citetitle>pvsbufread</link>,  <link linkend="pvsadsyn"><citetitle></citetitle>pvsadsyn</link>,  <link linkend="pvsynth"><citetitle></citetitle>pvsynth</link>,  <link linkend="pvsblur"><citetitle></citetitle>pvsblur</link>,  <link linkend="pvscale"><citetitle></citetitle>pvscale</link>,  <link linkend="pvscross"><citetitle></citetitle>pvscross</link>,  <link linkend="pvsfilter"><citetitle></citetitle>pvsfilter</link>,  <link linkend="pvsfreeze"><citetitle></citetitle>pvsfreeze</link>,  <link linkend="pvshift"><citetitle></citetitle>pvshift</link>,  <link linkend="pvsmaska"><citetitle></citetitle>pvsmaska</link>,  <link linkend="pvsmorph"><citetitle></citetitle>pvsmorph</link>
              </simpara>
            </listitem>
            <listitem>
              <simpara>Use of automatic numbering of ftables reuses table numbers
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="seed"><citetitle></citetitle>seed</link> with positive argument was wrong
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="sprintf"><citetitle></citetitle>sprintf</link> with an empty string printed wrong data
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="mute"><citetitle></citetitle>mute</link> now works with both numeric and named instruments
              </simpara>
            </listitem>
            <listitem>
              <simpara>Small fixes in <link linkend="diskin"><citetitle></citetitle>diskin</link>, and in <link linkend="tablexkt"><citetitle></citetitle>tablexkt</link>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>SConstruct now builds completely independent shared libraries
       for Python, Lua, and Java wrappers.
              </simpara>
            </listitem>
            <listitem>
              <simpara>New Parser almost usable
              </simpara>
            </listitem>
            <listitem>
              <simpara> Redrawing of graphs fixed so that only selected ones get redrawn.
              </simpara>
            </listitem>
            <listitem>
              <simpara>RT-alsa more forgiving on near sample rates
              </simpara>
            </listitem>
            <listitem>
              <simpara>It is possible to have the score generated by an external program
         rather than using standard score format using
         &lt;CScore bin="translater"&gt; to call the program translater on the
         score data
              </simpara>
            </listitem>
            <listitem>
              <simpara>lpc_export fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>Removed limit on macro names length
              </simpara>
            </listitem>
            <listitem>
              <simpara>PMAX, the number of arguments to a score event has been reduced
    by 2, and an overflow system introduced so GENs can have
    arbitrary numbers of arguments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Increased API version to 2.1.
              </simpara>
            </listitem>
            <listitem>
              <simpara>    New API function pointer ldmemfile2withCB() which is
       a version of ldmemfile() allowing a callback to be set and called
       exactly once to process the MEMFIL buffer after it is loaded.
              </simpara>
            </listitem>
            <listitem>
              <simpara>csound->floatsize set; zero in earlier versions
              </simpara>
            </listitem>
            <listitem>
              <simpara>GetChannelLock added
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
  <bridgehead>New in Version 5.10 (December 2008)</bridgehead>
  <para>
    <itemizedlist>
<!--      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara><link linkend="ephasor"><citetitle>ephasor</citetitle></link></simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>-->
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>
                New option to listen to all MIDI devices using the portmidi realtime module. To enable listening to all devices use "-+rtmidi=portmidi -Ma".
              </simpara>
            </listitem>
            <listitem>
              <simpara>Dither on output implemented; rectangular and triangular dither
    available in some cases
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="GEN20"><citetitle>GEN20</citetitle></link> type 6 now has option to set variance
              </simpara>
            </listitem>
<!--            <listitem>
              <simpara>sone GEN as a plugin to mimic gen13 in Music360 (this may change
    in detail)
              </simpara>
            </listitem>-->
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>
                Locale set to C numeric to avoid , versus . problems.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="diskin"><citetitle>diskin</citetitle></link> fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="outo"><citetitle>outo</citetitle></link> was broken regarding channel 6
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="pitchamdf"><citetitle>pitchamdf</citetitle></link> fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="zfilter2"><citetitle>zfilter2</citetitle></link> intialization fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="s32b14"><citetitle>s32b14</citetitle></link> fixed
              </simpara>
            </listitem>
            <listitem>
              <simpara>Fixed other bugs fixed that have not been reported publicly.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
    The major version of the Csound API is increased to 2; affected csound.so as well. This means that Csound 5.10 is incompatible with applications ("front ends", "clients", or "hosts") that were built for Csound 5.08 and earlier and that use API version 1.x. These applications will need to be rebuilt to work with the current and future versions of Csound.  Csound front ends written in interpreted languages such as Python or Java may continue to work without modification.  It may also be possible to keep both an earlier version of the Csound library and an API 2.0 version on the same machine together so that new and old Csound-based applications can run side-by-side.  These changes do not in any way affect the
    compatibility of Csound orchestras and scores: all old documents should continue to work as before.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Time now counted internally in samples, overcoming a longstanding bug with rounding of time to k-rate.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Many internal changes related to branch prediction.  Some opcodes are substantially quicker.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>

<bridgehead>New in Version 5.09 (October 2008)</bridgehead>
    <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>New <link linkend="vosim"><citetitle>vosim</citetitle></link> opcode by Rasmus Ekman which recreates the historic VOSIM (VOcal SIMulator) technique.</simpara>
            </listitem>
            <listitem>
              <simpara>New <link linkend="dcblock2"><citetitle>dcblock2</citetitle></link> opcode by &namevictor;.</simpara>
            </listitem>
            <listitem>
              <simpara>New Chua's oscillator model: <link linkend="chuap"><citetitle>chuap</citetitle></link> by Michael Gogins.</simpara>
            </listitem>
            <listitem>
              <simpara>New <link linkend="linearalgebraopcodes"><citetitle>Linear Algebra</citetitle></link> opcodes by Michael Gogins. Standard Linear algebra over real and complex vectors and matrices: elementwise arithmetic, norms, transpose and conjugate, inner products, matrix inverse, LU decomposition, QR decomposition, and QR-based eigenvalue decomposition. Includes copying vectors to and from a-rate signals, function tables, and f-signals.</simpara>
            </listitem>
            <listitem>
              <simpara>New ambisonic opcodes: <link linkend="bformdec1"><citetitle>bformdec1</citetitle></link> and <link linkend="bformenc1"><citetitle>bformenc1</citetitle></link>. These opcodes deprecate the older <link linkend="bformdec"><citetitle>bformdec</citetitle></link> and <link linkend="bformenc"><citetitle>bformenc</citetitle></link>.</simpara>
            </listitem>
            <listitem><simpara>New Score control opcodes by &namevictor;: <link linkend="rewindscore"><citetitle>rewindscore</citetitle></link> and <link linkend="setscorepos"><citetitle>setscorepos</citetitle></link>.</simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New functionality:
          <itemizedlist>
            <listitem>
              <simpara>
                The <emphasis>vbap</emphasis> family of opcodes (<link linkend="vbap4"><citetitle>vbap4</citetitle></link>, <link linkend="vbap8"><citetitle>vbap8</citetitle></link>, <link linkend="vbap16"><citetitle>vbap16</citetitle></link> and <link linkend="vbapz"><citetitle>vbapz</citetitle></link>) now accept k-rate variables for all their input arguments.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New pulseaudio I/O module on Linux.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New optional <emphasis>ienv</emphasis> parameter to generate envelopes for the soundfont opcodes: <link linkend="sfplay"><citetitle>sfplay</citetitle></link>,  <link linkend="sfplay3"><citetitle>sfplay3</citetitle></link>,  <link linkend="sfplaym"><citetitle>sfplaym</citetitle></link> and  <link linkend="sfplay3m"><citetitle>sfplay3m</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Added 'skip normalisation argument'  to "tanh" named GEN routine. (See <link linkend="ScoreGenRef"><citetitle>Named GEN Routines</citetitle></link>)
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Added scheduler priority option on alsa.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>
                Allow scientific notation (as was in csound4!) in <link linkend="GEN23"><citetitle>GEN23</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed bug in FLTK initialization. Should make FLTK usage more stable.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Error on /* */ comments in orchestra fixed.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="poscil"><citetitle>poscil</citetitle></link> no longer overwrites frequency if variable is shared.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="printk"><citetitle>printk</citetitle></link> and <link linkend="printks"><citetitle>printks</citetitle></link> check that opcode is initialised.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Deprecate <link linkend="soundout"><citetitle>soundout</citetitle></link> and <link linkend="soundouts"><citetitle>soundouts</citetitle></link> in favour of <link linkend="fout"><citetitle>fout</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed <link linkend="space"><citetitle>space</citetitle></link> opcode to accept non-pow-2 (deferred) tables.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed <link linkend="pvsmorph"><citetitle>pvsmorph</citetitle></link> bug.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>
                New parser has #include and argumentless macros.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Less casting between floats and doubles in float version.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Includes experimental multicore support.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="buzz"><citetitle>buzz</citetitle></link> opcode rewritten.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Many other internal changes and small bug fixes.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
  <bridgehead>New in Version 5.08 (February 2008)</bridgehead>
  <para>
    <itemizedlist>
      <listitem>
        <para>New opcodes:
          <itemizedlist>
            <listitem>
              <simpara>
                <link linkend="imagecreate"><citetitle>imagecreate</citetitle></link>,
                <link linkend="imagesize"><citetitle>imagesize</citetitle></link>,
                <link linkend="imagegetpixel"><citetitle>imagegetpixel</citetitle></link>,
                <link linkend="imagesetpixel"><citetitle>imagesetpixel</citetitle></link>,
                <link linkend="imagesave"><citetitle>imagesave</citetitle></link>,
                <link linkend="imageload"><citetitle>imageload</citetitle></link> and
                <link linkend="imagefree"><citetitle>imagefree</citetitle></link>: New image file processing opcodes by Cesare Marilungo to read/write png images from Csound.
              </simpara>
            </listitem>
            <listitem>
              <simpara><link linkend="pvsbandp"><citetitle>pvsbandp</citetitle></link> and <link linkend="pvsbandr"><citetitle>pvsbandr</citetitle></link> by John ffitch, which perform band-pass and band-reject filtering in the spectral domain on a pvs signal.</simpara>
            </listitem>
            <listitem><simpara>New HRTF opcodes by Brian Carty:<link linkend="hrtfmove"><citetitle>hrtfmove</citetitle></link>, <link linkend="hrtfmove2"><citetitle>hrtfmove2</citetitle></link> and <link linkend="hrtfstat"><citetitle>hrtfstat</citetitle></link>.</simpara>
            </listitem>
            <listitem><simpara>New waveshaping opcodes: <link linkend="powershape"><citetitle>powershape</citetitle></link>,
              <link linkend="polynomial"><citetitle>polynomial</citetitle></link>,
              <link linkend="chebyshevpoly"><citetitle>chebyshevpoly</citetitle></link>,
              <link linkend="pdclip"><citetitle>pdclip</citetitle></link>,
              <link linkend="pdhalf"><citetitle>pdhalf</citetitle></link>,
              <link linkend="pdhalfy"><citetitle>pdhalfy</citetitle></link>, and
              <link linkend="syncphasor"><citetitle>syncphasor</citetitle></link></simpara>
            </listitem>
            <listitem><simpara>New jack transport control opcode: <link linkend="jacktransport"><citetitle>jacktransport</citetitle></link></simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          New functionality
          <itemizedlist>
            <listitem>
              <simpara>Added <link linkend="FlagsMinusCsdLineNums"><citetitle>--csd-line-nums=</citetitle></link> command line option to select mode for error line reporting.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                New "no-carry" operator (<link linkend="ScoreCarry"><citetitle>!</citetitle></link> ) for score language that prevents implicit carrying of p-fields in i-statements.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                Added <link linkend="FlagsMinusSyntaxCheckOnly"><citetitle>--syntax-check-only</citetitle></link> commandline flag (exclusive with <link linkend="FlagsMinusUpperI"><citetitle>--i-only</citetitle></link>)
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <emphasis>&lt;CsLicence&gt;</emphasis> tag for <link linkend="CommandUnifileDescription"><citetitle>CSDs</citetitle></link>. <emphasis>&lt;CsLicense&gt;</emphasis> is accepted as an alternative to <emphasis>&lt;CsLicence&gt;</emphasis>.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>Bug fixes and improvements:
          <itemizedlist>
            <listitem>
              <simpara>
              Changed order of outputs for <link linkend="hilbert"><citetitle>hilbert</citetitle></link>. This change breaks compatibility with previous versions, but fixes the opcode and now works as documented.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
              Messages about loading opcode plugins modified so can be suppressed with message level flag.
              </simpara>
            </listitem>
            <listitem>
              <simpara>Major changes to score error reporting; now accurately reports the line numbers for the chain of inputs for most errors.</simpara>
            </listitem>
            <listitem>
              <simpara>Corrected <link linkend="pan2"><citetitle>pan2</citetitle></link> so it agrees with documentation.</simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="CommandUnifileDescription"><citetitle>&lt;CsVersion&gt;</citetitle></link> tag works again according to the manual.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Fixed the { and } score looping statements. Added missing documentation for them and ~, &amp;, |, and # operators in score expressions.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="hilbert"><citetitle>hilbert</citetitle></link> had its outputs reversed, now correct. Manual example updated.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
      <listitem>
        <para>
          Internal Changes:
          <itemizedlist>
            <listitem>
              <simpara>Change to gettext localisation; French and Columbian-Spanish translations available.</simpara>
            </listitem>
            <listitem>
              <simpara>
                Internal changes to <link linkend="partikkel"><citetitle>partikkel</citetitle></link>, interpolation of waveform read and windowing, allowing more precise pitch synchronous granular synthesis. Updated examples for <link linkend="partikkel"><citetitle>partikkel</citetitle></link>.
              </simpara>
            </listitem>
            <listitem>
              <simpara>
                <link linkend="pvscale"><citetitle>pvscale</citetitle></link>: Improved algorithm for SDFT case so no ampltitude variation.
              </simpara>
            </listitem>
          </itemizedlist>
        </para>
      </listitem>
    </itemizedlist>
  </para>
  <bridgehead>New in Version 5.07 (October 2007)</bridgehead>
    <para>
      <itemizedlist>
        <listitem>
          <para>New opcodes:
            <itemizedlist>
              <listitem>
                <simpara><link linkend="pan2"><citetitle>pan2</citetitle></link>: a stereo panning opcode</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="cpsmidinn"><citetitle>cpsmidinn</citetitle></link>, <link linkend="pchmidinn"><citetitle>pchmidinn</citetitle></link>, <link linkend="octmidinn"><citetitle>octmidinn</citetitle></link>: converters for MIDI note numbers</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="fluidSetInterpMethod"><citetitle>fluidSetInterpMethod</citetitle></link>: interpolation in fluid sound fonts</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="sflooper"><citetitle>sflooper</citetitle></link>: a soundfont version of <link linkend="flooper2"><citetitle>flooper2</citetitle></link></simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="pvsbuffer"><citetitle>pvsbuffer</citetitle></link> and <link linkend="pvsbufread"><citetitle>pvsbufread</citetitle></link>: buffering/reading of fsigs for delays/timescale changes.</simpara>
              </listitem>
            </itemizedlist>
          </para>
        </listitem>
        <listitem>
          <para>
            New functionality
            <itemizedlist>
              <listitem>
                <para>SDFT - the Sliding Discrete Fourier Transform -- added seamlessly to <link linkend="pvsanal"><citetitle>pvsanal</citetitle></link>, etc opcodes if the overlap is less than the ksmps or less than 10. Some pvsXXX opcodes extended to take a-rate parameters when sliding.
                </para>
              </listitem>
              <listitem>
                <para>New feature (<link linkend="FlagsCatMinusUpperO"><citetitle>-O null</citetitle></link> / <link linkend="FlagsCatMinusUpperO"><citetitle>--logfile=null</citetitle></link>) that disables all messages and printing to the console.
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </listitem>
        <listitem>
          <para>Bug fixes and improvements:
            <itemizedlist>
              <listitem>
                <simpara><link linkend="partikkel"><citetitle>partikkel</citetitle></link> -- particle synthesis had an inadvertent bug, now fixed.</simpara>
              </listitem>
              <listitem>
                <simpara>Closing of MIDI input on Windows(MM) failed; now fixed</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="fluidEngine"><citetitle>fluidEngine</citetitle></link> opcode now takes optional number of channels (range 16-256, default to 256) and polyphony (range 16-4096, default to 4096) to use.</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="UtilityAtsa"><citetitle>atsa</citetitle></link> utility safer when given silence.</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="ATSaddnz"><citetitle>ATSaddnz</citetitle></link>: improved checking.</simpara>
              </listitem>
              <listitem>
                <simpara>Ambisonics (<link linkend="bformdec"><citetitle>bformdec</citetitle></link>, <link linkend="bformenc"><citetitle>bformenc</citetitle></link>) has more options for controlled opposites.</simpara>
              </listitem>
              <listitem>
                <simpara>Bug in <link linkend="turnoff2"><citetitle>turnoff2</citetitle></link> fixed.</simpara>
              </listitem>
              <listitem>
                <simpara><link linkend="het_export"><citetitle>het_export</citetitle></link>: invalid check caused export to fail.</simpara>
              </listitem>
            </itemizedlist>
          </para>
        </listitem>
        <listitem>
          <para>
            Internal Changes:
            <itemizedlist>
              <listitem>
                <simpara>Improved Windows installer.</simpara>
              </listitem>
              <listitem>
                <simpara>CsoundVST replaced by CsoundAC, that does not depend on the VST SDK headers.</simpara>
              </listitem>
              <listitem>
                <simpara>Less messages in Windows(MM) startup.</simpara>
              </listitem>
              <listitem>
                <simpara>P argument type added (k-rate defaults to 1) for opcode in and out types.</simpara>
              </listitem>
            </itemizedlist>
          </para>
        </listitem>
      </itemizedlist>
    </para>
  <bridgehead>New in Version 5.06 (June 2007)</bridgehead>
  <para>
    <itemizedlist>
      <listitem>
        <para>New granular opcodes:
          <link linkend="partikkel"><citetitle>partikkel</citetitle></link>,
          <link linkend="partikkelsync"><citetitle>partikkelsync</citetitle></link> and
          <link linkend="diskgrain"><citetitle>diskgrain</citetitle></link>.
        </para>
      </listitem>
      <listitem>
        <para>New opcode for event dispatch:
          <link linkend="scoreline"><citetitle>scoreline</citetitle></link>.
        </para>
      </listitem>
      <listitem>
        <para>
          Many new opcodes from Gabriel Maldonado's CsoundAV:
          <link linkend="hvs1"><citetitle>hvs1</citetitle></link>,
          <link linkend="hvs2"><citetitle>hvs2</citetitle></link>,
          <link linkend="hvs3"><citetitle>hvs3</citetitle></link>,
          <link linkend="vphaseseg"><citetitle>vphaseseg</citetitle></link>,
          <link linkend="inrg"><citetitle>inrg</citetitle></link>,
          <link linkend="outrg"><citetitle>outrg</citetitle></link>,
          <link linkend="lposcila"><citetitle>lposcila</citetitle></link>,
          <link linkend="lposcilsa"><citetitle>lposcilsa</citetitle></link>,
          <link linkend="lposcilsa2"><citetitle>lposcilsa2</citetitle></link>,
          <link linkend="tabmorph"><citetitle>tabmorph</citetitle></link>,
          <link linkend="tabmorpha"><citetitle>tabmorpha</citetitle></link>,
          <link linkend="tabmorphi"><citetitle>tabmorphi</citetitle></link>,
          <link linkend="tabmorphak"><citetitle>tabmorphak</citetitle></link>,
          <link linkend="trandom"><citetitle>trandom</citetitle></link>,
          <link linkend="vtable1k"><citetitle>vtable1k</citetitle></link>,
          <link linkend="slider8table"><citetitle>slider8table</citetitle></link>,
          <link linkend="slider16table"><citetitle>slider16table</citetitle></link>,
          <link linkend="slider32table"><citetitle>slider32table</citetitle></link>,
          <link linkend="slider64table"><citetitle>slider64table</citetitle></link>,
          <link linkend="slider8tablef"><citetitle>slider8tablef</citetitle></link>,
          <link linkend="slider16tablef"><citetitle>slider16tablef</citetitle></link>,
          <link linkend="slider32tablef"><citetitle>slider32tablef</citetitle></link>,
          <link linkend="slider64tablef"><citetitle>slider64tablef</citetitle></link>,
          <link linkend="sliderKawai"><citetitle>sliderKawai</citetitle></link>
          and the a-rate version of
          <link linkend="ctrl7"><citetitle>ctrl7</citetitle></link>.
        </para>
      </listitem>
      <listitem>
        <para>
          Also from CsoundAV, many new FLTK widget opcodes:
          <link linkend="FLkeyIn"><citetitle>FLkeyIn</citetitle></link>,
          <link linkend="FLslidBnk2"><citetitle>FLslidBnk2</citetitle></link>,
          <link linkend="FLvslidBnk"><citetitle>FLvslidBnk</citetitle></link>,
          <link linkend="FLvslidBnk2"><citetitle>FLvslidBnk2</citetitle></link>,
          <link linkend="FLmouse"><citetitle>FLmouse</citetitle></link>,
          <link linkend="FLxyin"><citetitle>FLxyin</citetitle></link>,
          <link linkend="FLhvsBox"><citetitle>FLhvsBox</citetitle></link>,
          <link linkend="FLslidBnkSet"><citetitle>FLslidBnkSet</citetitle></link>,
          <link linkend="FLslidBnkSetk"><citetitle>FLslidBnkSetk</citetitle></link>,
          <link linkend="FLslidBnk2Set"><citetitle>FLslidBnk2Set</citetitle></link>,
          <link linkend="FLslidBnk2Setk"><citetitle>FLslidBnk2Setk</citetitle></link>,
          <link linkend="FLslidBnkGetHandle"><citetitle>FLslidBnkGetHandle</citetitle></link>,
        </para>
      </listitem>
      <listitem>
        <para>
          New pvs opcodes:
          <link linkend="pvsdiskin"><citetitle>pvsdiskin</citetitle></link>,
          <link linkend="pvsmorph"><citetitle>pvsmorph</citetitle></link>,
        </para>
      </listitem>
      <listitem>
        <para><link linkend="eqfil"><citetitle>eqfil</citetitle></link>
        </para>
      </listitem>
      <listitem>
        <para>New command line options (<link linkend="FlagsCatMinusLowerMW"><citetitle>--m-warnings</citetitle></link>)to control messages
        </para>
      </listitem>
      <listitem>
        <para>
          csladspa: a CSD to LADSPA plugin kit.
        </para>
      </listitem>
      <listitem>
        <para>
          And many bug fixes including (but not limited to): fixed k-rate version of <link linkend="system"><citetitle>system</citetitle></link>; fixed scaling problems of <link linkend="vrandh"><citetitle>vrandh</citetitle></link> and <link linkend="vrandi"><citetitle>vrandi</citetitle></link>; fixed ocasional failure of <link linkend="turnoff"><citetitle>turnoff</citetitle></link>; fixed  <link linkend="tempest"><citetitle></citetitle></link> OS X bug; fixed <link linkend="ATScross"><citetitle>ATScross</citetitle></link> and fixed <link linkend="modulus"><citetitle>mod</citetitle></link>.
        </para>
        <para>Csound5GUI now works properly on all platforms and csoundapi~ (pd object) has been updated.
        </para>
      </listitem>
    </itemizedlist>
  </para>
</section>
