Recently I’ve been revisiting the basics of computer programming, and of course my brain immediately saw connections to modular synthesizers. Early analog computers are closely related to modular synthesizers - no mouse or keyboard, mostly just patch cables, knobs, and switches. So while the subject matter we cover with STEM Modular is on the surface about electricity and sound, we are simultaneously introducing the basic structure of coding. Consider three of the core concepts behind computer programming - variables, functions, and boolean logic.
Warning! - What follows is EXTREMELY simplified!
If you haven’t come across variables, they are a placeholder for information that (you guessed it) varies. In mathematics we usually first come across variables in trigonometry or geometry, where we calculate shapes of different sizes by plugging in for instance different r (radius) values into an equation. In computer code we also use variables widely and to perform many different tasks including the size of shapes.
Without going too deep (and in the interest of simplification) a function is a piece of code that takes a variable and does something with it. For instance, a function could take numbers for width and height and draw a rectangle with those dimensions. Functions can also take a variable and output a certain frequency of sound on your computer speakers (sound familiar?). They are quite literally little modules of code that efficiently make your phone or computer do things.
A Boolean data type is a kind of variable, but rather than a number it has only two values, true or false. A boolean is like an on/off switch in computer code. Some functions use this data to make decisions.
In a modular synthesizer control voltage is the variable, and modules are functions. Modules that are voltage controlled take a control voltage input and do something based on that value (going back to the shapes analogy - the frequency and amplitude of a square wave are actually it's width and height). Some modules (like an envelope) take particular on/off values that we call gates, which are the analog version of a boolean.
So essentially when we are creating a patch we are doing an archaic version of programming.