Skip to content

Releases: gogins/csound-extended

New release of csound-extended

31 Aug 02:16
8a2c091
Compare
Choose a tag to compare
Pre-release

This release includes the following updates:

  • The csound::Score class is now built by default with support for importing MusicXML files. This does not create any new external dependencies.
  • This release is built against Csound version 6.17.
  • There are many new Csound instrument and effects patches in the csound-extended/silencio/patches directory.
  • There is a new csound-extended/playpen directory, which contains helper files and documentation that speed up composing with Csound in the SciTE text editor, with many custom tools for composing Csound pieces including support for Python, C++, and HTML5 pieces.

New release of csound-extended (refactored)

22 May 19:09
Compare
Choose a tag to compare

In order to simplify use and maintenance, I have refactored my GitHub projects, repositories, build systems, and packages.

All Csound examples and tests for all my repositories have now also been moved into their own repository at https://github.com/gogins/csound-examples. Therefore, the github pages for csound-extended have been moved to csound-examples.

Basically, csound-extended itself now targets only C++ and Python. Other targets have been moved out into their own repositories.

See this GitHub issue for details: #158

New release of csound-extended with WebAssembly build of CsoundAC

12 Jun 13:53
Compare
Choose a tag to compare

The chord space facility in CsoundAC has been very useful to me over the years, but recently I took at look at the "chord space group" facility and discovered many bugs in the underlying chord symmetry code (based on the theory of Callender, Quinn, and Tymoczko).

I have now discovered and, I hope, corrected all major incorrect assumptions and algorithms. I have thoroughly reviewed the predicates and transformations for octave equivalence (O), permutational equivalence (P), transpositional equivalence (T), and inversional equivalence (I). I have rewritten the predicates and transformations for the I, OPT, and OPTI equivalence relations to take into account the cyclical regions of OPT and OPTI fundamental domains. In doing this I have derived the fundamental domains from first principles and implemented the inversion flats in each OPT sector of the cyclical region using linear algebra. I have subjected all of this work has to what I hope are comprehensive unit tests. Please log an issue here for any bugs you find.

An interactive online demonstration of OP, OPT, and OPTI space for trichords, implemented using the CsoundAC Chord class and the WebAssembly build of Csound, can be found here.

The previous ChordSpaceGroup class has been replaced by a new PITV class that uses prime form (P), inversion (I), transposition (T), and octavewise revoicing (V) as subgroups. Prime form equivalence is used in place of the previous OPTI equivalence because prime form abstracts from the cyclical region with its revoicings and is thus orthogonal to octavewise revoicing.

The HarmonyIfs class has been rewritten to use the PITV class.

The JavaScript modules ChordSpace.js and Silencio.js are now deprecated. The mathematical corrections mentioned above have not been made in ChordSpace.js. Please use the WebAssembly build of CsoundAC for new compositions instead of Silencio.js and ChordSpace.js. The same API is available in Python and C++.

The csound-extended build of Csound for WebAssembly has been updated to be more flexible with respect to the browser's audio configuration. Csound and the browser must use ksmps = 128 and sr = 48000, but otherwise the number of input and output channels need not be the same between Csound and the browser. This should mean that any Csound piece running in the browser will render to the default audio output and have access to the default audio input.

All of my examples for Csound, csound-extended, csound-extended-wasm, Csound for Android the app, and my other contributions have been consolidated into my csound-examples repository.

The examples for the nudruz system of algorithmic composition written in Common Lisp, originally created by Drew Krause, remain in this repository and have been slightly updated to make sure they still work.

The Python interface for CsoundAC now specifically targets Python 3.9 in order to be compatible with Rick Taube's musx Python system for algorithmic composition. Musx provides most of the functionality of Common Music in Python. It should now be possible to use CsoundAC (via its Python interface) with musx.

New release of csound-extended with scale facilities, Python 3.7 support, other improvements

21 May 19:32
Compare
Choose a tag to compare

I am pleased to announce a new release of csound-extended with numerous improvements.

csound-extended package 1.4.0

The Python interface for CsoundAC now specifically targets Python 3 rather than Python 2. This has been tested with Python versions 3.6.9 and 3.7.7.

Csound performances can now be stopped and restarted in csound.node, and Csound message printing now works for successive performances.

Some of the examples using csound.node and WebAssembly have been improved.

The csound_loader.js script for loading Csound in the same manner across the csound.node, Android, and WebAssembly platforms has been much improved and is much more reliable.

The ChordSpace module in the CsoundAC library now supports fairly extensive operations on scales and their chords, in the spirit of Roman numeral analysis and "functional harmony," including:

  1. Returning a chord of any size and any whole interval spacing in scale steps for any scale degree (Roman numeral) of any scale.
  2. For a given scale and a given chord, return the scale degree of that chord in that scale, if it belongs to the scale.
  3. Transposing a chord in a given scale by any whole number of scale steps; may be used to implement typical root progressions.
  4. Transposing a given scale to a new tonic by any number of semitones, which can be fractional.
  5. Transposing a given scale to a new tonic on any scale degree.
  6. For a given chord in a given scale, return any other scales to which that chord also belongs; can be used to implement common-chord modulations.
  7. For a given chord in a given scale, return it in the form of a secondary dominant or other secondary function, if that is possible; may be used to implement secondary dominants and other secondary functions.
  8. For a given chord in a given scale and a secondary function, return the relative tonicization of that chord, that is, the scale in which that chord has that secondary function.
  9. Create a new scale with a name and any number of pitches, which may be in any system of temperament and may have any interval structure; all of the above operations will work with such scales.

The CsoundAC VoiceleadingNode class now implements conforming notes produced by children of this node to specific instances of the Chord class, by timed segment. This makes composing algorithmically using chords, neo-Riemannian transformations of chords, and automatic voice-leading much easier and more flexible.

Out of order and incorrect comments in the VoiceleadingNode class have been fixed, leading to corrected Doxygen documentation for this class.

The "live" version of the Csound Reference Manual, using the WebAssembly build of Csound to play most of the examples from the Web browser, has been updated with the latest sources for the manual and my latest WebAssembly build of Csound.

A page of advice on obtaining efficient audio performance on Linux has been added.

Please enter any bug reports on the Issues page, or just email me if that is easier. I'm also open to suggestions.

New release of csound-extended

07 May 01:40
Compare
Choose a tag to compare

This release fixes some outstanding bugs in the csound-extended package.

  1. Csound performances can now be stopped and restarted in csound.node, and Csound message printing now works for successive performances.

  2. Some of the examples using csound.node and WebAssembly have been improved.

  3. The csound_loader.js script for loading Csound in the same manner across the csound.node, Android, and WebAssembly platforms has been much improved and is much more reliable.

  4. The CsoundAC VoiceleadingNode class now implements conforming notes produced by children of this node to specific instances of the Chord class, by timed segment. This makes composing algorithmically using chords, neo-Riemannian transformations of chords, and automatic voice-leading much easier and more flexible.

  5. Out of order and incorrect comments in the VoiceleadingNode class have been fixed, leading to corrected Doxygen documentation for this class.

  6. The Python interface for CsoundAC now specifically targets Python2, for compatibility with the csnd6 module in the csound repository.

  7. The "live" version of the Csound Reference Manual, using the WebAssembly build of Csound to play most of the examples from the Web browser, has been updated with the latest sources for the manual and my latest WebAssembly build of Csound.

  8. A page of advice on obtaining efficient audio performance on Linux has been added.

New release of csound-extended package

17 Apr 20:39
548eae9
Compare
Choose a tag to compare

This release moves the Csound for Android app out of this repository and into its own repository at https://github.com/gogins/csound-android.

There are substantial improvements in the Csound for WebAssembly library and examples:

  1. There is now only one implementation of Csound for WebAssembly, CsoundAudioNode, based on the AudioWorklet design.
  2. The code has been substantially debugged and improved, especially with async/await constructs to enable the proper sequencing of Csound API calls.
  3. The lower half AudioWorkletProcessor class, which actually runs Csound, now sends Csound messages to the upper half CsoundAudioNode and, from there, to an optional user-supplied message callback.
  4. The audio performance of CsoundAudioNode is now what is promised by the AudioWorklet design, and it is significantly more performant and freer of audio glitches than the old ScriptProcessorNode implementation.
  5. The build system for WebAssembly now uses the LLVM back end for the Emscripten toolchain, and has been simplified and made more reliable.

As always, the JavaScript interface to Csound is substantially the same as the C++ interface in csound_threaded.hpp.

This project now documents suggested practices for efficient low-level audio on Linux here.

For the C++ components in csound-extended, the LuaJIT opcodes have been removed from the release and from this project.

Some bugs in the build system that probably made it hard to do a first build have been fixed.

The Lisp node has been removed from CsoundAC, as Embeddable Common Lisp cannot compile the cl-math library used by the nudruz library in csound-extended.

A new Csound mesh reverb opcode, MVerb, written in C++ but based on Csound code by Jon Christopher Nelson, has been added to csound-extended.

New release of csound-extended package

11 Dec 18:20
Compare
Choose a tag to compare

This release updates csound-extended with the following changes and improvements:

  1. New Spatialize2.inc for periphonic Ambisonic spatialization, using the new bformdec2 opcode (alpha).

  2. New Slippery Chicken interface to Csound and nudruz, with examples.

  3. New Haskell interface to Csound, with examples for Kulitta and Jazzkell.

  4. Improved nudruz; added a method to return the duration of a cm:seq object, added map-subobjects to nudruz, changed midi-in to handle lists of tracks.

  5. Improved SciTE user properties file for Csound.

  6. For the Csound for Android app, changed to Ace editor, better sizing of sliders, corrected behavior of button and trackpad widgets.

New release of Csound for Android with improved editor

22 Aug 18:57
Compare
Choose a tag to compare

This release of the Csound for Android app replaces the previous CodeMirror editor with the Ace editor from https://ace.c9.io/. This is to resolve issues with CodeMirror not always saving edits to the code, or losing the correct position of the cursor.

The find and replace menus have been replaced by the Ctrl-F key combination.

There is an editor mode for .csd files and an editor mode for .html files.

The Oboe audio driver has been updated to the current release and seems to run with fewer dropouts.

Fixed crash of FluidSynth opcodes on Android

16 Aug 15:12
Compare
Choose a tag to compare

This release of the Csound for Android app fixes a bug in the FluidSynth opcodes that caused them to crash. The app includes a new example that shows how to use SoundFonts on Android.

The app also now provides 9 pre-configured sliders and control channels.

Buttons now send both 1 for press and 0 for release, and the trackpad sends x and y while the pointer is moving.

The user guide has been updated with hints on issues and workarounds.

New release of the Csound for Android app with more plugin opcodes

20 Jul 22:15
Compare
Choose a tag to compare

This release has been updated to include the following formerly omitted plugin opcodes:

  • beosc
  • buchla
  • emugens
  • exciter
  • framebuffer
  • gft
  • mixer
  • platerev
  • pvsgendy
  • pvsops
  • scugens
  • select
  • stackops

This release also incorporates changes in the native Csound library up to version 6.14 beta.