Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
concept [2022/03/19 05:06] – renick | concept [2023/01/07 00:00] (current) – renick | ||
---|---|---|---|
Line 12: | Line 12: | ||
By starting and stopping Players, a performance can be realized. | By starting and stopping Players, a performance can be realized. | ||
+ | |||
+ | --- | ||
+ | |||
+ | One of the services that it provides is a sequencer with regular timing. If you use setInterval alone, you will eventually accumulate a time lag, which means that your rhythm will be slow and fall behind what you expect, or that two different processes would fall out of time. | ||
+ | |||
+ | The exact timing is controlled by an IOI function, which is one of two functions called by a Player. Players are a metaphor for a repeating set of function calls. | ||
+ | |||
+ | An IOI function produces a time interval that is used to space out events. It produces an interval which is the space between events. The simplest IOI function could return a single number, such as 1, which would indicate an event on each beat. | ||
+ | |||
+ | Ableton sequences by putting blocks on a grid. Konduktiva has a grid aligned to a BPM, except instead of placing blocks on the grid, you are placing fu | ||
+ | |||
+ | In a DAW like Ableton, you sequence music by placing blocks on a grid which is defined by BPM and time signature (4 beats per bar). In Konduktiva, there doesn' | ||
+ | |||
+ | If you think about the piano roll in a DAW, you paint on notes. In Konduktiva, we write a function to determine the position of the notes. As for which notes they are, in a DAW the vertical position is painted as well. In Konduktiva, we write a function to determine that. | ||
+ | |||
+ | Think of an orchestra. You might have one player playing a violin and another playing a flute. In Konduktiva, you might represent each of these with a Player, each with a different function for rhythm and a different function for what sound to make. | ||
+ | |||
+ | In a piano roll, you press play, and each of the painted notes is sounded according to its position on the roll, and when all of the notes have been played, the DAW will produce silence (unless you have set a loop point). In Konduktiva, you press play for an individual Player (or for all of the Players together, or a subset, depending on your design), and the default behavior is to repeat a Player' | ||
+ | |||
+ | In Konduktiva, by editing the Players on the fly, you can perform complex musical sequences, like a conductor conducting players in an ensemble. | ||
+ | |||
+ | Because we have the power of a programming language, we can produce sequences which are much more complex than those that you would draw on a piano roll. | ||
+ | |||
+ | ===== Players and the two important functions they reference: IOI functions and action functions ===== | ||
+ | |||
+ | Each Player references two functions: an IOI (interonset interval) function which controls timing of events, and an action function which determines what to do according to that timing. | ||
+ | |||
+ | These functions are separate from the Player itself so that different Players can use the same IOI or action functions. Imagine a violin Player and a flute Player, each having a different action function corresponding to those two sounds, yet both using the same IOI function, resulting in them playing the same rhythm. Alternatively, | ||
+ | |||
+ | ==== IOI functions ==== | ||
+ | |||
+ | IOI stands for interonset interval: the interval between the onset of events, or how much time passes between the triggering of events. This is like the space between notes on a piano roll, but more specifically the distance between the start of each note. | ||
+ | |||
+ | With an IOI function, we specify the gaps between notes in order to define our rhythm. An IOI function that produces the looping sequence of numbers 2, 3, 2, a rhythm of 2 beats, 3 beats, and then 2 beats results. | ||
+ | |||
+ | |X-X--X--|X-X--X--|X-X--X--|X-X--X-- (... indefinitely) | ||
+ | |||
+ | An IOI function produces rhythm. Rhythm implies at least two notes. By repeating an IOI function, a rhythm emerges. | ||
+ | |||
+ | It's important to remember that this doesn' | ||
+ | |||
+ | You might want to think of it as defining the negative space between notes. | ||
+ | |||
+ | === action functions === | ||
+ | |||
+ | In Konduktiva, the position of the notes is controlled by an IOI function. What happens at those notes is determined by the action function. | ||
+ | |||
+ | In Konduktiva instead of a block, you | ||
+ | |||
+ | Musical Environment | ||
+ | |||
+ | You populate the MusicalEnvironment with Players, IOI functions, and action functions. The tempo exists as a property of this MusicalEnvironment. | ||
+ | |||
+ | |||
+ | QuantizedMap |