2025-05-09
digital music making tools
- analog hardware synthesizers (keyboards, modular racks, sequencers)
- daw software and sequencers for arranging instruments, recordings, and effects (e.g. ardour, cubase)
- modular environments and patchers (e.g. reaktor, max, puredata)
- plugin formats for instruments and effects (lv2, vst)
- midi and control-surface integration for hardware–software interplay
- scripting or programming languages to generate/process sample arrays and export audio files
various notes
- harmonic: a waveform with frequency equal to a positive integer multiple of its fundamental (wikipedia)
- time series: data points indexed or graphed in time order, often at equal intervals (wikipedia)
- clipping: limiting a signal’s amplitude to a defined maximum
- sound program as potential: code defines a space of sound events, with literal arguments acting as seeds for generation
- harmonicity–noise continuum: sounds range from pure harmonic spectra to full noise
- pattern complexity: emerges from layered, time-based mutations and transformations rather than mere variety of subsequences
autocorrelation vs absolute differences
- autocorrelation gives a degree of difference with large local difference being pronounced to differentiate it from many small differences.
- correlation is -1 to 1
- correlation only tests linear dependence. (1 2 3) and (4 5 6) are 1
- mean absolute difference goes to infinity
example framework choices for music creation
principles
avoid post-processing
- modification of float values can be lossy
- control as much as possible by initial arguments
- prefer additive to subtractive processes
- times and offsets are specified in number of samples in cases where hertz and seconds do not map exactly to sample counts
- use wavelengths whose extremes fall exactly on samples
- use a high resolution for processing of modulation. ideally sample resolution
- processing is done for multiple channels with one array per channel
- sample format is variable (32 or 64 bit float, ideally more)
- sample rate is variable (low for fast processing). target sample rate is 96000. a sine of 12000 hz could then still be approximated with 8 samples
- tend to give up realtime processing for higher precision and more content. render to file, which is common in 3d modeling software
- when using random number generators, specify random seeds to keep the output repeatable
toolset
- filtered noise generator whose amplitudes and filter values can be controlled by paths. customisable noise generator
- sine generator that keeps a continuous phase when frequency modulated and whose amplitudes and wavelength can be controlled by paths. sine(amp, frq, phs)
- file output with creation of wave files (ideally au, an extremely simple and capable file format)
- random number generator with customisable probabilities
paths
- interpolation between points
- linear and rounded (bezier) interpolation methods
- segment types are linear, bezier, sub-path or constant
sequencer
- for partials and whole songs
- calls functions that write to sample buffers at specified times
- called with a time offset, output buffers and an event list
- sequencer calls can be nested to build composite sounds, patterns and riffs
- processing can be done in parallel (top-level use) or serial (nested use)
event
- have the properties (state start end function)
- multiple events can be grouped into one event
- output can be post-processed
- output can be cached
filters
- windowed-sinc band-pass that optimises to low-pass and high-pass at the edges
- state-variable filter with low/high/band pass output for cheaper filter operation
- all filters must be able to filter a series of sample arrays seamlessly