-
Posts
77 -
Joined
-
Last visited
Reputation Activity
-
TomTolleson reacted to Stephane Boussuge in Chord-Dictum Score
I've shared a video here on CHORD-DICTUM function and you will find here the code from the video.
Enjoy !
The Score:
;;;-------------------------------------------------------- ;;; SCORE 186 ;;; VARIATIONS POUR PIANO ;;; Etude de la fonction "chord-dictum" ;;; S.BOUSSUGE ;;; WIEN - 27.01.2024 ;;;-------------------------------------------------------- ;;; LEARN OPUSMODUS: WWW.COMPOSERWORKSHOP.COM ;;;-------------------------------------------------------- ;;; To view the score press the Cmd-Option-1 keys. ;;;-------------------------------------------------------- ;;; UTILITY ;;; REA-MARK (defun rea-mark (omn-exp) "Add rehearsal marks even on empty bars." (if (event-restp (nth-event 0 omn-exp)) (position-insert 1 'reh omn-exp :section '(0)) (edit-events '((1 1 'reh :articulation)) omn-exp))) ;;;-------------------------------------------------------- ;;; PARAMETERS (setf seed (rnd-round 1 1000000)) (init-seed seed) (setf chords.p '(h. cs3fs3b3d4fs4bb4 q bb2eb3g3b3eb4gs4 h. cs3fs3b3d4fs4bb4 q fs3bb3d4f4bb4eb5 h b2c3eb3a3c4eb4gs4 q gs2cs3f3g3bb3eb4 h fs2bb2d3e3gs3cs4 q eb2gs2c3d3fs3bb3 h. c3eb3fs3b3d4fs4bb4c5 q d3fs3bb3d4f4bb4f5 b2eb3fs3b3d4fs4bb4c5 g2bb2eb3g3b3cs4fs4a4 e2gs2cs3e3g3bb3eb4f4 a2cs3fs3a3c4eb4gs4b4 f2bb2eb3g3bb3eb4f4 h. c3eb3gs3c4e4fs4bb4d5 q a2fs3a3cs4fs4a4 d3fs3bb3d4f4bb4eb5f5 h f3gs3cs4f4g4bb4eb5g5 f3gs3cs4f4g4bb4eb5g5 w f3gs3cs4f4g4bb4eb5g5)) (setf rvel (rnd-sample (length (omn :pitch chords.p)) '((pp)(p)(mp)(mf)(f)(ff)))) (setf chords.d (omn-replace :velocity rvel chords.p)) (setf dictum1 '( (:len w :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|2|# (:len w :chd 6 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|3|# (:len w :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|4|# (:len w :chd 4 :div 4 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|5|# (:len h. :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|6|# (:len h. :chd 6 :div 3 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|7|# (:len h. :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|8|# (:len h. :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|9|# (:len h :chd 7 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|10|# (:len h :chd 6 :div 6 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|11|# (:len h :chd 5 :div 3 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|12|# (:len h :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|13|# (:len q :chd 7 :div 4 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|14|# (:len q :chd 6 :div 6 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|15|# (:len q :chd 5 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|16|# (:len q :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) ) ) (setf dictum-temp `(list (rnd-sample 8 '(w h. h q)) ; Length map (rnd-number 8 4 8) ; Chord-size map (rnd-number 8 3 7) ; Length division nil ; Velocity map nil ; Attribute map (rnd-sample 8 '((3 4) (3 4) nil)) ; Chord group (rnd-sample 8 '((0 13 1 11) nil (0 6 -6 11) nil)) ; Intervals '? ; Variant (rnd-sample 8 '(m r nil)) ; Methods (rnd-sample 8 '(nil t t nil)) ; Rhythm series )) (setf dictum2 (gen-chord-dictum (eval dictum-temp))) (setf dictum3 (gen-chord-dictum (eval dictum-temp))) (setf out1 (chord-dictum dictum1 chords.d)) (setf out2 (chord-dictum dictum2 chords.d)) (setf out3 (chord-dictum dictum3 chords.d)) (setf out4 (chord-dictum dictum1 chords.d)) (setf piano (assemble-seq chords.d out1 out2 out3 out4)) (setf split1 (ambitus-filter '(c4 c8) piano)) (setf split2 (ambitus-filter '(a0 b3) piano)) (setf piano-rh split1) (setf piano-rh.rea (assemble-seq (loop for i in piano-rh :collect (rea-mark (list i))))) (setf piano-lh split2) (setf titre (concatenate 'string "Score186-Variation-Piano-" (stringify seed) )) ;;;-------------------------------------------------------- ;;; SCORE AND LAYOUT (def-score Score186 (:title titre :subtitle "pour Piano" :composer "Stephane Boussuge" :copyright "Copyright © 2024" :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 108 :layout (piano-solo-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-rh.rea ;:port "bus 6" :channel 1 :sound 'gm :program 'acoustic-grand-piano ) (piano-lh :omn piano-lh ;:port "bus 6" :channel 1 ) ) (init-seed nil)
-
TomTolleson reacted to Stephane Boussuge in Articulations-as-tracks in Albion Neo
Hi Tom,
I generally use Plogue Bidule to solve this.
Best
Stephane
-
TomTolleson reacted to Stephane Boussuge in Empty Layout in PS
Hi Tom,
to output midi, you don't need any layout, you can do this.
(def-score electronic (:title "electronic music score" :composer "THT" :copyright "Copyright ©2023 " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 ) (polysynthl :omn polysynth :channel 2 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (polysynthr :omn polysynth :channel 2 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (monosynth :omn monosynth :channel 3 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (modularsynth :omn modularsynth :channel 4 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (padl :omn pad :channel 5 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (padr :omn pad :channel 5 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (kick :omn kick :channel 1 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (snare :omn snare :channel 2 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) )
-
TomTolleson reacted to opmo in length-augmentation to fill rests
(setf aug-rest-length (loop for i in (omn :length mat) when (length-restp i) collect (* 1/2 i) when (length-notep i) collect (* 2 i)))
or
(setf aug-rest-length (loop for i in (omn :length mat) when (minusp i) collect (* 1/2 i) when (plusp i) collect (* 2 i)))
-
TomTolleson reacted to opmo in length-augmentation to fill rests
(setf mat (flatten '((s d3 ffff -e. s f3 mf -q.. s f3 ffff -e.) (s g3 -e. s f3 -e. q.. g3 -s)))) (setf aug-length (loop for i in (omn :length mat) collect (if (length-restp i) i (car (length-augmentation 4 (list i)))))) (setf augmat (make-omn :length aug-length :pitch (omn :pitch mat) :velocity (omn :velocity mat) :articulation (omn :articulation mat))) (setf mat (pitch-transpose -12 augmat)) => (q d2 ffff -e. q f2 mf -q.. q f2 ffff -e. q g2 -e. q f2 -e. w.. g2 -s)
-
TomTolleson got a reaction from Stephane Boussuge in length-augmentation to fill rests
Thank you @Stephane Boussuge!
A huge help as always. I made a slight modification (for anyone reading this thread) to collect the rests (rather than the notes); essentially the inverse of what Stephane's code accomplishes. Mine is as follows (using "length-notep" in place of "length-restp"):
(setf len '(1/8 1/8 -1/4 1/16 1/16 1/16 1/16 1/4 -1/8 1/16 1/16 1/2)) (setf rest-only (remove-nils (loop for l in len :collect (if (length-notep l) nil l ))))
-
TomTolleson reacted to Stephane Boussuge in length-augmentation to fill rests
Hi,
may be this help:
(setf len '(1/8 1/8 -1/4 1/16 1/16 1/16 1/16 1/4 -1/8 1/16 1/16 1/2)) (setf len-only (remove-nils (loop for l in len :collect (if (length-restp l) nil l ))))
-
TomTolleson reacted to Stephane Boussuge in Prelude pour Piano 160923
New short piece for piano.
stephaneboussuge · Prelude pour Piano 160923
-
TomTolleson reacted to Stephane Boussuge in sc:Synthdef for sampler
Here's an example of sampler design:
(sc:defsynth stf-sampler1 ((buffer 0) (rate 1) (start 0) (amp 0.5) (out 0)) (let ( (sig (sc:play-buf.ar 2 buffer (* rate (sc:buf-rate-scale.ir buffer)) :start-pos (* start (sc:buf-frames.ir buffer)) :act :free))) (sc:out.ar out (* amp sig)))) (defparameter sample1 (sc:buffer-read "/Users/stephaneboussuge/Samples/tibetan-singing-bowl.wav" :bufnum 0)) ;(sc:synth :stf-sampler1) ;(sc:synth :stf-sampler1 :rate 0.5) ;(sc:synth :stf-sampler1 :rate 2) (sc:stop) Hope it helps.
Best
S.
-
TomTolleson reacted to opmo in server.default.options.Xdevice (Audio routing)
The 'Loopback' software will allow you audio routing:
Rogue Amoeba | Loopback: Cable-Free Audio Routing
ROGUEAMOEBA.COM Get all the power of a high-end studio mixing board, right inside your Mac!
This is my setup:
-
TomTolleson got a reaction from vpolajnar in Applying length-augmentation (or any function) to a list by name
OK, so this seems to be working:
(setf source "/Users/tomtolleson/OpusModus/Scores/The Bifurcated Fruit of a Mirror/MIDI/dominabi.mid") (setf sourcelengths (midi-to-omn source :type :length)) (setf flatlengths (mcflatten sourcelengths)) (length-augmentation 4 flatlengths) THT
-
TomTolleson reacted to vpolajnar in Applying length-augmentation (or any function) to a list by name
You should use sourcelengths as variable:
(length-augmentation 2 sourcelengths) Best!
-
TomTolleson got a reaction from vpolajnar in Applying length-augmentation (or any function) to a list by name
Thank you for the response. That's still throwing an error.
Even when I'm using it as
(setf lengths (length-augmentation 2 sourcelengths))
or
(setf lengths (length-augmentation 2 (sourcelengths)))
or
(setf lengths (length-augmentation 2 '(sourcelengths)))
Ah, just realized the source of the problem is my original variable "sourcelengths"
When that's evaluated it's
(((1/16 -3/16 1/16 -3/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (-1/4 1/4 1/16 -3/16 1/4) (3/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/16 -1/4 -1/16) (-1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 7/16 -3/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 7/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (1/16 -3/16 7/16 -1/16 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (7/16 -3/16 1/16 -3/16 1/8) (1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/16 -3/16 3/8) (1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/2 3/8) (1/16 -1/4 -1/16 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 3/8) (1/16 -1/16 1/4 1/4 1/4 1/8) (1/8 1/2 3/8) (1/8 1/4 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/4) (1/4 1/16 -3/16 1/16 -3/16 1/4) (1/4 1/4 1/2) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/2) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/16 -7/16) (1/4 1/16 -3/16 7/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/4 1/16 -7/16 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 7/16 -1/4 -1/16 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/16 -3/16 1/4 1/16 -3/16 1/16 -1/16) (-1/8 1/4 1/4 1/16 -3/16 1/8) (1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 7/16)))
Applying Length augmentation to that will cause a problem no matter how I do it. I'll need to solve that issue first. Thanks!
It should be
(setf sourcelengths '((1/16 -3/16 1/16 -3/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (-1/4 1/4 1/16 -3/16 1/4) (3/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/16 -1/4 -1/16) (-1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 7/16 -3/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 7/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (1/16 -3/16 7/16 -1/16 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (7/16 -3/16 1/16 -3/16 1/8) (1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/16 -3/16 3/8) (1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/2 3/8) (1/16 -1/4 -1/16 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 3/8) (1/16 -1/16 1/4 1/4 1/4 1/8) (1/8 1/2 3/8) (1/8 1/4 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/4) (1/4 1/16 -3/16 1/16 -3/16 1/4) (1/4 1/4 1/2) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/2) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/16 -7/16) (1/4 1/16 -3/16 7/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/4 1/16 -7/16 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 7/16 -1/4 -1/16 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/16 -3/16 1/4 1/16 -3/16 1/16 -1/16) (-1/8 1/4 1/4 1/16 -3/16 1/8) (1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 7/16)))
Not sure how to remove the extra parenthesis algorithmically though.
-
TomTolleson reacted to Stephane Boussuge in Prélude/Studie "Lake" for Piano
Playing a bit, a short experiment with the new lakes function from OM.
S.
PreludePourPiano070923opmo.opmo
Prelude 070923Rev1.mp3
-
TomTolleson reacted to jesele in Prélude/Studie "Lake" for Piano
Here are some links on Per Nørgård.
https://www.lawtonhall.com/blog/2019/9/9/per-nrgrds-infinity-series
https://www.andersbeyer.com/publications/work-analysis/attraction-and-repulsion/
https://www.theguardian.com/music/tomserviceblog/2012/jul/30/per-norgard-contemporary-music-guide
Jesper
-
TomTolleson got a reaction from Stephane Boussuge in Orchestral Template EastWest HW Orch and Plogue Bidule
That's great! Thanks, Stephane. Having reviewed other options such as MusicXML to Musescore and then Musescore to Cubase I'm finding that much of the articulations and dynamics (e.g. expressions) don't quite translate 1:1 which makes sense and makes me wonder why I was thinking that it would.
Looking at the range of complex sound design capabilities in Albion Neo, I will likely just compose in Opusmodus and then work with the Spitfire tools hands on for the best effect.
Thanks!
THT
-
TomTolleson reacted to opmo in Opusmodus 3.0.28724 Update
3.0.28724
– Changes :
Workspace directory sort by NAME. Function search shortcut changed to Cmd-D
– Documents:
Documents edit.
Opusmodus Windows Beta release imminent.
-
TomTolleson reacted to opmo in Opusmodus v.3.0 Upgrade
We are happy to announce Opusmodus v.3.0 is ready for download.
OPUSMODUS 3.0
Language: English (French, Italian and German - coming soon)
© MMXXII Opusmodus™ Ltd. All rights reserved.
Requirements: macOS 10.12 · 10.15 · 11 · 12 · 13
Intel & Apple silicon natively supported
Download:
https://opusmodus.com/forums/downloads/
Note:
Rename your current Opusmodus folder first. Start Opusmodus app and enter the Licence Key and press 'Activate' or press 'Start Trial' if you don't have the License Key for 3.0. At the start you will be ask to install the new Opusmodus directory. Move your workspaces into the Workspace directory. Don't change any of the directory names in the Opusmodus folder. Your own functions you need to move to the ‘User Source/Extensions’ folder.
Best wishes,
Janusz
-
TomTolleson reacted to Stephane Boussuge in Zoom Into Opusmodus new serie Video online
Dear all,
the video of the fist Zoom into OM is now online.
In future, the Zoom into OM will be only in video format delivered every weekend.
Best
Stéphane
-
TomTolleson reacted to Stephane Boussuge in Working with large pieces in multiple sections
All of us, as Opusmodus users, know the possibility to compose a piece with multiples sections and assemble later.
We can use the ASSEMBLE-SEQ function in our piece for assemble some material and sections, but we also can use COMPILE-SCORE with multiple pre-defined scores assembled in one COMPILE-SCORE instruction this way:
(compile-score '( score1 score2 score3 etc. ) ) This is a very convenient way for assembling multiple sections as multiple score.
i put this instructions in a separate file named COMPILE-SCORE and all other section-score in files named S1, S2, S3....
But when the piece grown, you can have many score files in you workspace navigator to evaluate before compiling the full score.
In that case, i add a last file named LoadAll. opmo containing the following instruction for load and read in one time all my section's scores:
(mapcar 'load '( "/Users/yourUserName/Opusmodus/Scores/S1.opmo" ;; S1 for section1, s2 for section2 and so on... "/Users/yourUserName/Opusmodus/Scores/S2.opmo" "/Users/yourUserName/Opusmodus/Scores/S3.opmo" "/Users/yourUserName/Opusmodus/Scores/S4.opmo" "/Users/yourUserName/Opusmodus/Scores/S5.opmo" "/Users/yourUserName/Opusmodus/Scores/S6.opmo" "/Users/yourUserName/Opusmodus/Scores/S7.opmo" "/Users/yourUserName/Opusmodus/Scores/S8.opmo" )) Attached to this post, 2 pictures of one of my workspace showing the organisation of the files.
SB.
-
TomTolleson reacted to opmo in Using list variable instead of list in Counterpoint
You can't do that.
this is only use for bars - bar numbers.
(rh :omn '(#|1|# line1) :channel 1 :sound 'gm :program 0 :volume 90 :pan 64) -
TomTolleson reacted to Stephane Boussuge in best strategy for organizing large strings and functions
Hi Tom,
you can create as many different .opmo files you want with your functions etc... and load them with the load function from your main master file.
Best.
Stéphane
-
-
TomTolleson reacted to Stephane Boussuge in MIDI Port number/name
Hi,
normally, if you name your IAC-Port-1 Bus 1, you can send midi to this port from OM using :port "Bus 1" inside the score.
Generally it is better to use named port because actually Bus 1 could be :port 0 but if you plug some other midi devices to your computer, this order could change, that's the reason why it is better to use named ports.
Best !
Stéphane
-
TomTolleson reacted to erka in MIDI Port number/name
Besides the option of compile-score you can save from the midi-player
Tools-> last-score->midi player (or anything to the midi player).
Then in the menu (left upper-corner ) of the midi player -> save as -> give the file a name and destination. Import in DAW.
Regarding ((0 . "Bus 1")) :
In the score you write :port 0 when you want to send to your IAC-driver Bus 1.
(inst1
:omn omn1
:port 0
:channel 1
)
In logic etc set the track midi-input to all or BUS 1.
Make sure that in the MIDI-settings of the DAW the IAC-driver bus is active.
In the Audio-midi-setup.app menu -> window (in German Fenster) -> MIDI-studio -> IAC-drivers you see the names of the IAC-driver and can create new ones.
(midi-destinations) is listing them counting the opusmodus port starting from 0. That is why ((0 . "Bus 1"))