Both sides previous revision Previous revision Next revision | Previous revision |
action-functions [2024/02/19 16:46] – steve.wang | action-functions [2024/04/24 17:37] (current) – [midiSequencedRhythm/callMusicSynthesizerRhythm:] steve.wang |
---|
**Overview: ** This tutorial will teach you about what actions function do in Konduktiva and how they work. | **Overview: ** This tutorial will teach you about what actions function do in Konduktiva and how they work. |
| |
**Things To Note:** This tutorial assumes you have already installed Konduktiva successfully using the [[https://github.com/renickbell/konduktiva|Konduktiva installation]] instructions and have read through and understood the [[:first_steps|first steps tutorial]]. The tutorial also assumes that you have imported Konduktiva to the //K// variable and assigned any of the example MusicalEnvironments to the //e// variable. | |
| **Things To Note:** This tutorial assumes you have already installed Konduktiva successfully using the [[https://github.com/renickbell/konduktiva|Konduktiva installation]] instructions and have read through and understood the [[:first_steps|first steps tutorial]]. The tutorial also assumes 2 things. One, Konduktiva has been assigned to the //K// variable. Two, user created a Musical Environment using the //setUpMusicalEnvironment// function using //K.defaultConfigurationObject// as the first argument and //'exampleMidiPlayer'// as the third argument then, assigned the output to the //e// variable. |
| <code javascript> |
| const K = require('konduktiva') |
| let e = K.setUpMusicalEnvironment(K.defaultConfigurationObject,4,'exampleMidiPlayer', K.exampleMusicalEnvironmentsExtraConfig) |
| </code> |
| |
An Action Function is the function the player calls when the Konduktiva scheduler tells it that to do something. The action function the player uses can be controlled at the variable //e.players.playerName.action//. It should be a string and the strings refer to a variable which is a function in the //e.actions// object. This analogy might help, players are like an employee working in a company. The action function is the job the employee has to do and the scheduler is the manager telling the employee when to start or stop working. | An Action Function is the function the player calls when the Konduktiva scheduler tells it that to do something. The action function the player uses can be controlled at the variable //e.players.playerName.action//. It should be a string and the strings refer to a variable which is a function in the //e.actions// object. This analogy might help, players are like an employee working in a company. The action function is the job the employee has to do and the scheduler is the manager telling the employee when to start or stop working. |
==== default: ==== | ==== default: ==== |
{{ :default-action-funciton-flowchart.svg |}} | {{ :default-action-funciton-flowchart.svg |}} |
==== midiSequencedRhythm/callMusicSynthesizerRhythm: ==== | |
| |
{{ :midisequencedrhythm-callmusicsynthesizerrhythm--action-function-flowchart.svg |}} | |
==== sendNotesMidiInfo: ===== | ==== sendNotesMidiInfo: ===== |
| |
**Overview: ** This tutorial will teach you how to make your own action function by going through the steps of making a new action function called //testAction//. | **Overview: ** This tutorial will teach you how to make your own action function by going through the steps of making a new action function called //testAction//. |
| |
**Things To Note:** This tutorial assumes you have already installed Konduktiva successfully using the [[https://github.com/renickbell/konduktiva|Konduktiva installation]] instructions and have read through and understood the [[:first_steps|first steps tutorial]]. The tutorial also assumes that you have imported Konduktiva to the //K// variable and assigned any of the example MusicalEnvironments to the //e// variable. The [[http://konduktiva.org/doku.php?id=action-functions|action functions tutorial should]] also be read. | **Things To Note:** This tutorial assumes you have already installed Konduktiva successfully using the [[https://github.com/renickbell/konduktiva|Konduktiva installation]] instructions and have read through and understood the [[:first_steps|first steps tutorial]]. The [[http://konduktiva.org/doku.php?id=action-functions|action functions tutorial should]] also be read. |
| |
Setup: | Setup: |
<code javascript> | <code javascript> |
const K = require('konduktiva') | const K = require('konduktiva') |
let e = K.setUpMusicalEnvironment(1) | let e = K.setUpMusicalEnvironment(K.defaultConfigurationObject,4,'exampleMidiPlayer', K.exampleMusicalEnvironmentsExtraConfig) |
</code> | </code> |
| |
console.log('Hi this is my new action function called testAction.') | console.log('Hi this is my new action function called testAction.') |
console.log('testAction playerName: ', playerName) | console.log('testAction playerName: ', playerName) |
console.log('testAction beat: ', b) | console.log('testAction beat: ', e.currentBeat()) |
} | } |
</code> | </code> |
| |
| Notice we did not use b argument. The b argument is for next onset. To get beat use e.currentBeat(). |
| |
Next we have to make it so the players in the MusicalEnvironment can use it. To do so, we have the add it to the actions object of the MusicalEnvironment: | Next we have to make it so the players in the MusicalEnvironment can use it. To do so, we have the add it to the actions object of the MusicalEnvironment: |
| |
<code javascript> | <code javascript> |
function sendMidiData(){ | function sendRandomMidiNote(){ |
K.checkIfUseVerboseLogging('Playing random note to midi output 0') | K.checkIfUseVerboseLogging('Playing random note to midi output 0') |
let noteToPlay = K.randomRange(0, 127) | let noteToPlay = K.randomRange(0, 127) |
}, 1000) | }, 1000) |
} | } |
e.actions.sendMidiData = sendMidiData | e.actions.sendRandomMidiNote = sendRandomMidiNote |
e.players.exampleMidiPlayer1.action = 'sendMidiData' | e.players.exampleMidiPlayer1.action = 'sendRandomMidiNote' |
e.play('exampleMidiPlayer1') | e.play('exampleMidiPlayer1') |
</code> | </code> |
| |
| It should sound something like this: |
| |
| {{ :random-notes.mp3 |}} |
| |
[[http://konduktiva.org/doku.php?id=quantizedmaps-tutorial|Click here to learn about QuantizedMaps]] OR [[https://github.com/renickbell/konduktiva/blob/main/konduktiva-documentation.md|Click her to see full Konduktiva documentation]] | [[http://konduktiva.org/doku.php?id=quantizedmaps-tutorial|Click here to learn about QuantizedMaps]] OR [[https://github.com/renickbell/konduktiva/blob/main/konduktiva-documentation.md|Click her to see full Konduktiva documentation]] |