Music, Computing, Design API
A Collection of C++ Classes for Audio + Graphics + Interaction Software
Design
Ge Wang
The MCD API consists a number of
(loosely organized) C++ abstractions and classes I have found useful
in building computer music software over the last 10+ years, in
software systems for: ChucK, sndpeek and
rt_lpc,
audio-visual instruments for laptop orchestra and mobile phone
orchestra, and adapted
to design and create mobile music software like Ocarina; it is also used
in teaching audio-visual software design for my courses Music Software Design
(Music 256a / CS 476a at Stanford) and Mobile Music (Music 256b
/ CS 476b at Stanford). It consists of two sets of C++ classes: X-API,
lower-level audio/graphics abstractions, and Y-API, higher-level
abstractions built on X-API (see below). Special thanks to Jieun Oh,
Spencer Salazar, Nick Bryan, and Jorge Herrera for additional
contributions.
X-API (lower-level abstractions)
- x-buffer: a simple (templated)
circular buffer (can be used for audio, messages, objects, etc.)
- x-vector3d:
a 3D vector implementation (also useful for slewing
interpolation)
- x-fun: a few useful utilities functions
(e.g., rand2f)
- x-thread: simple thread + mutex
abstraction
(make sure to define your platform, e.g., __PLATFORM_MACOSX__)
- x-def: some useful definitions, types,
constants
- x-audio: real-time audio wrapper for
RtAudio
- x-gfx:a few useful real-time graphics utilities
(also see x-gfx-osx.h with OSX
specific texture loading)
- x-loadlum and
x-loadrgb: loading
luminance data (from .bw files) and color textures (from .rgb files)
(thanks to David Blythe, SGI)
- x-network: (osx only for now)
http network code
Y-API (higher-level abstractions)
- y-entity: useful base class
for a graphical object, with several usable derived classes
- y-particle: abstractions for
starting particle systems
- y-waveform: entity that draws a
waveform (given real-time audio data)
- y-charting: entities for drawing
basic histograms and line charts
- y-fft: a lightweight FFT (thanks to
CARL distribution)
- y-fluidsynth: a wrapper for
using fluidsynth
to render soundfonts
- y-score-reader: object to read
a MIDI file into a data structure
- y-echo: a simple feedback echo effect
MCD |
CCRMA |
music |
stanford
|