Linux ProAudio

From Training Material
Jump to navigation Jump to search


title
Linux Pro Audio
author
Alexander Patrakov


JACK

  • JACK Audio Connection Kit
  • Connects Pro Audio applications with each other and with sound card
  • Two implementations exist: jackd1 and jackd2

Types of Pro Audio applications

  • Digital audio workstations
  • Loopers
  • Sequencers
  • Synths
  • Effect racks
  • Programming environments
  • Others

This slideshow will be mostly about programming environments

  • CSound
  • Pure Data (Pd)
  • Faust

Audio data types

  • Sampled audio
    • Usually recorded from a microphone, but may be synthesized
    • That's what the consumer gets
  • MIDI
    • Musical Instrument Digital Interface
    • Conveys information about musical notes
      • Notation, pitch, velocity, volume, panning, etc.
      • Also has control messages
  • OSC
    • Open Sound Control
    • Protocol for networking sound synthesizers, computers, and other multimedia devices for purposes such as musical performance or show control
    • Think of it as a next-generation networked MIDI

CSound

  • Created in 1985 by Barry Vercoe
  • A command-line tool
  • Takes two text files as input
    • Orchestra (set of instruments - descriptions how to make sounds)
    • Score (description of what instruments to use, when and how)
    • Those two may be unified into a single CSD file
  • Produces a wave file as an output
  • Can also interface with audio and MIDI hardware

Mechanism

  • Orchestra contains instrument definitions
  • Instrument definitions contain calls to opcodes
  • Opcodes update variables
    • a-, k-, i- variables are available
    • a- = updated at audio rate, k- = at control rate, i- = at initialization only
  • Finally, some of the variables are sent to the instrument output

Available primitives (opcodes) for instruments

  • ~1500 opcodes are built-in
    • Simple math
    • Oscillators
    • Additive, subtractive, FM and other synthesizers
    • Filters
    • Envelope generators
    • Ways to define new opcodes in terms of existing ones
  • User who knows C can also extend CSound with new opcodes

CSound ecosystem

  • CSound itself
  • Editors that make editing instrument definitions and scores easy
  • Journals and user forums
  • Showcases on soundcloud and elsewhere