Tutorial Videos

The following tutorial videos should help get you up and running with SCAMP. Each video is split into two halves: the first half is a basic introduction, and second half goes into more advanced features.

These tutorials assume that you’re a beginner in Python as well as in using the SCAMP library. If you are more experienced with Python, you will probably still find them useful, but may find you want to fast-forward through some of the content.

Playing Notes

This video shows the basics of creating a Session object, adding an instrument, and playing some notes using for and while loops. In the second half of the video, it goes into blocking vs. non-blocking play_note() calls, the extra properties argument, and playing glissandi, along with other continuous playback animations.

Forking Functions

This video describes how to organize blocks of code into functions, and then fork() them so that they run in parallel (a key step in creating multi-part music). The second half of the video goes into the use of function arguments, forking functions that have arguments, and playing multiple copies of the same function simultaneously with different arguments and tempos.

Tempo Changes and Polytempo Music

This video delves into the clock system in SCAMP, discussing how to set the tempo/rate of a Clock, how to create ritardandi and accelerandi with set_tempo_target(), and the difference between time and beat duration units. The second half of the video demonstrates the possibilities for polytempo music in SCAMP, with multiple parts that each have their own separate tempo curves. It also discusses looping tempo targets, mapping tempo to a mathematical function, and the system of tempo inheritance in forked processes.

Generating Music Notation

This video goes into the process of transcribing and generating music notation from a SCAMP script. The first half explains how to transcribe the notes played within a Session to a Performance object, convert that Performance to a Score object, adjust time signatures, note spelling, and articulations, and ultimately render to both LilyPond and MusicXML. The second half goes into the notation of microtonal music, glissandi, and polytempo music, as well as the thorny details of quantization.

Building Tools using Classes

This video goes into the process of building your own compositional tools by defining custom classes.

Connecting SCAMP to SuperCollider

If you’re a SuperCollider user, you can use SCAMP to control SynthDefs, spawning new synths with each play_note call. This video explains how to install the SuperCollider Quark, and connect the two.