full-konduktiva-documentation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
full-konduktiva-documentation [2025/08/01 00:30] – created steve.wangfull-konduktiva-documentation [2025/08/01 20:30] (current) steve.wang
Line 4: Line 4:
  
 [Konduktiva website](http://konduktiva.org/doku.php?id=start) [Konduktiva website](http://konduktiva.org/doku.php?id=start)
 +[Konduktiva Github](https://github.com/renickbell/konduktiva)
 +[Konduktiva NPM](https://www.npmjs.com/package/konduktiva)
 [Renick Bell's Website](https://renickbell.net/doku.php?id=start) [Renick Bell's Website](https://renickbell.net/doku.php?id=start)
  
Line 43: Line 45:
 A [MusicalEnvironment](#MusicalEnvironment) is used to store all of the necessary data. A [MusicalEnvironment](#MusicalEnvironment) is used to store all of the necessary data.
  
-[Players](#Players) represent processes that can be started or stopped using the metaphor of a player in a musical ensemble like a band or orchestra.+[Players](#Players) are processes that can be started or stopped. Using the metaphor of a player in a musical ensemble like a band or orchestra.
  
 The Players execute action functions which do things like play samples, trigger MIDI events, or even change the state of the system. They do so according to timing determined by IOI functions. IOI means interonset interval, which is the time between events. This timing is what determines the rhythm of a Player. The Players execute action functions which do things like play samples, trigger MIDI events, or even change the state of the system. They do so according to timing determined by IOI functions. IOI means interonset interval, which is the time between events. This timing is what determines the rhythm of a Player.
  
-Players can be used for a single or multiple outputs. Anything that can be manipulated with a JavaScript function call can be an output. Actions for the SuperDirt sampler and MIDI are included in the distribution.+Players can be used for a single or multiple outputs. Anything that can be manipulated with a JavaScript function call can be an output. Actions for the SuperDirt sampler and MIDI are included in this distribution.
  
 By starting and stopping Players, a performance can be realized. By starting and stopping Players, a performance can be realized.
Line 53: Line 55:
 ---- ----
  
-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.+One of the features that Konduktiva has 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. 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.+An IOI function produces a time interval that is used to space out 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+Ableton, a digital audio workstation (DAW), sequences events 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 function calls on a grid
  
 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't need to be a bar. 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't need to be a bar.
  
-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.+If you think about the piano roll in a DAW, you paint on notes. In Konduktiva, we write functions to determine the arrays containing 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 an array containing position information.
  
-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.+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 set of rhythms 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's function for rhythm indefinitely until the Player is stopped. 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's function for rhythm indefinitely until the Player is stopped.
Line 78: Line 80:
  
 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, you could have a single violin action function being used by two different Players, each with a different IOI function, resulting in two different rhythms of violin melody. 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, you could have a single violin action function being used by two different Players, each with a different IOI function, resulting in two different rhythms of violin melody.
-IOI functions+ 
 + 
 +### 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. 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.+With an IOI function that reads form an array in the MusicalEnvironment, 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) |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.+An IOI function produces rhythm via reading an array in the MusicalEnvironment. Rhythm implies at least two notes. By repeating an IOI pattern, a rhythm emerges.
  
 It's important to remember that this doesn't necessarily have anything to do with note duration; it's just when the note starts. It's important to remember that this doesn't necessarily have anything to do with note duration; it's just when the note starts.
  
-You might want to think of it as defining the negative space between notes. +One 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.+### action functions
  
-In Konduktiva instead of a blockyou +In Konduktiva, the position of the notes is controlled by an IOI function parsing the arrays stored in the MusicalEnvironment. What happens at those notes is determined by the action function.
- +
-Musical Environment +
- +
-You populate the MusicalEnvironment with Players, IOI functions, and action functions. The tempo exists as a property of this MusicalEnvironment. +
- +
-QuantizedMap+
  
 ## MusicalEnvironment ## MusicalEnvironment
 +
 +In Konduktiva instead of a block, you populate the MusicalEnvironment with Players, IOI functions, and action functions. The tempo exists as a property of this MusicalEnvironment.
  
 This is a class used for storing all of the data that is needed for producing a performance with Konduktiva, including Players, Actions, IOI functions, RhythmMaps, and so on. This is a class used for storing all of the data that is needed for producing a performance with Konduktiva, including Players, Actions, IOI functions, RhythmMaps, and so on.
-You populate the MusicalEnvironment with Players, IOI functions, and action functions. The tempo exists as a property of this MusicalEnvironment. 
  
 ### Constructor ### Constructor
  • full-konduktiva-documentation.1754033421.txt.gz
  • Last modified: 2025/08/01 00:30
  • by steve.wang