A program or patch can be more or less complex, and comprise one or several "layers" of components, like a tree structure. Such structures consist of patches embedded into other patches. Processes embedded in higher-level programs are called abstractions.
Abstraction aims at using a program as a function within another program.
An argument represents a parameter upon which a function operates. For instance, the (om+ x y) function has two arguments : x and y.
A "break-point" function is a function defined by a finite number of points (x,y).
Elementary Lisp functions, allowing the access to one or more elements in a list. CAR and CDR are kernel functions upon which have been defined the rest of these functions.
Let the following list be : (A B C D).
CAR (A B C D) = A.
CDR (A B C D) = (B C D).
CADR (A B C D) = B. CADR means CAR of the CDR.
CDDR (A B C D) = (C D). CDDR means CDR of the CDR.
CADDR (A B C D) = C. CADDR means CAR of the CDDR.
NTHCDR (A B C D) = NTH CDR of the list – N must be specified as argument. NTHCDR 3 (A B C D) = (D).
And so on...
OM name of a chord sequence. By extension, a note sequence, since a single note can be considered a chord.
A category of objects sharing common properties – characteristics and behaviour. A class specifies the internal structure and behaviour of an object. In OM, it is represented in a patch by a factory box that can produce an instance of a class.
See also : Object, Instance
CLOS is an object-oriented programming protocol defined in the Common Lisp language specification. It is based on classes, instances of classes, generic functions and methods to be used in Lisp programs.
See also : Class, Function, Generic Function, Method, Instance.
Conditional operators execute an operation if one or more preconditions are fulfilled. If these conditions are not fulfilled, they can possibly execute another operation.
OM offers two conditional operators : omif and conditional , which operate according to the following paradigm :
"IF A, THEN do B, ELSE do C". The "A" condition may be defined by a predicate.
In OM, a container is an object that contains a number of sub objects, including other containers as well. For instance, a chord-seq that contains chords, a chord that contains notes, a maquette that contains temporal objects, etc.
"Currying" is the reduction of the number of arguments of a lambda function by assigning it one default argument.
Extensible Transportable Format, originally developped by Finale .
Triggers the calculus that will determine the value of an expression. Applies to functions and objects.
⤷ Click and press v
or Cmd
click on an outlet.
A box used for creating an instance, or exemplar, of a given class within a visual program.
A portion of code within a larger program, which performs a specific task. Operates upon 0 or more parameters and returns a value.
A functional abstraction is a program whose some elements can become variables, via connections to the outside environment. Hence, this program must have inputs or outputs that can be connected to external variable elements. The resulting functional abstraction can then be embedded into other programs to be used as a functional component.
In object oriented programming, a generic function is a collection of methods – elementary specialized functions – with the same name and argument structure, but with arguments typed differently.
See also : Method
An instance of OM object that has been saved in order to be used in other programs. Global variables are visible from the Library
window and stored as .omi files in the Globals
folder of the workspace.
An internal subdivision, that is, a list of proportions within a measure. A group can enclose a sub group. Basic examples are tuplets, groups of eighth, sixteenth notes. Groups of quarter, semibreves, whole notes or any other values are also admitted in rhythm trees.
For instance :
(? ((4//4 ( (2 ( 1 1)) (1 ( 1 (1 (1 1 1)))) (1 (1 1 1 1 1)) )))).
This one measure tree has one group – two quarter notes – , one group with a sub group – one eighth note and a sixteenth notes triplet, and a last group – a quintuplet.
An actual object created at runtime, out of a given class. In OM, more specifically, an object created when evaluating a factory box. An instance can be saved as a global variable.
⤷ SHIFT
click on an outlet – especially the first outlet representing the self, the whole object – of a factory box to materialize an instance.
An instance is an exemplar of a class of objects. Instantiation is the process of creating an instance out of a factory box.
Evaluation of a box by OM, triggered by a user evaluation, or by the internal evaluation of an upstream box connected to it.
The repetition of a process within a computer program.
See also : Recursion.
Iteration is the repetition of a process in order to apply it to a series of items.
A Lisp communication interface displaying results of computations, warnings or error messages, and where Lisp expressions – programs – can be evaluated.
A hybrid of visual program and sequencer, a programming unit provided with a time dimension, where musical material is organized in a time oriented structure.
A matrix is a rectangular array of m*n numbers, with m rows and n columns, such as :
1 2 3
4 5 6
An elementary function or part of a generic function defining rules for its behaviour depending on a type of argument. Defining a generic function amounts to defining at least one method.
For instance, the OM+ function is made of four methods : 1. number + list / 2. list + number / 3. number + number / 4. list + list
A midicent is a unit representing one cent of the usual MIDI pitch unit, that is, a half-tone. For instance, a C4 corresponds to 60 in MIDI, and to 6000 midicents, C4# to 61, i.e. 6100 midicents, and so on.
Converts a note name or list of note names into corresponding midi cents values. The reference is the standard notation, where the medium C (6000 midicents) = C3.
Omor
and omand
are
boolean logical operators
that stand for the "and" and "or" coordinating conjunctions.
For instance, the following propositions are respectively true and false :
In OM
Contains functions or classes components belonging to a common category of programming items. Packages are provided at the installation of OM, but the can also be loaded dynamically or added by the user.
A package represents a category of programming tools that encloses related functions and classes. It can be organized in sub packages.
A programming unit where objects and functions – boxes – are interconnected to build a musical algorithm, that is, a sequence of instructions. A patch can also be embedded as a box within another patch.
A persistent object corresponds to a "real" file that is kept somewhere in the hard drive of the computer. Examples of persistent objects in OM are patches, maquettes, or global variables. The corresponding documents are kept in the Workspace folder. Conversely, a "non-persistent" object lays within a program but cannot be manipulated as an independent file.
A predicate verifies the property of a thing or a relation between two things. It has two possible answers : "true", and "false", that is, "t", or "nil" in Lisp.
The concept of predicate refers to a property, or a relation between two terms of a proposition.
Predicates are boolean operators : they verify that a proposition is true by returning "true" or "false" – "yes" or "no". In Lisp, "nil" means "false", and "t" means "true". As a convention, any non nil value is also interpreted as "true".
There are several types of predicates. Among them, algebraic predicates compare numbers, equality predicates test if two objects are identical, type predicates that test if an object belongs to a specific Lisp type, and so on.
In OM, predicates are often used as conditions for the execution of a program.
In computer science, recursion is the application of a function within its own definition. This method allows to solve some complex problems. In order no to "call itself" infinitely, a recursive function must include a termination condition . A termination condition is a necessary condition so that the function doesn't call itself.
A rhythm tree expresses a rhythmic structure as a list. We use the term of "tree" because this structure is alike a tree structure.
This list has :
a duration, or number of measures,
a time signature,
a list or proportions, or rhythmic values.
For instance : (1 ((4//4 (1 1 1 1))) means one measure, four beats time signature, four whole notes.
In object oriented programming, a slot represents and attribute of a class. For instance, the class "note" in OM has 4 slots : pitch, duration, velocity, and MIDI channel.
A characters chain between two inverted commas.
Memento :
= 1,
= 2,
= 4,
= 8,
= 16,
= 32,
= 64
In a maquette, any object provided with an explicit or computable duration, such as an audio file, a chord object or a patch.
See also : Maquette.
A TemporalBox refers to an object in a maquette : an instance, a patch, or another maquette.
A user evaluation triggers one or more internal evaluation of the box and of possible upstream boxes connected to it.
OpenMusic's working environment. Each session starts with choosing a workspace, the equivalent of a desktop where programs are created and organized, and where items can be stored.
Extensible Markup Language. Works with most applications. Advised format.