aboutsummaryrefslogtreecommitdiff

csound-datacore : Data audification/sonification for Csound

Overview

csound-datacore provides a way to read raw data from disk, memory and screen. For the memory and X11 window reading opcodes, only Linux is supported or an OS that supports userspace reading of /proc/.../mem . Thus on platforms that do not support this, only the file reading opcodes are supported.

Requirements

  • Cmake >= 2.8.12
  • Csound with development headers >= 6.14.0
  • Optional: X11 with development libraries

Tested on Linux as of August 2021, Windows as of March 2024.

Installation

Create a build directory at the top of the source tree, execute cmake .., make and optionally make install as root. If the latter is not used/possible then the resulting libcsxtract library can be used with the --opcode-lib flag in Csound. eg:

mkdir build && cd build
cmake ..
make && sudo make install

Cmake should find Csound and X11 using the modules in the cmake/Modules directory and installation should be as simple as above.

Examples

Some examples are provided in the examples directory.

Opcode reference

ipids[] memps

Obtain a list of process IDs readable by the executing user.

  • ipids[] : array of process IDs

Sname mempsname ipid

Get the process command line or name for a given process ID if available.

  • ipid : the process ID

  • Sname : the process command line

isize mempssize ipid [, iskipzero=0]

Get the memory usage of a process, interpreted as a number of audio samples.

  • isize : the size in samples

  • ipid : the process ID

  • iskipzero : if non-zero, skip empty memory locations associated with the process

ifn mem2tab ipid [, iskipzero=0]

Read the memory associated with a process ID into a new function table which can be used by loscil and other such opcodes.

  • ifn : the function table number created

  • ipid : the process ID

  • iskipzero : if non-zero, skip empty memory locations, without this the output may contain a lot of silence depending on the process

aout memson ipid, koffset, kbuffermultiplier [, ibuffersize=441000, iskipzero=0]

Buffered memory reading and direct audio output. The buffer is only refilled when koffset changes.

  • aout : the sonified memory data

  • ipid : the process ID

  • koffset : position to read memory from, normalised to between 0 and 1
  • kbuffermultiplier : buffer read size multiplier between 0 and 1
  • ibuffersize : the size in samples of the buffer to read memory data into
  • iskipzero : if non-zero, skip empty memory locations, without this the output may contain a lot of silence depending on the process

ifn rawreadtable Sfile [, ichannels=1, istart=0, iskip=1]

Read a file from the filesystem to a new f-table, interpreting raw character data as floats according to the orchestra samplerate and bit depth of the build.

  • ifn : the newly created f-table containing the data read

  • Sfile : path of the file to read

  • ichannels : how many channels to interpret the raw data as (1 or 2)
  • istart : offset the initial read by this number of bytes
  • iskip : how many bytes to increment each read step by

aL [, aR] rawread Sfile [, iloop=0]

Read a file from the filesystem, interpreting raw character data as floats according to the orchestra samplerate and bit depth of the build.

  • aL, aR : left and right channels. If only one output is specified then the file is read as mono data, otherwise stereo.

  • Sfile : path of the file to read

  • iloop : whether to loop the reading of the file when the end is reached; 1 = loop, 0 = no loop

aout winson iwindowid

Read the contents of a X11 window and interpret pixel data as floats, outputting audio correpsonding to the orchestra samplerate and bit depth. Currently not fully implemented and iwindowid will default to the DefaultRootWindow response from X11.

  • aout : the resulting audio

  • iwindowid : the X11 window ID to inspect