# opmo

2,516

1. ## Clauses, String Quartet and VSL

An example with DEF-CASE and Vienna Symphonic Library sound sets. Initialise random seed to all the other functions which may also use random seed. (init-seed 98) Global value 20 assign to a variable LEN. (setf len '20) Complex length generator using cartesian sets - combinatory possibilities. (setf v1-gcl (gen-length-cartesian 2 3 'm 'n (rnd-sample len '(q q h)) (rnd-sample len '(2 3)) (rnd-sample len (primes 5 3)) (rnd-sample len '(1 2 3 4 5)))) (setf v2-gcl (gen-length-cartesian 2 3 'd '? (rnd-sample len '(q q h)) (rnd-sample len '(2 3)) (rnd-sample len (primes 5 3)) (rnd-sample len '(1 2 3 4 5)))) (setf va-gcl (gen-length-cartesian 2 3 'd '? (rnd-sample len '(q q h)) (rnd-sample len '(2 3)) (rnd-sample len (primes 5 3)) (rnd-sample len '(1 2 3 4 5)))) (setf vc-gcl (gen-length-cartesian 2 3 'd '? (rnd-sample len '(q q h)) (rnd-sample len '(2 3)) (rnd-sample len (primes 5 3)) (rnd-sample len '(1 2 3 4 5)))) Aligning all lists by adding rests to the end of the lists. (setf str-la (length-align (list v1-gcl v2-gcl va-gcl vc-gcl) :type 'r :position 'e)) Rearranging lists to produce unison moments. (setf str-unison (gen-unison str-la :unison '(1 2 3 1))) Assigning VN variables to the str-unison lists - VN0, VN1, etc... (assign-vars 'vn str-unison) The initial interval list. (setq intervals '((2) 6 (0 -6) (-1 -6) 0 (-1 10) -13 (3 6) (-1 6) 9 0 0 6 0 (-6 -13) -8 -11 0 (0 11) (-3 6) -14 (0 14) -6 (3 6) (-6 6) (-2 -13) 20 (9 -6) 11 (-6 2) (-2 -6) -13 9 10 6 0 (-13 6) -9 16 (-10 -11) -8 (2 -6) -2 35 0 (-6 2) (-8 -2) -8 (2 -6) (10 6) 0 (-20 13) (-9 -10) (11 -11) (8 6) (0 -2) (2 -6) -1 (5 6) 4 (10 -6) -23 11 6 (-2 2) 6 6 4 (-6 2) 4 -14 6 (-13 6) (2 2) 11 -6 (6 -13) 8)) Interval list of 200 fragments with length of 3, 4 or 5 values. (setf mat (flatten-sublist (gen-fragment 200 '(3 4 5) intervals :lists t))) Interval to pitch with start pitch 'a5. (setf str-pitch (flatten (interval-map 'a5 mat))) Distribution of a single pitch stream to a series of voices, consecutively. (setf str-cd (consecutive-distribute str-pitch vn0 vn1 vn2 vn3)) Assigning PITCH variables to the str-cd lists - PITCH0, PITCH1, etc... (assign-vars 'pitch str-cd) Align the number of pitches to match the number of length. (setf v1-span (span vn0 pitch0)) (setf v2-span (span vn1 pitch1)) (setf va-span (span vn2 pitch2)) (setf vc-span (span vn3 pitch3)) Variant process of common variant forms on lists of pitches. (setf v1-pv (pitch-variant v1-span :variant '?)) (setf v2-pv (pitch-variant v2-span :variant '?)) (setf va-pv (pitch-variant va-span :variant '?)) (setf vc-pv (pitch-variant vc-span :variant '?)) Setting the instrument AMBITUS (range). (setf v1-p (ambitus '(g3 g6) v1-pv)) (setf v2-p (ambitus '(g3 g6) v2-pv)) (setf va-p (ambitus '(c3 g6) va-pv)) (setf vc-p (ambitus '(c2 c5) vc-pv)) Finding unique lengths. ;(setf len-unique (length-note-unique vn0 vn1 vn2 vn3)) ;=> (1/20 1/16 1/12 1/10 1/8 3/20 1/6 1/5 1/4 3/10 1/2) Defining a function ART name and list of clauses. (def-case art (1/20 'leg) (1/16 'leg) (1/12 (rnd-pick '(stacc pizz snap))) (1/10 'leg) (1/8 (rnd-pick '(stacc pizz snap))) (3/20 (rnd-pick '(stacc pizz snap))) (1/6 'non-vib) (1/5 'tasto) (1/4 (rnd-pick '(tasto ponte))) (3/10 (rnd-pick '(tasto ponte))) (1/3 'tasto+trem) (1/2 'tasto) (otherwise (rnd-pick '(ord tasto)))) Processing ART clauses. (setf v1-art (mapcar 'art vn0)) (setf v2-art (mapcar 'art vn1)) (setf va-art (mapcar 'art vn2)) (setf vc-art (mapcar 'art vn3)) Defining a function name DYN and list of clauses. (def-case dyn (1/20 'mf) (1/16 'mf) (1/12 (rnd-pick '(p mp mf))) (1/10 (rnd-pick '(p mp mf))) (1/8 (rnd-pick '(pp p mp))) (3/20 (rnd-pick '(pp p mp))) (1/6 (rnd-pick '(pp p mp))) (1/5 (rnd-pick '(ppp pp p))) (1/4 (rnd-pick '(ppp pp p))) (3/10 (rnd-pick '(pppp ppp pp))) (1/3 (rnd-pick '(pppp ppp))) (1/2 'pppp) (otherwise (rnd-pick '(pp p)))) Processing DYN clauses. (setf v1-v (mapcar 'dyn vn0)) (setf v2-v (mapcar 'dyn vn1)) (setf va-v (mapcar 'dyn vn2)) (setf vc-v (mapcar 'dyn vn3)) Assemble the separate parameters to OMN script. (setf v1-omn (make-omn :length vn0 :pitch v1-p :velocity v1-v :articulation v1-art)) (setf v2-omn (make-omn :length vn1 :pitch v2-p :velocity v2-v :articulation v2-art)) (setf va-omn (make-omn :length vn2 :pitch va-p :velocity va-v :articulation va-art)) (setf vc-omn (make-omn :length vn3 :pitch vc-p :velocity vc-v :articulation vc-art)) Converting material to pauses. (setf pause1 (gen-pause v1-omn)) (setf pause2 (gen-pause v2-omn)) (setf pause3 (gen-pause va-omn)) (setf pause4 (gen-pause vc-omn)) (setf pause (gen-repeat 6 '((-q)))) Rearranging the bars and assembling a final instrument. (setf v1-seq (assemble-subseq '((v1-omn :start 5 :end 5) (pause :start 1 :end 2) (v1-omn :start 2 :end 2) (v1-omn :start 3 :end 3) (pause :start 1 :end 1) (v1-omn :start 7 :end 9) (v1-omn :start 6 :end 7) (v1-omn :start 8 :end 8)))) (setf v2-seq (assemble-subseq '((v2-omn :start 5 :end 5) (pause :start 1 :end 2) (v2-omn :start 2 :end 2) (v2-omn :start 3 :end 3) (pause :start 1 :end 1) (v2-omn :start 7 :end 9) (v2-omn :start 4 :end 5) (v2-omn :start 8 :end 8)))) (setf va-seq (assemble-subseq '((va-omn :start 5 :end 5) (pause :start 1 :end 2) (va-omn :start 2 :end 2) (va-omn :start 3 :end 3) (pause :start 1 :end 1) (va-omn :start 18 :end 20) (va-omn :start 4 :end 5) (va-omn :start 8 :end 8)))) (setf vc-seq (assemble-subseq '((vc-omn :start 7 :end 7) (pause :start 1 :end 2) (vc-omn :start 2 :end 2) (vc-omn :start 3 :end 3) (vc-omn :start 10 :end 10) (pause4 :start 7 :end 9) (vc-omn :start 5 :end 6) (vc-omn :start 8 :end 8)))) Test if two tone chords are playable. (setf v1 (instrument-clause :violin v1-seq)) (setf v2 (instrument-clause :violin v2-seq)) (setf va (instrument-clause :viola va-seq)) (setf vc (instrument-clause :cello vc-seq)) Generating a tempo list changes. (setf tempo (gen-tempo '(30 40 72)'(1 2) vc)) Defining the score. (def-score clauses (:composer "OPMO" :copyright "Opusmodus" :key-signature 'atonal :time-signature (get-time-signature vc) :tempo tempo :layout (string-quartet-layout 'violin1 'violin2 'viola 'cello)) (violin1 :omn v1 :port 0 :channel 1 :sound 'vsl-violin-solo :pan 32) (violin2 :omn v2 :channel 2 :sound 'vsl-violin-solo :pan 50) (viola :omn va :channel 3 :sound 'vsl-viola-solo :pan 75) (cello :omn vc :channel 4 :sound 'vsl-cello-solo :pan 95)) The score in OMN script reads as follows: Violin 1 v1 => ((q d4 pp tasto e4 p ponte g3fs4 tasto b4bb5 tasto h e5bb5 pppp tasto) (-q) (-q) (-5q - 5qqq a4bb5 p ord f6 ord -5q - 3q f6e6 mp snap - - -h.) (q d4 pp tasto -e - -q gs3 p tasto 5w c4fs4 pp tasto -5h - -) (-q) (-e fs4 p ord 5h c4 pizz -5q - - e gs3 mp -s -) (5h g5a5 mp leg f6fs6 leg fs6c6 leg gs5 mf leg e4 mp leg e cs4 pp pizz eb4cs4 p snap gs3 mp stacc a3 p snap f5b5 pp stacc f4 mp stacc c4 p pizz cs4g4 mp snap) (q gs3d4 pp ponte e eb4a3 mp stacc -s - -w) (q f4g3 ppp ponte -e - q d4 p ord -e - 5hhh eb4 tasto -5h -) (-e fs4 p ord 5h c4 pizz -5q - - e gs3 mp -s -) (5h g5a5 mp leg f6fs6 leg fs6c6 leg gs5 mf leg e4 mp leg e cs4 pp pizz eb4cs4 p snap gs3 mp stacc a3 p snap f5b5 pp stacc f4 mp stacc c4 p pizz cs4g4 mp snap)) Violin 2 v2 => ((q bb5 pp ponte b3 tasto p ponte c4bb4 ponte h d4 pppp tasto) (-q) (-q) (q gs3 pp tasto gs3 tasto cs4 ponte c4bb4 tasto h d4e4 pppp tasto) (q e4 p ponte -e - -q a3gs4 ord 5w fs4gs3 pp ord -5h - -) (-q) (-e g4 p tasto 5h a3eb4 mp snap -5q - - e gs4 mf -s -) (5h c4bb4 mp leg a3 leg cs4 leg d4 leg d4 leg e a3 snap cs4 pizz cs4eb4 pizz e4 pp snap f5 mp pizz f6 pizz bb5 stacc bb5 stacc) (q bb3a4 pp ponte e fs4 stacc -s - -w) (e gs5fs5 pp stacc fs5gs4 pizz 5q a4 mf leg a4 leg cs4d4 leg cs4 leg gs3 -h) (q bb5 pp ponte b3 tasto p ponte c4bb4 ponte h d4 pppp tasto) (5h c4bb4 mp leg a3 leg cs4 leg d4 leg d4 leg e a3 snap cs4 pizz cs4eb4 pizz e4 pp snap f5 mp pizz f6 pizz bb5 stacc bb5 stacc)) Viola va => ((q b4 ppp ponte bb4 p tasto cs3g3 pp tasto bb3e3 tasto h eb3d4 pppp tasto) (-q) (-q) (q eb5 ppp tasto g3 pp ponte fs3c4 p tasto e3eb4 pp tasto h b4 pppp tasto) (5qqq f3b3 pp pizz -5q - - - - 5h d3 p ord -3q - d3 ord -h.) (-q) (-e a3eb3 p tasto 5qqq fs3c4 pizz -5q - -q) (-e e3bb3 pp tasto bb3 snap - q fs3c4 p snap -) (e f3 p pizz - - cs3c4 tasto q fs3gs3 pp ord -h.) (e d3 pp pizz f3b3 pizz 5q bb3gs3 mf leg a4gs5 leg f4 leg d5gs5 leg bb4 -h) (q b4 ppp ponte bb4 p tasto cs3g3 pp tasto bb3e3 tasto h eb3d4 pppp tasto) (5h e3 mp leg d3 p leg eb3 leg gs3 mp leg gs3d3 leg e a3 pp snap e3 mp pizz f3e4 pp pizz a4b4 mp pizz f5g5 stacc b5 pizz d6 pp stacc bb5 snap)) Violoncello vc => ((3q cs4b4 mp pizz a3eb4 p pizz gs4fs3 mf stacc q d4c4 pp ponte c4 tasto) (-q) (-q) (-5q - 5qqq c3 p tasto f3 pp ord -5q - 3q bb4e4 mp snap - - -h.) (q bb2 p tasto gs2d2 pp tasto h cs2 pppp tasto e fs2c3 mp pizz cs4 p stacc d2 pp stacc d2 snap) (-e cs3b2 pp tasto g2 mp snap - q fs2 pp pizz -) (-h.) (-w.) (-w.) (q b4 ppp ponte e4 p ponte f2 pp tasto eb2 ppp tasto h d2 pppp tasto) (5h d4c4 leg fs4c4 leg eb4 leg p leg cs4 mf leg bb3a2 leg a3 p leg g3cs3 mp leg d3e2 p leg cs2 leg h c2 pppp tasto) (5h cs2g2 leg a2eb2 leg fs2 p leg g2 leg gs2 mp leg e gs2a3 p stacc f3 snap pp pizz b4 p stacc g4 pp snap bb4e4 p stacc b4 pp snap bb4a4 snap))
2. ## score LessThanEigth for String Quartet and Clarinet

Great piece Stephane, I am sure will inspire others and help with coding in Opusmodus - good score indeed :-)
3. ## Vector to Pitch

The cautionary accidentals (composer intent) coming soon.

Students To qualify for the student discount, you must be currently enrolled in a school and have valid identification. Expired identification will not be accepted. For fixed or permanent license, we will need a copy of the identification emailed to sales@opusmodus.com as a small image (maximum size 500 pixels wide). Photos may be taken by camera, phone, or computer. Teachers To qualify for the teacher discount, you must hold a higher education faculty credentials. You will need to send a copy of the credentials, identification, or a letter from a department head. E-mail your teacher credentials/ID to sales@opusmodus.com as a small image (maximum size 500 pixels wide). Photos may be taken by camera, phone, or computer.
5. ## Vector to Length

Initialise random seed to all functions which may use random seed. (init-seed 347) The GEN-SINE function generates a sequence of vectors that describe and simulate the characteristics of a sine wave. (setf sine1 (gen-sine 60 2 0.6)) (setf sine2 (gen-sine 60 3 0.3)) (setf sine3 (gen-sine 60 4 1.3)) (setf sine4 (gen-sine 60 5 0.4)) (setf sine5 (gen-sine 60 6 0.5)) (setf sine6 (gen-sine 60 7 1.6)) (setf sine7 (gen-sine 60 8 0.7)) (setf sine8 (gen-sine 60 9 0.8)) (setf sine9 (gen-sine 60 4 0.9)) Generate a graph from the data provided in these nine sine sequences. (list-plot (list sine1 sine2 sine3 sine4 sine5 sine6 sine7 sine8 sine9) :zero-based t :point-radius 2 :join-points t) Conversion process from vector to length in a given note-length values. (setf span (rnd-sample 24 '(q q. h))) (setf dur1 (length-span span (vector-to-length '1/32 1 1 sine1))) (setf dur2 (length-span span (vector-to-length '1/32 1 1 sine2))) (setf dur3 (length-span span (vector-to-length '1/16 1 1 sine3))) (setf dur4 (length-span span (vector-to-length '1/32 1 1 sine4))) (setf dur5 (length-span span (vector-to-length '1/16 1 1 sine5))) (setf dur6 (length-span span (vector-to-length '1/32 1 3 sine6))) (setf dur7 (length-span span (vector-to-length '1/32 1 5 sine7))) (setf dur8 (length-span span (vector-to-length '1/32 1 7 sine8))) (setf dur9 (length-span span (vector-to-length '1/16 1 5 sine9))) Conversion process from vector to pitch in a given ambitus. Combining pitches to chords. (setf pitch1a (vector-to-pitch '(g1 bb3) sine6)) (setf pitch2a (vector-to-pitch '(gs1 b3) sine7)) (setf pitch3a (vector-to-pitch '(a1 fs3) sine8)) (setf pitch4a (vector-to-pitch '(ab1 b3) sine9)) (setf pitch5a (vector-to-pitch '(c1 bb3) sine1)) (setf comp6 (gen-combine pitch1a pitch2a)) (setf comp7 (gen-combine pitch1a pitch2a pitch3a)) (setf comp8 (gen-combine pitch1a pitch2a pitch3a pitch4a)) (setf comp9 (gen-combine pitch1a pitch2a pitch3a pitch4a pitch5a)) (setf pitch1 (vector-to-pitch '(g2 gs6) sine1)) (setf pitch2 (vector-to-pitch '(gs2 a6) sine2)) (setf pitch3 (vector-to-pitch '(a2 b6) sine3)) (setf pitch4 (vector-to-pitch '(ab2 d6) sine4)) (setf pitch5 (vector-to-pitch '(c2 gs6) sine5)) (setf pitch6 (chord-pitch-unique (chordize-list comp6))) (setf pitch7 (chord-pitch-unique (chordize-list comp7))) (setf pitch8 (chord-pitch-unique (chordize-list comp8))) (setf pitch9 (chord-pitch-unique (chordize-list comp9))) Generating length lists with the help of RND-SAMPLE function. (setf dyn '((f f f f) (p p p p) (mf mf mf mf) (ff ff ff ff) (mp mp mp mp))) (setf dyn1 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn2 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn3 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn4 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn5 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn6 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn7 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn8 (rnd-sample (length (flatten dur1)) dyn)) (setf dyn9 (rnd-sample (length (flatten dur1)) dyn)) Making OMN lists. (setf p1 (make-omn :length dur1 :pitch pitch1 :velocity dyn1)) (setf p2 (make-omn :length dur2 :pitch pitch2 :velocity dyn2)) (setf p3 (make-omn :length dur3 :pitch pitch3 :velocity dyn3)) (setf p4 (make-omn :length dur4 :pitch pitch4 :velocity dyn4)) (setf p5 (make-omn :length dur5 :pitch pitch5 :velocity dyn5)) (setf p6 (make-omn :length dur6 :pitch pitch6 :velocity dyn6)) (setf p7 (make-omn :length dur7 :pitch pitch7 :velocity dyn7)) (setf p8 (make-omn :length dur8 :pitch pitch8 :velocity dyn8)) (setf p9 (make-omn :length dur9 :pitch pitch9 :velocity dyn9)) Random selection of variants. (setf var1 (pitch-variant p1 :variant '?)) (setf var2 (pitch-variant p2 :variant '?)) (setf var3 (pitch-variant p3 :variant '?)) (setf var4 (pitch-variant p4 :variant '?)) (setf var5 (pitch-variant p5 :variant '?)) (setf var6 (pitch-variant p6 :variant '?)) (setf var7 (pitch-variant p7 :variant '?)) (setf var8 (pitch-variant p8 :variant '?)) (setf var9 (pitch-variant p9 :variant '?)) Transposition. (setf transp (library '12-tone-row 'berg 'r08)) (setf part1 (pitch-transpose-start transp var1)) (setf part2 (pitch-transpose-start transp var2)) (setf part3 (pitch-transpose-start transp var3)) (setf part4 (pitch-transpose-start transp var4)) (setf part5 (pitch-transpose-start transp var5)) (setf part6 (pitch-transpose-start transp var6)) (setf part7 (pitch-transpose-start transp var7)) (setf part8 (pitch-transpose-start transp var8)) (setf part9 (pitch-transpose-start transp var9)) One bar pause. (setf pause (gen-pause (first part9))) Assembling all parts with :start and :end sequence. (setf rh (ambitus-chord 13 (ambitus '(0 36) (assemble-subseq '((pause :start 1 :end 1) (pause :start 1 :end 1) (pause :start 1 :end 1) (part2 :start 2 :end 3) (part2 :start 12 :end 12) (part2 :start 3 :end 8) (part2 :start 4 :end 9) (part3 :start 4 :end 4) (part3 :start 5 :end 5) (part3 :start 8 :end 12) (part3 :start 2 :end 3) (part4 :start 1 :end 4) (part4 :start 12 :end 12) (part4 :start 1 :end 2) (part4 :start 4 :end 7) (part4 :start 11 :end 12) (part5 :start 10 :end 12) (part5 :start 8 :end 9) (part5 :start 9 :end 9)))))) (setf lh (ambitus-chord 13 (ambitus '(-32 -1) (assemble-subseq '((part9 :start 1 :end 1) (part6 :start 1 :end 2) (part1 :start 2 :end 3) (part7 :start 3 :end 4) (part2 :start 4 :end 5) (part7 :start 4 :end 6) (part3 :start 5 :end 7) (part8 :start 6 :end 8) (part1 :start 7 :end 9) (part8 :start 8 :end 10) (part1 :start 9 :end 11) (part9 :start 10 :end 11) (part1 :start 11 :end 12) (part9 :start 12 :end 13) (part2 :start 13 :end 15) (part9 :start 14 :end 15) (part2 :start 15 :end 16) (part9 :start 16 :end 17) (part2 :start 17 :end 18) (part9 :start 18 :end 19) (part3 :start 19 :end 22)))))) Defining a score. (def-score assemble-subsubseq (:composer "OPMO" :copyright "Opusmodus" :key-signature 'atonal :time-signature (get-time-signature lh :group '((1 1) (1 1 1) (1 1 1 1))) :tempo 72 :layout (piano-solo-layout 'rh 'lh)) (rh :omn rh :port 0 :sound 'gm :channel 1 :program 0) (lh :omn lh))
6. ## Vector to Pitch

An example of algorithmic composition in a few simple steps. Initialise random seed to all functions which may use random seed. (init-seed 8975) Six lists (bars) of note-length values. (setf len '((s s q s) (s q -s s) (s s s s) (s s -s s) (s e s) (s -s e))) The GEN-SINE function generates a sequence of vectors that describe and simulate the characteristics of a sine wave. (setf sine1 (gen-sine 12 2 0.3)) (setf sine2 (gen-sine 24 3 0.4)) (setf sine3 (gen-sine 30 4 0.5)) (setf sine4 (gen-sine 36 5 0.6)) Generate a graph from the data provided in these four sine sequences. (list-plot (list sine1 sine2 sine3 sine4) :zero-based t :point-radius 2 :join-points t) Conversion process from vector to pitch in a given ambitus. (setf pitch1 (vector-to-pitch '(g3 g6) sine1)) (setf pitch2 (vector-to-pitch '(gs3 g6) sine2)) (setf pitch3 (vector-to-pitch '(a3 g6) sine3)) (setf pitch4 (vector-to-pitch '(as3 g6) sine4)) Combining pitches to chords. (setf chords2 (chordize-list (gen-combine pitch1 pitch2))) (setf chords3 (chordize-list (gen-combine pitch1 pitch2 pitch3))) (setf chords4 (chordize-list (gen-combine pitch1 pitch2 pitch3 pitch4))) (setf chords (chord-pitch-unique (flatten (list chords2 chords3 chords4)))) Generating length lists with the help of RND-SAMPLE and RND-ORDER functions. (setf dur1 (rnd-order (rnd-sample 6 (rnd-sample 4 len)))) (setf dur2 (rnd-order (rnd-sample 4 (rnd-sample 4 len)))) (setf dur3 (rnd-order (rnd-sample 2 (rnd-sample 4 len)))) (setf dur4 (rnd-order (rnd-sample 4 (rnd-sample 4 len)))) (setf dur5 (rnd-order (rnd-sample 10 (rnd-sample 4 len)))) Generating velocity lists with the help of RND-SAMPLE function. (setf dyn1 '(p mp mf f ff)) (setf dyn2 (rnd-sample 6 dyn1)) (setf dyn3 (rnd-sample 12 dyn1)) (setf dyn4 (rnd-sample 24 dyn1)) (setf dyn5 (rnd-sample 36 dyn1)) Making OMN lists. (setf m1 (make-omn :length dur1 :pitch pitch1 :velocity dyn1)) (setf m2 (make-omn :length dur2 :pitch pitch2 :velocity dyn2)) (setf m3 (make-omn :length dur3 :pitch pitch3 :velocity dyn3)) (setf m4 (make-omn :length dur4 :pitch pitch4 :velocity dyn4)) (setf m5 (make-omn :length dur5 :pitch chords :velocity dyn5)) Random selection of variants. (setf part1 (pitch-variant m1 :variant '?)) (setf part2 (pitch-variant m2 :variant '?)) (setf part3 (pitch-variant m3 :variant '?)) (setf part4 (pitch-variant m4 :variant '?)) (setf part5 (pitch-variant m5 :variant '?)) A pause of 1 quarter. (setf pause '(-1/4)) Assembling a sequence. (setf result (assemble-seq part1 pause part2 pause part3 pause part4 pause part3 pause part2 part1 part5)) Finally, defining a score with GRAND-LAYOUT instrument - direct conversion to standard notation. (def-score wave-to-pitch (:composer "OPMO" :copyright "Opusmodus" :key-signature 'atonal :time-signature (get-time-signature result) :tempo 108 :layout (grand-layout 'piano)) (piano :omn result :sound 'gm :channel 1 :program 0))
7. ## Chorale cantata BWV 5

J.S. Bach, Chorale cantata, BWV 5 Four voices. (setf soprano '((-h. q g4) (q g4 a4 bb4 c5) (h. d5 fermata q d5) (q d5 c5 bb4 c5) (h. a4 fermata q a4) (q bb4 c5 d5 d5) (h c5 q d5 fermata d5) (q bb4 c5 d5 d5) (h c5 q bb4 fermata d5) (q f5 d5 d5 d5) (h c5 q c5 fermata c5) (q d5 c5 bb4 c5) (h a4 q g4 fermata))) (setf alto '((-h. q d4) (q eb4 e e4 gb4 q g4 g4) (h. gb4 fermata q gb4) (q g4 e g4 gb4 q g4 a4) (h. gb4 fermata q gb4) (q g4 a4 bb4 bb4) (q bb4 e a4 g4 q a4 fermata gb4) (q d4 c4 f4 g4) (q g4 e f4 eb4 q d4 fermata f4) (q f4 e f4 g4 q a4 g4) (e g4 f4 g4 e4 q f4 fermata e f4 eb4) (q d4 e e4 gb4 q g4 g4) (q g4 gb4 d4 fermata))) (setf tenor '((-h. q bb3) (q c4 c4 d4 eb4) (h. a3 fermata q a3) (q bb3 c4 d4 eb4) (h. d4 fermata q d4) (q d4 eb4 f4 f4) (q g4 e f4 eb4 q d4 fermata a3) (q bb3 e f4 eb4 d4 c4 q bb3) (q bb3 a3 f3 fermata bb3) (q c4 d4 e d4 c4 q bb3) (e bb3 a3 bb3 g3 q a3 fermata a3) (q bb3 a3 e g3 bb3 q eb4) (e d4 s c4 bb3 q c4 b3 fermata))) (setf bass '((-h. q g3) (e c4 bb3 q a3 e g3 f3 q eb3) (h. d3 fermata q c3) (q bb2 a2 g2 c3) (h. d3 fermata q d3) (q g3 e f3 eb3 d3 c3 q bb2) (q eb3 f3 gb3 fermata d3) (q g3 a3 e bb3 a3 g3 f3) (q eb3 f3 bb2 fermata bb3) (q a3 bb3 gb3 e g3 f3) (q e3 c3 f3 fermata f3) (q bb2 e c3 d3 q eb3 e d3 c3) (h d3 q g2 fermata)))DEF-SCORE function defines a score. (def-score bach-bwv-0005 (:title "Bach, BWV-0005" :composer "J. S. Bach" :key-signature '(g min) :time-signature '(4 4) :tempo 96 :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass)) (soprano :omn soprano :channel 1 :sound 'gm :program 0) (alto :omn alto :channel 2) (tenor :omn tenor :channel 3) (bass :omn bass :channel 4))
8. ## Bach in OMN

An example of the direct conversion of OMN score to the standard notation.J.S. Bach, Goldberg-Variationen, Variation 18 a 1 Clav. Right hand (1st voices).(setf rh1 '((repeat (-h g5 tie) (h g5 fs5 tie) (q fs5 e g5 fs5 h e5 tie) (q e5 e d5 cs5 h d5) (-h e5 tie) (q e5 e d5 e5 h fs5 tie) (q fs5 e a5 g5 h a5 tie) (e a5 g5 a5 fs5 h g5) (-h e5 tie) (h e5 d5 tie) (q d5 e e5 fs5 h g5 tie) (e g5 fs5 g5 e5 h fs5 tie) (q fs5 fs5 h e5 tie) (q e5 e5 h d5 tie) (q d5 g5 e cs5 d5 q e5 tie) (h e5 d5)) (-h a5 tie) (h a5 g5 tie) (q g5 e a5 b5 h c6 tie) (e c6 b5 q c6 h b5) (-h e5 tie) (h e5 q ds5 e5) (h. fs5 e e5 fs5) (h_e g5 e fs5 e5 d5) (q c5 -q h a5 tie) (h a5 g5 tie) (q g5 e a5 b5 h c6 tie) (e c6 b5 c6 a5 h b5 tie) (q b5 b5 h a5 tie) (q a5 a5 h g5 tie) (q g5 c6 e fs5 g5 q a5 tie) (h a5 g5))) Right hand (2nd voice). (setf rh2 '((repeat (w b4) (h. a4 e b4 a4) (h. g4 e fs4 e4) (h fs4 -h) (h. g4 e fs4 g4) (h. a4 e c5 b4) (h_e c5 e b4 c5 a4) (h b4 -) (w g4) (h. fs4 e g4 a4) (h_e b4 e a4 b4 g4) (h. a4 q) (h. g4 q) (h. fs4 q b4) (e e4 fs4 h. g4) (w fs4)) (w c5) (h. b4 e c5 d5) (h_e e5 e ds5 q e5) (w ds5) (w g4) (q fs4 g4 h a4 tie) (q a4 e g4 a4 h b4 tie) (e b4 a4 g4 fs4 h e4) (w c5) (h. b4 e c5 d5) (h_e e5 e d5 e5 c5) (h. d5 q) (h. c5 q) (h. b4 q e5) (e a4 b4 h. c5) (w b4)))Left hand (setf lh '((repeat (-q e g3 a3 q b3 c4) (q d4 d3 h d4) (-q e e4 d4 q cs4 a3) (q d4 d3 d4 c4) (q b3 mordent1 e a3 b3 q c4 c3) (q c4 e b3 c4 q d4 a3) (q d3 e fs3 e3 q fs3 d3) (q g3 d3 g2 e g3 a3) (q b3 e a3 b3 q cs4 e b3 cs4) (q d4 cs4 b3 a3) (q g3 fs3 e3 d3) (q cs3 e b2 cs3 q d3 e cs3 d3) (q b2 e a2 b2 q cs3 e b2 cs3) (q as2 e gs2 as2 b2 a2 g2 fs2) (q g2 e2 a2 a1) (q d2 a2 h d3)) (-q e d3 e3 q fs3 d3) (q g3 g2 g3 e a3 b3) (q c4 b3 a3 e g3 a3) (q. b3 e a3 g3 fs3 e3 ds3) (q e3 e e4 d4 q c4 b3) (q a3 e b3 c4 q fs3 e g3 a3) (q ds3 e e3 fs3 q b2 e cs3 ds3) (q e3 e e4 ds4 q e4 e fs4 g4) (q a4 e g4 a4 q fs4 e e4 fs4) (q g4 fs4 e4 d4) (q c4 b3 a3 g3) (q fs3 e e3 fs3 q g3 e fs3 g3) (q e3 e d3 e3 q fs3 e e3 fs3) (q ds3 e cs3 ds3 e3 d3 c3 b2) (q c3 a2 d3 d2) (q g2 d3 h g3)))Defining a score with PIANO-SOLO-LAYOUT instrument. (def-score voices (:title "Goldberg-Variationen" :subtitle "Variation 18 a 1 Clav." :composer "J.S. Bach" :key-signature '(c maj) :time-signature '(2 2) :tempo '("Canone alla Sesta" q 182) :layout (piano-solo-layout '(pno-rh1 pno-rh2) 'pno-lh)) (pno-rh1 :omn rh1 :channel 1 :sound 'gm :program 0) (pno-rh2 :omn rh2) (pno-lh :omn lh))

Thank you for the report, should be fine now.

Yes, there was a permission error with the downloads page and it is fixed now. Once the software is installed this is when the demo period begins. As to now we didn't have any problems with the trial periods.
11. ## Sound Set: Vienna Instruments - Upright Bass

This sound-set below is part of the Opusmodus system and is used here to demonstrate what the group will be focussing on - creating new sound sets for old and new samples, synthesisers or any other software. Opusmodus can control any system that accepts MIDI CC. We have great results with Reaktor and Kyma system. ;;;--------------------------------------------------------- ;;; VIENNA INSTRUMENTS - UPRIGHT BASS ;;;--------------------------------------------------------- ;; Patches, keyswitches and controllers change events. (def-sound-set VSL-Upright :programs (:group Short-and-Long-Notes pizz-staccato (cc1 0 :key f7 :key c1 :key a0) pizz-sustain-novib (cc1 0 :key f7 :key cs1 :key a0) pizz-snap (cc1 0 :key f7 :key d1 :key a0) pizz-portato-short (cc1 64 :key f7 :key c1 :key a0) pizz-sustain-vib-light (cc1 64 :key f7 :key cs1 :key a0) pizz-damp (cc1 64 :key f7 :key d1 :key a0) pizz-portato-long (cc1 127 :key f7 :key c1 :key a0) pizz-sustain-vib (cc1 127 :key f7 :key cs1 :key a0) pizz-muted (cc1 127 :key f7 :key d1 :key a0) :group Legato-Performances pizz-perf-legato (cc1 0 :key e7 :key c1 :key a0) pizz-perf-legato-ghost (cc1 0 :key e7 :key cs1 :key a0) pizz-perf-gliss (cc1 64 :key e7 :key d1 :key a0) pizz-perf-gliss-slow (cc1 127 :key e7 :key c1 :key a0) :group Repetitions pizz-perf-rep-leg-novib (cc1 40 :key fs7 :key c1 :key a0) pizz-perf-rep-por-sl (cc1 40 :key fs7 :key cs1 :key a0) pizz-perf-rep-por-fa (cc1 40 :key fs7 :key d1 :key a0) pizz-perf-rep-leg-vib (cc1 80 :key fs7 :key c1 :key a0) :group Upbeats pizz-ub-a1-80 (cc1 0 :key g7 :key c1 :key a0) pizz-ub-a1-100 (cc1 0 :key g7 :key cs1 :key a0) pizz-ub-a1-120 (cc1 0 :key g7 :key d1 :key a0) pizz-ub-a1-140 (cc1 0 :key g7 :key ds1 :key a0) pizz-ub-a2-80 (cc1 64 :key g7 :key c1 :key a0) pizz-ub-a2-100 (cc1 64 :key g7 :key cs1 :key a0) pizz-ub-a2-120 (cc1 64 :key g7 :key d1 :key a0) pizz-ub-a2-140 (cc1 64 :key g7 :key ds1 :key a0) pizz-ub-a3-80 (cc1 127 :key g7 :key c1 :key a0) pizz-ub-a3-100 (cc1 127 :key g7 :key cs1 :key a0) pizz-ub-a3-120 (cc1 127 :key g7 :key d1 :key a0) pizz-ub-a3-140 (cc1 127 :key g7 :key ds1 :key a0) :group FX slides (:key gs7 :key c1 :key a0) finger-stop (:key gs7 :key cs1 :key a0) body-noises (:key gs7 :key d1 :key a0) arco-sustain-fx (:key gs7 :key ds1 :key a0) ) :controllers (:group Default-Settings Pitch 0 Velocity-XF 2 Volume 7 Pan 10 Expression 11 Reverb-Dry/Wet 14 Reverb-On/Off 15 Slot-XF 20 Start-Scaler 21 Master-Attack 22 Master-Release 23 Master-Filter 24 Delay-Scaler 25 Tuning-Scaler 26 Humanize 27 Velocity-XF-On-Off 28 Rsamp-On-Off 29 Dynamics-Scaler 30 :group Pedal Ped 64 :group Matrix cc1 1 ) )
12. ## Layout Examples - 4 voices

Four voices. (setf vox1 '(q d4 g4 a4 b4 a4 h. g4)) (setf vox2 '(q b3 e4 g4 g4 fs4 h. d4)) (setf vox3 '(q g3 b3 d4 d4 d4 h. b3)) (setf vox4 '(q g3 e3 d3 g3 d3 h. g2)) 1st layout: (def-score layout1 (:key-signature '(g maj) :time-signature '((1 1 1 1) 4) :tempo 85 :layout (list (treble-layout 'inst1) (treble-layout 'inst2) (treble-layout 'inst3) (treble-layout 'inst4))) (inst1 :omn vox1 :channel 1 :sound 'gm :program 0) (inst2 :omn vox2) (inst3 :omn vox3) (inst4 :omn vox4) ) 2nd layout: (def-score layout2 (:key-signature '(g maj) :time-signature '((1 1 1 1) 4) :tempo 85 :layout (list (treble-layout 'inst1) (treble-layout 'inst2) (tenor-layout 'inst3) (bass-layout 'inst4))) (inst1 :omn vox1 :channel 1 :sound 'gm :program 0) (inst2 :omn vox2) (inst3 :omn vox3) (inst4 :omn vox4) ) 3rd layout: (def-score layout3 (:key-signature '(g maj) :time-signature '((1 1 1 1) 4) :tempo 85 :layout (bracket-group (treble-layout 'inst1) (treble-layout 'inst2) (tenor-layout 'inst3) (bass-layout 'inst4))) (inst1 :omn vox1 :channel 1 :sound 'gm :program 0) (inst2 :omn vox2) (inst3 :omn vox3) (inst4 :omn vox4) ) 4th layout: (def-score layout4 (:key-signature '(g maj) :time-signature '((1 1 1 1) 4) :tempo 85 :layout (choir-satb-layout 'inst1 'inst2 'inst3 'inst4)) (inst1 :omn vox1 :channel 1 :sound 'gm :program 0) (inst2 :omn vox2) (inst3 :omn vox3) (inst4 :omn vox4) )
13. ## Assemble a sequence from OMN pieces

The ASSEMBLE-SEQ function is particularly useful when a composer has collected and named short pieces of omn script material and wishes create one from all the pieces. (setf vox1 '(q d4 g4 a4 b4 a4 h. g4)) (setf vox2 '(q b3 e e4 q g4 e fs4 g4 s fs4 e4 q fs4 h. d4)) (setf vox3 '(q g3 b3 d4 d4 e d4 c4 h. b3)) (setf vox4 '(q g3 e3 d3 g3 d3 h. g2)) Now we assemble a new motive: (assemble-seq (list vox1 vox2 (gen-retrograde vox2) vox1 vox4))
14. ## Difference between SET, SETQ, and SETF in Common Lisp?

This question is answered beautifully by Rainer Joswig on 'Stack Overflow' site. Difference between `set`, `setq`, and `setf` in Common Lisp? STACKOVERFLOW.COM What is the difference between "set", "setq", and "setf" in Common Lisp? (set 'mat '(c4 d4 e4)) (setq mat '(c4 d4 e4)) (setf mat '(c4 d4 e4))
15. ## example How to add a SEED into your own function

To add a SEED to your own function and make it work you need to follow three simple rules: Add keyword SEED into the function arguments. (rnd-seed seed) should be placed at the beginning of the function. Nested functions that use seed need to use a (seed) function and not a seed argument. Example: (defun rnd-number (n low high &key seed) (do-verbose ("rnd-number") (rnd-seed seed) (if (zerop n) nil (cons (round (+ low (rnd-round 0 (- high low) :seed (seed)))) (rnd-number (decf n) low high :seed (seed)))))) Each time we evaluate the expression we get a different result. (rnd-number 12 0 5) => (0 3 2 5 3 3 4 3 2 2 4 4) Adding seed to the expression will produce always the same result. (rnd-number 12 0 5 :seed 45) => (2 2 5 4 5 0 5 3 5 3 1 1)
16. ## Get Your Free 30-Day Demo version!

Download and start using the full version of the software right away. The 'Quick Start' will guide you and help you to get started! Please note: During the trial period each time you start the application you need to press the Demo button. Language: English, French, Italian and German. Requirements: Mac OS X 10.9 or higher. Go to Download page
×

• Lessons