orchestra (Optional): Lists all instruments involved in the composition. This comprehensive list ensures that the counterpoint function can consider the full ensemble when applying transformations and generating output.
instruments (Optional): Identifies a subset of instruments from the orchestra to which the counterpoint operations are specifically applied. This allows for targeted manipulation of particular voices or sections within the ensemble.
Orchestra and Instruments
The :orchestra and :instruments options are employed within the COUNTERPOINT function for orchestrating ensemble or orchestral compositions. These options ensure precise alignment and synchronisation of all instruments, particularly vital when focusing on specific sections and a selected list of instruments. The key objective is to maintain coherence across the ensemble, ensuring that instruments not actively participating in a given section are appropriately paused, yet still accounted for in the overall section result. The :instruments option explicitly designates the instruments engaged in the COUNTERPOINT operation. The orchestra variable is defined to encompass a comprehensive range of instruments across different families, including woodwind, brass, percussion, keyboard and harp, and strings.
(setf orchestra
'(pic flt obo cla bsn cbn ; woodwind
hrn tpt tbn tba ; brass
tmp glk chi ; percussion
cel plh prh hrp ; keyboard, harp
vn1 vn2 vla vlc ctb ; strings
)
)
In the COUNTERPOINT function below, sequences (seq1, seq2, seq3) are processed through specified dictum configurations, with attention to sequence patterns, tempo, and the orchestrated ensemble layout.
(counterpoint
(list seq1 seq2 seq3)
'(((- 1 2 1 2 1) :sequence (1 1 1 1 1 1) :tempo 88)
((4 3 1 2 1 1) :sequence (3 1 1 1 1 1)))
:orchestra orchestra
:instruments '(vn1 vn2 vla vlc ctb)
:time-signature '(4 4)
:global-tonality '((d4f4a4 :map octave))
:index ‘s1-)
By specifying :orchestra and :instruments, this approach ensures that only the selected string instruments (vn1, vn2, vla, vlc, ctb) are actively engaged in the COUNTERPOINT, while other orchestral sections are paused but included in the overall texture (output).
Hi folks,
a short electronic track in honor of Hubble telescope discovery...
I've used the template shared here as starting point:
Attached the Audio file, Opmo score and VCVRack.
Best
S.
PillarsOfCreation.wav
PillarsOfCreation.vcv
PillarsOfCreation.opmo
Thanks to Sungmin's support and the introduction of the new DEF-SC-SCORE macro, Opusmodus users can now create a series of instruments similar to those created with the DEF-SCORE macro for traditional instrument scores.
The primary objective of the DEF-SC-SCORE was to enable users to take Opusmodus scores (whether in omn-form or single-element omn forms) and convert them to the CL-Collider (SuperCollider) input format. To achieve this, we introduced the OMN-TO-SC function specifically for this task.
Below are a few examples that illustrate the conversion process and the use of the DEF-SC-SCORE macro:
I had OM running successfully in Doom Emacs, which in case you are unfamiliar with it, uses Vim keybindings. And I loved it!
The only thing I couldn't figure out was how to quickly get to the documentation, but you can look op some of Torsten's posts regarding this.
Not sure if all of this will still work when switching to Lispworks in v3 though?
I'm testing (for fun) the M2 with opusmodus (intel, a little wobbly on silicon) - of course I still have a copy on my intel-mac, just for fun!
but the combination is really good. I calculate/play something in OPUSMODUS, sending by OSC to MAX/MSP and further to ABLETON LIVE; as a heavy test, the same thing in parallel to REAPER. everything with different plugins. no jerks, no glitches. That will be really great, this combination - when OPMO officially runs on silicon!
then PROCESSING can also run in parallel 😄
@opmo: thx a lot for all the special functions you have coded for me/us over the last few years, very specific/individual solutions for me, my work!!
I had OM running successfully in Doom Emacs, which in case you are unfamiliar with it, uses Vim keybindings. And I loved it!
The only thing I couldn't figure out was how to quickly get to the documentation, but you can look op some of Torsten's posts regarding this.
Not sure if all of this will still work when switching to Lispworks in v3 though?
Wow, thanks! What a community Opmo has! I'm looking forward to learning more about it.
I puchased XCE 8 years ago for Windows. Trying to get it to run on my Mac but no luck yet. I've contacted xsample.de. I see there's already a sound set for XCE that comes with Opmo.
Regarding sound sets, I'm a programmer so I'm pretty sure I can figure out most things on my own if you can point me to documentation that explains how to create and use sound sets.
I do need some more documentation or help setting up custom functions. I tried copying your last-score-to-editor function to the System Library and created a contents.opmo file, but when I add a call to last-score-to-editor to one of the demonstration scores and evaluate all, I get a message about last-score-to-editor being undefined.
WHY I USE OPUSMODUS SOFTWARE IN MY MUSICAL COMPOSITION PROCESS
In this video I will describe some of the techniques I used in my compositional process and why I decided to use OPUSMODUS Software for compose music ! Also my experience with Pure Data and Nodal Software before moving to Opusmodus.
To start the MIDI input into your score file, select the command MIDI Entry from the Tools menu. When MIDI Entry is ON, the Listener echo bar will change to orange:
Now you know the MIDI Entry is ON. Depending on the position of the pitch-bend wheel and the modulation wheel as well as the position of the sustain pedal the colour of the Listener echo bar will change.
To make the MIDI Entry as functional as possible there are a number of commands that will increase the speed of your work without the need to move away form your MIDI keyboard.
Every entry is octave independent, except the pitch entry.
Pitch
Enter pitch symbols and chords into your score.
Length and Tuplet
Pitch-Bend: Up-Full
C 1
D 1/2
E 1/4
F 1/8
G 1/16
A 1/32
B 1/64
Cs 3
Ds 5
Fs 6
Gs 7
Bb 9
Length-rest and Tuplet
Pitch-Bend: Down-Full
C -1
D -1/2
E -1/4
F -1/8
G -1/16
A -1/32
B -1/64
Cs -3
Ds -5
Fs -6
Gs -7
Bb -9
Velocity
Pitch-Bend: UP-Half
C pppp
Cs ppp
D pp
Eb p
E mp
F mf
Fs f
G ff
Gs fff
A ffff
Bb <
B >
Attribute
Pitch-Bend: Down-Half
C stacc
Cs ord
D marc
Eb fermata
E mart
F ten
Fs pizz
G leg
Gs trem
A tie
Bb ped1
B ped
Microtonality and Commands
Modulation Wheel: Up
Add a microtonal symbol next to the pitch symbol.
F +
G -
A .
B ..
C parenthesis pair
D open parenthesis
E close parenthesis
Cs move forward char
Eb move backward char
Fs delete backward char
Gs undo
Bb new line and indent
Note: If you enable MIDI input with the modulation wheel up, you need to move it down and up again in order for it to be considered up.
Entries with Sustain Pedal Down
Pitch
Add a pitch symbol next to the previous pitch (chord).
Length and Tuplet
Pitch-Bend: Up-Full
Add a length entry to the previous length value (combine length).
Length-rest and Tuplet
Pitch-Bend: Down-Full
Add a length-rest entry to the previous rest value (combine length).
Velocity
Pitch-Bend: Up-Half
Add < or > dynamic symbol to the previous velocity value.
Attribute
Pitch-Bend: Down-Half
Add (+) attribute to the previous attribute value (combine attributes).
Examples:
c4e4g4
Enter a chord c4e4g4 on your MIDI keyboard or pitch by pitch: c4 e4 g4 with sustain pedal down.
(q c4 mp e4 g4)
1. Modulation wheel up then C => ()
2. PB-UpF then E => (q)
3. Enter c4 => (q c4)
4. PB-UpH then E => (q c4 mp)
5. Enter e4 then g4 => (q c4 mp e4 g4)
(q c4 mp e4 stacc g4 p fermata+trem)
1. Modulation wheel up then C => ()
2. PB-UpF then E => (q)
3. Enter c4 => (q c4)
4. PB-UpH then E => (q c4 mp)
5. Enter e4 => (q c4 mp e4)
6. PB-DnH then C => (q c4 mp e4 stacc)
7. Enter g4 => (q c4 mp e4 stacc g4)
8. PB-UpH then Eb => (q c4 mp e4 stacc g4 p)
9. PB-DnH then Eb => (q c4 mp e4 stacc g4 p fermata)
10. PB-DnH then Gs + sustain => (q c4 mp e4 stacc g4 p fermata+trem)
(q c4 mp e4 stacc g4 p fermata+trem 3q c4 eb4 fs4)
1. Modulation wheel up then C => ()
2. PB-UpF then E => (q)
3. Enter c4 => (q c4)
4. PB-UpH then E => (q c4 mp)
5. Enter e4 => (q c4 mp e4)
6. PB-DnH then C => (q c4 mp e4 stacc)
7. Enter g4 => (q c4 mp e4 stacc g4)
8. PB-UpH then Eb => (q c4 mp e4 stacc g4 p)
9. PB-DnH then Eb => (q c4 mp e4 stacc g4 p fermata)
10. PB-DnH then Gs + sustain => (q c4 mp e4 stacc g4 p fermata+trem)
11. PB-UpF Cs/E (chord) => (q c4 mp e4 stacc g4 p fermata+trem 3q)
12. Enter c4 then eb4 then fs4 => (q c4 mp e4 stacc g4 p fermata+trem 3q c4 eb4 fs4)
Best wishes,
Janusz
Wow that is some stellar work, I do play guitar but I mainly compose on piano will send this along to my guitar playing friends, seems like a very valuable source.
I already had some new things to learn in the first few lines of your provided example so I had a productive day yesterday.
I have no doubt that you're familiar with these, but for others that might be interested, I found some useful tools for PCS analysis as well as a nice explanation on the subject.
(defun replace-velocities-in-a-seq (omn-list &key pitch velocity-list)
(flatten
(loop
with cnt = 0
for i in (single-events omn-list)
when (equal (cadr i) pitch)
collect (omn-replace :velocity (nth cnt velocity-list) i)
and do (incf cnt)
else collect i
when (> cnt (length velocity-list))
do (setf cnt 0))))
(replace-velocities-in-a-seq '(e c4 ppppp d4 d4 e4 f4 d4 d4 g4 b4 d4 d4 d4 d4)
:pitch 'd4
:velocity-list '(p mp mf f ff))
;=> (e c4 ppppp e d4 p e d4 mp e e4 ppppp e f4 ppppp e d4 mf e d4 f e g4 ppppp e b4 ppppp e d4 ff e d4 ppppp e d4 p e d4 mp)
;; if there are more 'd4's then velocity-values, -> it starts again with first velocity-value (= cycle)
Obviously I had not read the quick lisp-related posts fully. I did the following and it works now:
1) Created a directory "ccl" under my user name directory
2) cd to that directory
3) svn co http://svn.clozure.com/publicsvn/openmcl//release/1.11/darwin-x86-headers64
4) In the file "Quicklisp Start.lisp" located under "~/Opusmodus/Extensions" folder, I uncommented and modified the following line:
(setf (logical-pathname-translations "ccl") '((#P"ccl:**;*.*" #P"/Users/Rangarajan/ccl/**/*.*")))