4.5 Summary

4.5 Summary#

  • A score is the symbolic “language” of music: a sparse, discrete set of timed events. In Pyquist, a pq.Score is a list of pq.Events, each a (time, kwargs) pair, and you decide what the time units and kwargs mean.

  • Simultaneous events are encoded as multiple events sharing a timestamp. The score structure is general enough to describe any timed content, not just sound.

  • Timbre and scores are complementary: a score says when, an instrument says what it sounds like. Rendering sums each event’s sound shifted to its onset: \(x(t) = \sum_i T_{\theta_i}(t - t_i)\), which pq.Score.render computes.

  • Whether simultaneous frequencies are heard as one timbre or as separate notes depends on whether they are harmonics of a common fundamental.

  • An envelope \(\text{Envelope}(t) : \mathbb{R} \to [0, 1]\) is zero outside a finite window. Multiplying a sustained tone by an envelope produces a finite event. Piecewise-linear envelopes are defined by control points.

  • Unit generators are reusable functions that produce or process sound, combined into topologies (directed graphs / nested calls).

  • Because function calls have overhead, synthesis is usually computed block-by-block, balancing the memory cost of ugen-by-ugen against the call overhead of sample-by-sample.