You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

290 lines
14KB

  1. The Synthesis ToolKit in C++ (STK)
  2. By Perry R. Cook and Gary P. Scavone, 1995--2017.
  3. v.4.6.0 (31 August 2017)
  4. - see github site for complete details
  5. - various build system updates
  6. - fixes in FileWvIn / FileLoop for normalisation and scaling, as well as file opening
  7. - bug fix for MAT-files in FileWrite
  8. - bug fix in MidiFileIn.cpp for timing and time-code formats
  9. - updated versions of RtAudio and RtMidi
  10. v4.5.1 (22 February 2017)
  11. - fix for FileWvIn / FileLoop classes to avoid keeping files open if not necessary
  12. - miscellaneous bug fixes, documented on GitHub site (github.com/thestk/stk)
  13. - update to play.cpp example to play mono files as stereo
  14. - bug fix in DelayL::setDelay() function
  15. - miscellanous build bug fixes
  16. v4.5.0: (26 April 2014)
  17. - updated versions of RtAudio and RtMidi, with associated renaming of RtError class to either RtAudioError or RtMidiError and addition of WASAPI support in Windows
  18. - added support in FileRead for little-endian AIFC file format
  19. - new iOS project files (thanks to Ariel Elkin)
  20. - bug fix in FreeVerb that could cause crackling for stereo input
  21. - various bug fixes and updates to minimize compiler warnings
  22. - ADSR fix for decay/release time calculations
  23. - various updates to build system
  24. v4.4.4: (24 August 2012)
  25. - new FreeVerb class (thanks to Greg Burlet)
  26. - new Guitar class
  27. - new electric guitar project
  28. - cleaned / revised Shakers class
  29. - updated versions of RtAudio and RtMidi
  30. - bug fix in LentPitShift
  31. - bug fix in Echo constructor
  32. - bug fix in FileWvIn (file size when chunking)
  33. - bug fix in StkFrames copy constructor
  34. v4.4.3: (30 August 2011)
  35. - changed SINT24 to be lower 3 bytes of 32-bit word
  36. - bug fixes to vectorized tick functions in Effects classes
  37. - updated versions of RtAudio and RtMidi
  38. - fix to ADSR bugs
  39. - updates to the internal argument checking and reporting scheme
  40. - updates to Bowed class (thanks to Esteban Maestre!)
  41. - fixes for 24-bit support in FileRead and FileWrite
  42. - added WAVE_FORMAT_EXTENSIBLE support in FileWrite
  43. - added sample rate variable reading and writing for MAT-files in FileRead and FileWrite
  44. v4.4.2: (4 February 2011)
  45. - added various header file includes for newer compilers
  46. - new LentPitShift class (thanks to Francois Germain)
  47. - added "addTo" function to Delay class
  48. - updates to RtAudio and RtMidi
  49. - bug fixes in Voicer class (thanks Richard Dobson!)
  50. - bug fixes in Granulate class
  51. - added Makefile.in to compile library and all projects, as well as clean and distclean all
  52. v4.4.1: (3 June 2010)
  53. - added multi-channel/frame tick() virtual function to WvIn and WvOut abstract base classes (required update to RtWvOut class)
  54. - updated configure script to select g++ compiler by default
  55. - in demo.cpp: removed voicer grouping for messages, fixing polyphony when messages are on the same MIDI/SKINI channel
  56. - updates to RtAudio and RtMidi
  57. v4.4: (30 April 2010)
  58. - all classes embedded in the "stk" namespace (except RtAudio, RtMidi, and RtError)
  59. - class WaveLoop renamed FileLoop
  60. - significant efficiency improvements via code restructuring and inlining
  61. - some class source (.cpp) files deleted as part of inlining (Generator, Filter, Function, WvIn, WvOut, Effect, Instrmnt, BowTable, ReedTable, JetTable, Vector3D)
  62. - updates to RtAudio and RtMidi
  63. - previous "tickFrame()" functions renamed "tick" for more consistent API
  64. - more consistent and scalable approach to multichannel data and computations
  65. - multichannel support added to Granulate class
  66. - Filter class made abstract. New Iir and Fir classes made for non-order-specific filtering.
  67. - new TapDelay class
  68. - SubNoise class deleted (same as sub-sampled "ticking" of Noise class)
  69. v4.3.1: (7 December 2007)
  70. - further headerless file support in FileRead
  71. - bug fix in RtWvOut.cpp
  72. - added configure support for MinGW
  73. - updates to RtAudio and RtMidi for MinGW
  74. - changes to channel assignment in demo.cpp
  75. v4.3.0: (13 August 2007)
  76. - an official MIT-like license
  77. - new functionality to automatically update class data when the STK sample rate changes (partly implemented)
  78. - updates for new RtAudio version 4.0
  79. - removed RtDuplex class, users should use RtAudio directly with a callback function
  80. - bug fix in interpolate() function in Stk.h for non-interleaved data
  81. - fixes / improvements to the Granulate class
  82. - fix in Whistle when doing animation
  83. - fixes in BlitSquare for frequency, harmonics, and dc offset
  84. - updates to Makefiles for non-realtime compile
  85. - fix in demo.cpp for voice channel assignment
  86. - updated versions of RtMidi and RtAudio
  87. - updated ASIO files for MinGW compiler
  88. - new FAQ in documentation
  89. - MAT-file bug fix in FileRead class
  90. v4.2.1: (14 October 2005)
  91. - greatly expanded StkFrames functionality (including interpolation and indexing by channel/frame)
  92. - new Granulate granular synthesis class
  93. - new Blit, BlitSaw, and BlitSquare bandlimited waveform classes (thanks to Robin Davies!)
  94. - removed Table class ... all functionality (including interpolation) now in StkFrames and FileRead classes
  95. - revised Socket class (now abstract) and added TcpServer, TcpClient, and UdpSocket subclasses
  96. - added Stk::showWarnings() and Stk::printErrors() functions to dis/enable warning and error printouts
  97. - extracted file I/O functionality to new FileRead and FileWrite classes
  98. - revised WvIn / WvOut class structure (WvIn / WvOut now abstract and file I/O functionality in new FileWvIn / FileWvOut subclasses)
  99. - new SineWave class which calculates its own static table of variable length (no rawwave dependency)
  100. - new sinewave.raw file of length 1024 samples (used to be 256)
  101. - TcpWvIn and TcpWvOut renamed InetWvIn and InetWvOut, with added support for UDP sockets
  102. - fixed bug in WvOut tickFrame( const StkFrames &frames ) function
  103. - fixed bug in demo.cpp when writing output soundfiles without realtime output
  104. - added "binary" open flag to MidiFileIn class for Windows
  105. - fixed oversized MAT-file header in WvOut.cpp
  106. - fixed case statement bug in MidiFileIn.cpp for sysex
  107. - added missing getDelay() function to DelayA.cpp
  108. - fixed modDepth omission in Chorus.cpp
  109. - fixed DC blocker initialization bug in Flute.cpp
  110. - changed Filter class behavior so no default clearing of state when changing coefficients
  111. - bug fixes to RtAudio, especially for Windows DirectSound and ASIO (thanks to Robin Davies)
  112. - bug fixes to RtMidi, especially for Linux (thanks to Pedro Pedro Lopez-Cabanillas)
  113. v4.2.0: (4 October 2004)
  114. - simultaneous multiple audio APIs supported at compile time
  115. - fixed hidden overloaded virtual functions
  116. - new Asymp exponential envelope class
  117. - various changes to better conform to standard C++ programming practices
  118. - MY_FLOAT type converted to StkFloat and changed throughout (use treesed utility to search/replace in old files)
  119. - most example programs rewritten to use an audio callback paradigm (which works better in OS-X)
  120. - new StkFrames class for vectorized multichannel data and associated new tick() functions making use of StkFrames
  121. - new RtMidi class with MIDI output capabilities (API changes)
  122. - new MidiFileIn class for reading MIDI files
  123. - revised Filter classes to use std::vectors for coefficients (API changes)
  124. - revised Messager class (now queues messages for retrieval) (API changes)
  125. - new abstract parent Effect class for various effects
  126. - added setT60 function to all reverbs
  127. - new abstract parent Generator class for various signal sources
  128. - new abstract parent Function class for tables and various non-linear functions
  129. - Skini class completely rewritten (simplified) using the C++ STL (API changes)
  130. - WvOut classes now clip to -1.0 to +1.0 and report out of range
  131. - new Mutex class
  132. - turned Nagle algorithm off by default in Socket class
  133. - error reporting standardized in all classes
  134. v4.1.3: (22 March 2004)
  135. - bug fix in RtAudio for Windows DirectSound output only support
  136. v4.1.2: (15 March 2004)
  137. - added Linux JACK support to RtAudio
  138. - added optional doNormalize argument to WvIn to allow specification of data normalization or not
  139. - added volume control to demo program and various tcl scripts
  140. - added support for dynamic rawwavePath() setting
  141. - WaveLoop bug fix
  142. - fixed bug in ADSR::setReleaseTime() method
  143. - fixed missing initialization of apInput in non-default constructor of DelayA class
  144. - added time seeding of random number generator to Noise constructor
  145. - update to the contentsAt() method of Delay class
  146. - WAV file fixes (8-bit) in WvIn and WvOut classes
  147. - configure changes
  148. - updated <iostream> include statements and appended "std::" as necessary throughout for compatibility with gcc 3
  149. v4.1.1: (24 October 2002)
  150. - bug fix in RtAudio for Macintosh OS X and Windows ASIO duplex operation
  151. - windows ASIO fix in Stk.h
  152. - documentation updates
  153. - expanded tutorial
  154. - fixed RtDuplex omission in src Makefile
  155. v4.1: (8 October 2002)
  156. - Macintosh OS X support added
  157. - new Whistle class
  158. - added Voicer, SingWave, and VoicForm classes
  159. - improvements/fixes to the banded waveguide instruments
  160. - demo program now uses Voicer, allowing polyphony
  161. - demo tcl/tk scripts changed to use SKINI PitchChange instead of PitchBend
  162. - demo program response to PitchBend modified to octave up/down
  163. - several RtAudio fixes and improvements (OS X and Windows ASIO support added)
  164. - added nextOut() method to Delay classes
  165. - documentation fixes for Reverb classes
  166. - RAWWAVE_PATH changed to include the "rawwave" directory
  167. - "configure" support added for unix systems
  168. - multivoice flag (-n NUMBER) added as command line option to demo program
  169. - sample rate flag added as command line option to all example programs
  170. - socket port number added as command line option to all example programs
  171. v4.0: (April 2002)
  172. - new documentation and tutorial
  173. - several new instruments, including Saxofony, BlowBotl, and StifKarp
  174. - new Stk base class, replacing Object class
  175. - new Filter class structure and methods
  176. - extensive modifications to WvIn and WvOut class structures and methods
  177. - looping functionality moved to WaveLoop (subclass of WvIn)
  178. - automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses
  179. - new file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses
  180. - some simplifications of Messager class (was Controller)
  181. - new independent RtAudio class
  182. - extensive revisions in code and a significant number of API changes
  183. v3.2: (13 November 2000)
  184. - new control handling class (Controller)
  185. - added AIFF file input/output support
  186. - stklib.a Makefile in src directory
  187. - added C++ error handling capabilities
  188. - added input/output internet streaming support (StrmWvIn/StrmWvOut)
  189. - added native ALSA support for linux
  190. - added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid
  191. - WvIn classes rewritten to support very big files (incremental load from disk)
  192. - changed WvIn/WvOut classes to work with sample frame buffers
  193. - fixed looping and negative rate calculations in WvIn classes
  194. - fixed interpolation bug in RtWvIn
  195. - windoze RtAudio code rewritten (thanks Dave!)
  196. - simplified byte-swapping functions (in-place swapping)
  197. - new FIR filter class (thanks Julius!)
  198. - "stereo-ized" RagaMatic
  199. - probably a bunch more fixes that I've long since forgotten about
  200. v3.1: (13 March 2000)
  201. - new RagaMatic project!!!
  202. - added "microphone position" to Mandolin in STKdemo
  203. - fixed MIDI system message exclusion under Irix
  204. - added a few bitmaps for the Shaker instruments
  205. - made destructors virtual for Reverb.h, WvIn.h and Simple.h
  206. - fixed bug setting delay length in DLineA when value too big
  207. - fixed bug in WinMM realtime code (RTSoundIO)
  208. - added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup)
  209. - switched to pthread API on SGI platforms
  210. - added some defines to Object.h for random number generation, FPU overflow checking, etc...
  211. - a lot of minor changes, some bug fixes ... can't remember all of them
  212. v3.0: (10 October 1999)
  213. - new #define flags for OS and realtime dependencies (this will probably cause problems for most everyone, but it was necessary to make future ports easier)
  214. - fixed Linux MIDI input bug
  215. - fixed MIDI status masking problem in Windows
  216. - OS type defines now in Makefile
  217. - new RAWWAVE_PATH define in Object.h
  218. - syntmono pulled out to separate directory and cleaned up
  219. - socketing capabilities under Unix, as well as Windoze
  220. - multiple simultaneous socket client connections to STK servers now possible
  221. - MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control)
  222. - defined INT16 and INT32 types and fixed various WvIn and WvOut classes
  223. - updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab
  224. - new demo GUI
  225. - minor fixes to FM behavior
  226. - added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze)
  227. - fixed bugs in WavWvOut and MatWvOut header specifications
  228. - added RawWvOut class
  229. - new WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses
  230. - removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn)
  231. - multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to StkFloat) and the methods mtick() and mlastOutput()
  232. - now writing to primary buffer under Windoze when allowed by hardware
  233. - cleaned up Object.h a bit
  234. - pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code)
  235. v2.02: (16 November 1998)
  236. - created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave).
  237. - modified DrumSynt to correctly handle sample rates different than 22050 Hz.
  238. - modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer.
  239. - fixed DirectSound playback bug in Win distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE.
  240. - fixed bug in MD2SKINI which prevented some NoteOff statements from being output.
  241. v2.01: (27 July 1998)
  242. - Corrected extraneous ^M line return characters that were incompatible with SGI.
  243. v2.0: (20 July 1998)
  244. - The first true release by Gary, with unified capabilities across SGI, Linux, and Win platforms. See WWW pages (http://www-ccrma.stanford.edu/CCRMA/Software/STK/) for more info.
  245. v1.1:
  246. - More linux support and other changes that happened so long ago that I can't remember anymore. Never officially released.
  247. v1.0:
  248. - Linux support added with the help of Tim Stilson. Never officially released.
  249. v0.8:
  250. - One of (if not THE) original distributions for SGI, NeXTStep, and basic Win support. I think this came out in 1996.