# All Activity

1. Yesterday
2. Last week
3. ## rnd-walk in a pitchfield with specific interval-control

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; rnd-walk in a pitchfield - with interval-control ;;; ;;; this is a little function which does an rnd-walk in a special way ;;; the function is checking all possible interval-pairs first inside the pitchfield ;;; so that is on one hand all the time "inside" the pitchfield/sieve, but also only ;;; uses the :POSSIBLE-INTERVALS, so you could control the "interval-color" of the walk ;;; in an non-chromatic-pitchfield/sieve ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun enlarge-intervals (possible-intervals &key (octaves 2)) (let ((possible-intervals (append possible-intervals (loop repeat octaves for i = 12 then (incf i 12) append (x+b possible-intervals i))))) (append possible-intervals (neg! possible-intervals)))) ;(enlarge-intervals '(2 3 4)) ;;;;;;;;;;; (defun special-rnd-walk (n &key pitchfield startpitch possible-intervals (interval-octaves 2)) (let ((int-list (loop for i in pitchfield collect (list (pitch-to-midi i) (loop for x in pitchfield with int do (setf int (car (pitch-to-interval (list i x)))) when (/= int 0) collect int)))) (possible-intervals (enlarge-intervals possible-intervals :octaves interval-octaves))) (append (list startpitch) (midi-to-pitch (loop repeat n with int with pitch = (pitch-to-midi startpitch) do (setf int (rnd-pick (filter-preserve possible-intervals (cadr (assoc pitch int-list))))) when (null int) do (setf int (rnd-pick (cadr (assoc pitch int-list)))) collect (setf pitch (pitch-to-midi (cadr (interval-to-pitch (list int) :start (midi-to-pitch pitch)))))))))) ;;;;;;;;;;; EXAMPLES ;;; rnd-walk in a "chromatic-field" - as the most easiest example/way ;;; => so all possible-intervals could be used -> THE ORDINARY WAY... (special-rnd-walk 20 :startpitch 'cs4 :pitchfield '(gs3 a3 bb3 b3 c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4) :possible-intervals '(1 2 3)) ;;; BUT have a look to the next examples!!! ;;; rnd-walk in a PITCHFIELD -> the function is checking all possible interval-pairs inside the pitchfield ;;; so that the rnd-walk INSIDE the PITCHFIELD could be done with specific intervals (if they are inside the field) ;;; COMPARE THE RESULT with the PITCHFIELD!!! ;;; (setf pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6)) ;;; "interval-color" of the walk is made with :possible-intervals (special-rnd-walk 5 :startpitch 'ds4 :pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6) :possible-intervals '(1 2 3)) ; + octaves of this intervals (special-rnd-walk 10 :startpitch 'ds4 :pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6) :possible-intervals '(1 3 4 5) :interval-octaves 0) ;;; reduced interval-span (special-rnd-walk 10 :startpitch 'ds4 :pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6) :possible-intervals '(5 6 7)) ; + octaves of this intervals more examples -> SOUND ;;; rnd-versions so you will here the different interval-colors inside the pitchfield (setf seq (gen-sieve '(f3 fs6) '(4 2 1 1 1 2 4 7) :type :pitch)) ;(setf seq (gen-sieve '(f3 fs6) '(7 4 2 1 1 1 2 4) :type :pitch)) ;(setf seq '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6)) (setf pitchlist (special-rnd-walk (rnd-pick '(3 5 7 11)) :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals (rnd-pick '((1 2) (3 4) (5 6 7))) :interval-octaves 3)) (def-score intervals (:title "walk" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch pitchlist :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano)) ;;; rnd-walk in SIEVE only with intervals '(5 6 8) (setf seq (gen-sieve '((c4 g7) (c2 g7)) '((2 1 10) (3 5)) :type :pitch)) (setf pitchlist (special-rnd-walk 30 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(5 6 8))) (def-score intervals (:title "intervals" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch pitchlist :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano)) (setf seq (gen-sieve '((c2 g7) (c2 g7)) '((2 1 10) (3 5)) :type :pitch)) ;;; EXAMPLE with changes -> all inside the same SIEVE (setf pitchlist (append (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(1)) ; minor second (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(2)) ; major second (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(3 4)) ;thirds (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(5 7)))) ; fourth-fifth (def-score intervals (:title "intervals" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch pitchlist :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano))
4. ## OMN Examples

Play and display snippets in Opusmodus Place the mouse cursor at the end of each expression and press ⌘1 for audition and notation, ⌘2 for audition or ⌘3 for notation. You can stop audition at anytime by pressing ⌘ESC keys. Contents G. Ph. Telemann, 12 Fantasie per clavicembalo TWV 33, n.1, 1732 D. Scarlatti, Sonata B-Dur, 1736 F. Chopin, Etudes, Op. 10, No. 5, 1833 J. S. Bach, Brandenburg Concerto No.4 in G major, BWV 1049, 1720 I. Strawinsky, Petruschka, 1911/21 L. Janáček, In the Mists, 1914 J. Podrazik, Piano Study No.3, 2013 J. S. Bach, Goldberg-Variationen, Variato 18 a 1 Clav., 1741 M. Reger, Aus meinem Tagebuch, I, 3, 1904/12 K. Stockhausen, Mantra für 2 Pianisten, 1970 B. Smetana, Aus meinem Leben, Streichquartett e-Moll, 1876 Opusmodus, Algorithmic, 2014 L. v. Beethoven, op. 59, No.1, Finale S. Prokofiev, Peter and the Wolf, op.67 A. Bruckner, Symphony no.9, d-minor J. Podrazik, Kritiken Nostalgia, 2004 J. S. Bach, BWV 639, Orgelbüchlein J. Cesaris, Bonté biauté, 1420 C. Debussy, Prélude à l’après-midi d’un faune, 1892-94 N. Paganini, Violinkonzert Es-Dur, op. 6, 1812-18 N. A. Rimski-Korsakow, Scheherazade, op. 35, 1888 W. A. Mozart, Variationen KV 265 A. Dvořák, Violinkonzert a-Moll, op 53, 1882 L. v. Beethoven, Sonate op. 2, Nr. 1, f-Moll, 1795 G. F. Kaufmann, 1733 R. Schumann, Davidsbündlertänze, op. 6, 1837 L. v. Beethoven, Sturm-Sonate, op 31 2, 1802 Opusmodus, 2014 J. S. Bach, Goldberg-Variationen, Variatio 7, 1741 Fr. Couperin, Pieces de Clavecin, 1713 C. F. Pollarolo, II Farmando, 1699 H. Berlioz, Symphonie fantastique, op14, 1830 J. S. Bach, Brandenburgische Konzerte, No. 2, 1721 G. F. Handel, Orgelkonzert Nr. 4, F-Dur, 1. Satz, 1738 J. Haydn, Die Schöpfung, 1798 J. S. Bach, Goldberg-Variationen, Aria, 1741 G. Meyerbeer, Les Huguenots, 1836 L. v. Beethoven, Streichquartett F-Dur, op. 135, 1826 Dialog-Lauda, anonym, 1577 E. Gould, Behind Bars, Woodwind and Brass, p. 259-260, 2011 E. Gould, Behind Bars, Woodwind and Brass, p.247, 2011 A. Webern Satz für Streichtrio, 1925 E. Gould, Behind Bars, p.405, 2011 E. Gould, Behind Bars, p.405, 2011 E. Gould, Behind Bars, p.407, 2011 A. Webern, Sechs Bagatellen für Streichquartett, op. 9, III, 1913 A. Webern, Streichtrio, op. 20, 1927 C. Debussy, La Mer, 1905 A. Schönberg, Streichtrio, 1947 A. Webern, Sechs Bagatellen für Streichquartett, 1913 E. Elgar, Symphony No.1, 1907 N. Morgan, Matins for solo flute J. S. Bach, Sechs Suiten Sonaten fuer Violoncello solo, Suite I, Preludium, 1722 G. Ph. Telemann, 12 Fantasie per clavicembalo TWV 33, n.1, 1732 '((s a4 d5 fs4 d5 g4 d5) (s a4 d5 fs4 d5 g4 d5) (s a4 d5 cs5 b4 a4 g4) (s fs4 d4 e4 c4 e d4)) D. Scarlatti, Sonata B-Dur, 1736 '((e e5 3e g5 bb4 g4 e a4) (3e a5 c4 a4 e bb4 3e g5 bb4 g4) (s a4 c6 c6 a5 a5 f5) (s f5 d5 d5 c5 d5 bb5)) F. Chopin, Etudes, Op. 10, No. 5, 1833 '((3e gb6 bb6 db6 gb6 eb6 gb6 db6 gb6 bb5 db6 gb5 bb5) (3e gb5 bb5 db5 gb5 eb5 gb5 db5 gb5 bb4 db5 gb4 bb4) (3e db4 db5 ab4 db5 ab4 ab5 ab4 ab5 eb5 ab5 eb5 eb6) (3e eb5 eb6 ab5 eb6 ab5 ab6 ab5 ab6 db6 ab6 db6 db7)) J. S. Bach, Brandenburg Concerto No.4 in G major, BWV 1049, 1720 '((e g5g3 g5g3 fs5fs3) (e e5e3 g5g3 e5e3) (e a4a2 a5a3 g5g3) (e fs5fs3 a5a3 fs5fs3) (e b4b2 b5b3 a5a3) (e g5g3 b5b3 g5g3) (e e5e3 e6e4 d6d4) (s cs6cs4 e6e4 e6e4 cs6cs4 cs6cs4 a5a3) (s a5a3 cs6cs4 cs6cs4 a5a3 a5a3 fs5fs3) (s fs5fs3 a5a3 a5a3 fs5fs3 fs5fs3 d5d3) (e d5d3 -q) (e a4a2 -q) (e d4d2 -q)) I. Strawinsky, Petruschka, 1911/21 '((s d5f5b5 f e5g5c6 e f5a5d6 s g5b5e6 f5a5d6 e5g5c6 d5f5b5) (e c5e5a5 c5e5a5 q d5f5b5 marc) (s d5f5b5 e5g5c6 f5a5d6 g5b5e6 e f5a5d6 s e5g5c6 d5f5b5) (e c5e5a5 c5e5a5 q d5f5b5 marc)) L. Janáček, In the Mists, 1914 '((t cs5 pp< bs4 < cs5 < dn5 mp> cs5 > bn4 > gs4 > es4 pp -s fermata) (t gs4 fss4 gs4 an4 gs4 fss4 en4 cs4 -s fermata)) J. Podrazik, Piano Study No.3, 2013 '((e b6as7d7cs7 ff a6as7 p b6c6b5b4as5 mp e5f4b4a3 ffff s. ds3cs3c4b3 ff t c4fs3as2b2 mp) (3e= ds1a0gs1as1 mf a1gs1d1cs2d2ds2 ffff tie 3s a1gs1d1cs2d2ds2 ffff 3e d4c4 mp s b4f5a4as4d4ds4 ffff e cs2g1) (3h d1c1b0as0 pp as0c1fs1f1e1 b2cs3c4cs4 mf 3q d4cs4ds5e4fs4 mp f7e6 c6b5fs5c5e5as4 mf)) J. S. Bach, Goldberg-Variationen, Variato 18 a 1 Clav., 1741 '((-h q g5 tie) (h. g5) (h. fs5) (e g5 fs5 h e5 tie) (q e5 e d5 cs5 q d5 tie) (q d5 -h)) M. Reger, Aus meinem Tagebuch, I, 3, 1904/12 '((q d4f4bb4d5 f< leg c4eb4a4c5 < leg bb3d4g4bb4 < leg e c4eb4a4c5 < leg d4f4ab4d5 ff> leg) (q f4ab4d5f5 > leg e4g4bb4e5 > leg h fs4a4d5 mf) (q c4ds4a4 p< leg bb3e4g4 < leg b3d4fs4 f leg e3g3cs4 > leg) (h d3fs3d4 pp)) K. Stockhausen, Mantra für 2 Pianisten, 1970 '(t a3 p stacc a3 stacc a3 stacc a3 tie e a3 q... b3 t f h. gs4 mp (acc e e4 p f4 e4 d4) w e4) B. Smetana, Aus meinem Leben, Streichquartett e-Moll, 1876 '((e b4 f) (w b4 sf leg) (q e4 marc+stacc+espr - - -e fs4 stacc) (w g4 sf leg) (q b3 stacc+marc - - -e ds4 stacc) (h e4 sf marc+leg q g3 stacc+marc -e a3 stacc) (h b3 sf leg q e3 stacc+marc -e fs3 stacc) ((leg q g3 marc e e3 -s fs3 ten))) Opusmodus, Algorithmic, 2014 '((s cs5 p g6 mp mf -) (s cs5 f e g3 ff s p) (s cs5 mp g6 mf f -) (-s cs5 ff e g3 p) (s g3 mp - e cs5 mf) (s g6 f ff e cs5 p) (s g3 mp mf e cs5 f) (s g6 ff p cs5 mp g3 mf) (e g3 f s cs5 ff g6 p) (e g6 mp -s cs5 mf) (e g3 f -s g3 ff) (s cs5 p e g6 mp s mf)) L. v. Beethoven, op. 59, No.1, Finale '(((leg q d3 e c3 s d3 e3)) ((stacc e f3 f3 g3 g3 p)) (q a3 leg e c4 s stacc bb3 stacc) ((leg q a3 < e. c4 mp s bb3 >)) ((leg q a3 p e g3 s a3 e3)) ((stacc e f3 d3 cs3 a2)) ((stacc e d3 f3 e3 a3))) S. Prokofiev, Peter and the Wolf, op.67 '(h g2bb2d3 mp marc (leg s d3g3bb3 eb3fs3a3 d3g3bb3 eb3fs3a3 e d3g3bb3) d3g3bb3 g3bb3d4 ten eb3a3cs4 ten g3bb3d4 ten g3bb3 ten (acc e c3) h f3c4 marc) A. Bruckner, Symphony no.9, d-minor '(h a5 mart h_q a4 mart q g5 marc f5 marc e5 marc h... eb5 mart s d4 marc w eb4 mart) J. Podrazik, Kritiken Nostalgia, 2004 '(((marc e e3 mp eb4 fs3 c3) s g3 stacc e fs2 < marc (stacc s g2 < 5q gs2 < d3 < cs4 < e4 < d3 <)) (e c3 < marc gb2 < marc (stacc 5q c3 < d3 < c3 < ab2 < g3 < d3 < cs4 < eb4 < a3 < bb2 < d3 < a2 < b2 < bb2 < c4 mf))) J. S. Bach, BWV 639, Orgelbüchlein '((s g5 a5 g5 a5 e. a5 tr2-x t g5 a5 q b5 comma e. s c6) (q d6 s c6 e b5 s a5 q g5 e a5 b5) (qs c6 t d6 e6 s c6 b5 q b5 comma)) J. Cesaris, Bonté biauté, 1420 '((q. ab4 bb4) (q. ab4 g4) (q. f4 e4) (q f4 e g4 q f4 e e4) (h. f4 fermata)) C. Debussy, Prélude à l’après-midi d’un faune, 1892-94 '((leg h cs5 tie s s b4 3e as4 a4 gs4 e. g4 s a4 b4 c5)) N. Paganini, Violinkonzert Es-Dur, op. 6, 1812-18 '((q e5 leg e fs5 leg gs5 q a5 ten cs6 ten) (h cs6 leg q b5 e d6 leg cs6 leg) (q a5 cs6 marc+leg gs5 cs6 leg) (h. fs5)) N. A. Rimski-Korsakow, Scheherazade, op. 35, 1888 (((leg h e5 tie e e5 3e d5 e5 d5 c5 d5 c5) (leg b4 c5 b4 a4 c5 e5 g5 fs5 e5))) W. A. Mozart, Variationen KV 265 '(e. c5 leg s g4 e. e5 leg s c5 e g5 q g5 e g5 c5g5a5 fp q c5f5a5 e e c5f5g5 fp q c5e5g5 e) A. Dvořák, Violinkonzert a-Moll, op 53, 1882 '((-q (acc e a3e4) h c5e5 f (leg 3q a4c5 ten b4d5 ten c5e5 ten)) ((acc e e4) h. c5e5 q e5) ((leg q d5 e. c5 t d5 c5) q b4 leg a4) (q gs4 cresc leg h e4 (leg 3q d4 f4 a4)) (q gs4 leg h e4 (leg 6q d4 f4 a4 d5 f5 a5 ff))) L. v. Beethoven, Sonate op. 2, Nr. 1, f-Moll, 1795 '((q c4 p) (q f4 ab4 c5 f5) ((leg q. ab5 3e g5 f5 e5 q f5) -) (q g4 c5 e5 g5) ((leg q. bb5 3e ab5 g5 f5 q g5) -) ((acc e c5 leg) q. ab5 3e g5 f5 e5 q f5 -) ((acc e c5 leg) q. bb5 3e ab5 g5 f5 q g5 -) (h c5f5ab5c6 arp e bb5 ab5 g5 f5) ((app s e5 leg f5 leg g5 leg) q f5 leg e5 -q fermata -)) G. F. Kaufmann, 1733 '((h d4 leg (-app e e4) h e4 (-app s d4 e4)) (h f4 g4 leg (-app e a4)) (h f4 (-app s e4 f4) h e4) (w d4)) R. Schumann, Davidsbündlertänze, op. 6, 1837 '((q d4fs4 arp) (q cs4e4g4 arp c4eb4fs4a4 arp bb3d4g4bb4 arp) (h a3d4fs4c5 arp q bb3d4g4bb4 arp)) L. v. Beethoven, Sturm-Sonate, op 31 2, 1802 '((-h cs2e2a2cs3e3a3 tie+arp) (h. cs2e2a2 fermata q cs3a3 stacc) ((stacc q d3a3 e3a3 f3a3 cs3a3))) Opusmodus, 2014 '(q c4 kgliss b5 kgliss c4 kgliss e c5 kgliss q cs4 kgliss b5 kgliss c4 kgliss cs5 kgliss f4 kgliss c5) J. S. Bach, Goldberg-Variationen, Variatio 7, 1741 '((q a4 t b4 leg cs5 leg d5 leg e5 leg e. fs5 s d5 e a4) (q b4 t cs5 leg d5 leg e5 leg fs5 leg e. g5 s e5 e b4) ((app. e b4) e. cs5 s a4 e a5 e. d5 s e5 e cs5) ((app e cs5) q d5 tie h)) Fr. Couperin, Pieces de Clavecin, 1713 '((q g5 lmordent2 e fs5 mordent1+leg (-app s e5 leg fs5)) (q g5 e b4 (app e b4) q c5 lmordent1 e d5) (q b4 mordent1 e a4 c5 lmordent1+leg e b4 mordent1) (q e5 lmordent2 (app s e5 leg fs5 leg) e g5 e. c5 mordent1 s d5 e b4 mordent1)) C. F. Pollarolo, II Farmando, 1699 '((-q e d5 a4 q d4 e d5 a4) (e fs4 d4 a4 d5 q cs5 fs5 trem-s) (q g4 trem-s e5 trem-s fs4 trem-s d5 trem-s) (q e4 trem-s cs5 trem-s e d4 s e4 fs4 g4 a4 b4 cs5) (e d5 g4 a4 a3) (q d4)) H. Berlioz, Symphonie fantastique, op14, 1830 '((q g4 (acc e b4) c5 q g4 (acc e ds5) e5) ((acc e ds5) q e5 (acc e e5) f5 q f5 tr2 e e5) (q e5 tr1 e d5 q d5 tr2 e c5)) J. S. Bach, Brandenburgische Konzerte, No. 2, 1721 '((e c5 g5 g5 tr2 s f5 g5) (e a5 s g5 f5 e g5 c6) (e g5 tr2 s e5 f5 e g5 tr2 s f5 g5)) G. F. Handel, Orgelkonzert Nr. 4, F-Dur, 1. Satz, 1738 '((q g5 lmordent2 lmordent2 q. tr2 e c6) (q. g5 tr2 e c6 q. g5 tr2 e c6) (s g5 fs5 g5 bb5)) J. Haydn, Die Schöpfung, 1798 '((e ab4 eb4 g4 ab4 eb4 g4 turn12+leg) (e ab4 eb4 b4 c5 ab4 e4)) J. S. Bach, Goldberg-Variationen, Aria, 1741 '((q d5 q d5 leg e. e5 lmordent2-t s f5) (e e5 (app s d5) e c5 (app. s b4) q. a4 e fs5 turn12) (t g5 leg s. fs5 t a5 leg s. g5 t fs5 leg s. e5 t d5 leg s. c5 (app. e c5) e. a5 s c5) (t b4 leg s. g4 e fs4 (app e fs4) h g4 lmordent1-t)) G. Meyerbeer, Les Huguenots, 1836 '((h bb3gb3 mp ttrem db4 q cb4ab3gb3 ttrem db3) (h bb3gb3 ttrem db4 q cb4ab3gb3 ttrem db3)) L. v. Beethoven, Streichquartett F-Dur, op. 135, 1826 ((q. g2g3 p e e2e3 < h ab2ab3 < c5 mp tie+cue) ((cue e c5 bb4 ab4 g4 f4 a4 c5 e5 q f5 comma) a4 f)) Dialog-Lauda, anonym, 1577 '((repeat (-q q. g4bb4d5 e g4bb4d5 q c4c5eb5) (q f4a4c5 g4bb4 h f4a4c5) (h bb3bb4 g3g4bb4) (h d4f4a4 q g4bb4 f4a4c5 tie) (q f4a4c5 g4bb4 h d4fs4a4) (end1 (h g4)) (end2 (h g4)))) E. Gould, Behind Bars, Woodwind and Brass, p. 259-260, 2011 '(s cs4 key-slap d5 -e s ab4 ten+key-slap f5 stacc) E. Gould, Behind Bars, Woodwind and Brass, p.247, 2011 '((h f4 trem+frull+tie e f4 trem-s a4) (-q h e4 trem+frull+tie) (e e4 ord d4 leg q a4)) A. Webern Satz für Streichtrio, 1925 '(-t. x d6 pp> stacc+arco 3s f4 > leg e5 > leg fs6 ppp -t. x cs4 p t. eb5 > leg x e4 ppp) E. Gould, Behind Bars, p.405, 2011 '(((stacc e a4 spicc+ubow s c5 dbow+leg b4 e a4 ubow s g4 dbow+leg f4 e e4 ubow))) E. Gould, Behind Bars, p.405, 2011 '((dbow e d5 = = = = = = =)) E. Gould, Behind Bars, p.407, 2011 '(((stacc s b3 legno-batt = e e d4 =)) (-h d5 arco-ord+leg) (h d4 -) (h_e c4 legno-tratto -e q f4 tie) (h f4 q d4 marc+pizz -)) A. Webern, Sechs Bagatellen für Streichquartett, op. 9, III, 1913 '((-3e c4 pp< pizz+stacc stacc -e - 5e f5 mf< arco a5 e6 fs6 bb6) (-e q. g5 < trem+harm) (q g5 trem+harm -s f4e5 ff stacc+pizz -e)) A. Webern, Streichtrio, op. 20, 1927 '((e bb4 p> leg s fs5 stacc fs5 stacc+pizz - (acc b3 arco+harm+leg) c4 pp c4 stacc+pizz - a5 p> arco+leg d6 stacc (acc cs5 leg) gs4 stacc -) (s cs5 pp stacc+pizz (acc a5 leg+arco) gs4 stacc -e -s gs4 p> stacc+ten (acc a5 leg) d6 stacc eb4 pp ten+pizz)) C. Debussy, La Mer, 1905 '(((leg q. f4 ff vib+sul4 e e4 sul4 q. ds4 sul4 e e4 sul4)) ((leg q. f4 mf sul4 e e4 sul4 3h ds4 < ten+sul4 fs4 < ten+sul4 gs4 < ten+sul4)) (q. f4 f leg+sul4 e e4 leg+sul4 q. ds4 leg+sul4 e e4 leg+sul4) (q. f4 > leg+sul4 e e4 > leg+sul4 3h eb4 > leg+stacc+sul4 d4 > leg+stacc+sul4 cs4 p leg+stacc+sul4)) A. Schönberg, Streichtrio, 1947 '((h db5bb5 ppp trem e db5bb5 - -q) (-h a3 pp ponte+tie) (h a3 fermata -h fermata)) A. Webern, Sechs Bagatellen für Streichquartett, 1913 '((-e -s (leg eb5 pp< ponte+con-sord 3e a6 < eb5 < a6 < leg)) ((leg 3e eb5 mp> a6 > eb5 >) -e -e) (-e -3e - (leg+stacc e4 ppp< < < p))) E. Elgar, Symphony No.1, 1907 '(((leg h b2 pp< 3h as2 > marc b2 > c3 > tie)) (3h c3 (leg cs3 mp e3 tie e3 > d3 c3 pp)) ((leg 3h b2 < marc as2 b2 c3 marc b2 c3 mp))) N. Morgan, Matins for solo flute '((-s db4 mp e. b4 tie) (s b4 db4 b4 e. g4 tie) (s g4 db4 b4 g4 gs5 b4 g4) (s gs5 b4 db4 e. g4 tie) (s g4 comma b4 db4) (s c6 eb4 e. a4)) J. S. Bach, Sechs Suiten Sonaten fuer Violoncello solo, Suite I, Preludium, 1722 '(((leg s g2 mf e3 b3 a3 b3 g3 fs3 g3) (leg e3 g3 dig2 fs3 g3 b2 > dig1 d3 > cs3 > b2 >)) ((leg s cs3 p dig3 g3 dig2 a3 sul g3 dig2 a3 g3 a3 g3) (leg cs3 g3 a3 g3 a3 g3 a3 g3)) ((leg s fs3 p< dig1 a3 < sul d4 < cs4 d4 mf a3 dig4 g3 a3 fs3) (leg a3 g3 a3 d3 > sul fs3 > dig3 e3 > d3 >)) ((leg s e2 p dig1 b2 g3 fs3 g3 b2 g3 b2) (leg e2 b2 g3 fs3 g3 b2 g3 b2)))
5. ## Prerequisite

An important prerequisite for composing music with the aid of computers is that the musical ideas of a composition must be communicated to the computer: OMN provides a notation for music, just as traditional notation does on paper. The immediate question then is: how does OMN work so a composer can express musical ideas? Like traditional notation, OMN expresses musical units such as rhythms and pitches. The Introduction to OMN The Language explains the four elements, indicating: Contents Expression Quote Functions Expression length as 'q (quarter), pitch as 'c4, velocity as mp, and articulation trem(olo), in that order. (q c4 mp trem) Such a musical unit is expressed between parenthesis to allow a clear distinction between other units: ((q c4 mp trem) (q c5 ff fermata)) Clearly, musical units can be sequenced: ((s a4 d5 fs4 d5 g4 d5) (s a4 d5 fs4 d5 g4 d5) (s a4 d5 cs5 b4 a4 g4) (s fs4 d4 e4 c4 e d4)) To make OMN (and Lisp) do something for you, you type an expression. An expression is simply a list, starting with an opening parenthesis, followed by an number of symbols and finally closed by a close parenthesis: (gen-retrograde '(s a4 d5 fs4 d5 g4 d5)) => (s d5 g4 d5 fs4 d5 a4) Quote The expression above is a list. The first element of the list is a function name. The rest of the list are arguments or values to which the function is applied. As Lisp will (try to) evaluate everything you type at it, there must be a way to tell Lisp to take expressions as data. To inform Lisp that you want an expression to be treated as data, quote that expression: '((s a4 d5 fs4 d5 g4 d5) (s a4 d5 fs4 d5 g4 d5) (s a4 d5 cs5 b4 a4 g4) (s fs4 d4 e4 c4 e d4)) It is just like a quotation in real life: in case we want to say that Paris is the capital of France, we use the word without quotes, but we do use quotes when saying that "paris" has five letters. So, if you want Lisp to see (q c5 ff tr2) as data, let the expression be preceded by a single quote: '(q c5 ff tr2) Now, lets try the expression (gen-integer 12) with and without a quote to see the difference. To do that we need to evaluate our expression. Place the curser after the last closing paranthesis ')' and press 'Enter' key. The evluation will display in the Listener panel. (gen-integer 12) ; returns list of numbers from 0 to 12 => (0 1 2 3 4 5 6 7 8 9 10 11 12) By the way, an arrow sign (=>) means evaluation, what is written after semicolon is a comment. '(gen-integer 12) ; is a list with 2 values => (gen-integer 12) Functions Here are two functions you will find useful during your work: setf If you want to process a sequence it is useful to assign that sequence to a variable. SETF allows us to do that. Here the variable is named 'song' and is assigned to a sequence of omn lists: (setf song '((3e gb6 bb6 db6 gb6 eb6 gb6 db6 gb6 bb5 db6 gb5 bb5) (3e gb5 bb5 db5 gb5 eb5 gb5 db5 gb5 bb4 db5 gb4 bb4) (3e db4 db5 ab4 db5 ab4 ab5 ab4 ab5 eb5 ab5 eb5 eb6) (3e eb5 eb6 ab5 eb6 ab5 ab6 ab5 ab6 db6 ab6 db6 db7))) After assignment, you can use 'song' to refer to its value. list The function LIST makes lists, as its name says. Lists can have any length, therefore the function LIST takes any number of arguments (data): (list '(q c4 mp tr2) '(q cs5 f fermata) '(q d6 ff tr2) '(q eb5 p fermata)) As we have assigned the variable named song. We might as well use it in our expression. (list song song) Next page OMN Examples
6. ## 4th Element - Attribute

The largest element of the OMN language is ATTRIBUTE. This term covers the many hundreds of symbols and words that describe musical expression. These terms are divided up very broadly within the OMN Glossary into two groupings: Articulations, Ornaments and Marks affecting all instrumental and vocal performance; Strings, Woodwind and Brass performance indicators being specific only to those instruments. Articulations cover Accents, Cesura, Fermata, Legato, Ties and Pedal. In musical performance these words, signs and symbols indicate a specific way of controlling the dynamic, intensity or duration of a musical event. This may be a single instance or covering a group of events. Ornaments are closely linked to articulation but usually include the addition of further pitches and subsequent changes in duration. Ornaments in OMN include Acciaccatura, Appoggiatura, Arpeggio, Glissando, Mordent, Trill, Tremolo, Turn and Two-note Tremolo. Ornamentation was once a required art for the musician to master with an expectation in the 17C and 18C that performers would freely embellish notated music as a matter of course, often going way beyond what was indicated in a score. In contemporary music ornamentation, whilst still using the symbols of Baroque performance practice, is most usually a precise and obligatory requirement seeking to give a special intensity to individual pitched events. Marks cover the many general performance indications found on a notated score that govern all instruments and voices. These include Repeat Signs and Rehearsal Marks. In OMN, performance instructions for woodwind and brass include the now common terms found in contemporary scores first collected together in Bruno Bartolozzi’s New Sounds for Woodwind. These may be linked through def-sound-set to available sample sets of woodwind and brass attack transients. For strings, performance instructions in OMN are comprehensively cited and in conjunction with a sample library can be used to trigger complex mixtures and layers of timbre type. Included within OMN are Arco, Pizz, Col Legno, Harmonics, Pizzicato, String, Sul Ponticello, Sul Tasto, Bowing Techniques and Vibrato. Contents Reset Strings Articulations Brass / Wind Handbell Accents Harmonic Muting Grace Note Arpeggio Trill Tremolo Two-Note-Tremolo Fermata Cesura Comma Mordent Turn Key Slap Harp Cue Notes Number Finger Repeat Ending Legato Tie Glissando Octave Shifts Pedals Hand User Attributes Example Reset norm ord nat non-trem sim ad-lib Strings Articulations arco-tasto tasto alto-tasto extr-tasto molto-tasto arco-ponte poco-ponte ponte molto-ponte da-ponte extr-ponte alto-ponte flaut spicc gettato ricochet jete crini arco arco-ord arco-lento tallone punta vib senza-vib con-vib vib-norm non-vib poco-vib molto-vib secco vib-ord legno legno-batt legno-tratto batt tasto-ponte tasto-ponte-tasto ponte-tasto-ponte ponte-tasto espr lh-pizz pizz pizz-nail snap pizz-ord pizz-trem slap lh-slap tap knock pizz-chit unis div tutti solo soli sulla-corda tutto-arco arm non-arm Bow ubow dbow Open String sul sul1 sul2 sul3 sul4 sul5 sulg suld sula sule sulc Brass / Wind flutter-tongue half-depressed-valves hit-on-mouthpiece insert-straight-mute-into-bell kiss mouthpiece-backwards mouthpiece-only play-and-sing silent-brass snap-with-a-finger-on-the-bell stop-mute-closed stop-mute-open stop-mute-wahwah-effect without-mouthpiece air-noise-f air-noise-h air-noise-k air-noise-p air-noise-s air-noise-sh air-noise-t without-tubings over-blow under-blow harsh-blow without-air low-noise-blow high-noise-blow finger-damp hum breathy Tongue frull tong1 tong2 tong3 tong-blocked tong-soft tong-hard Handbell hbmart Accents stacc stacs mart marc ten deta Harmonic harm harm2 Muting mute unmute open con-sord senza-sord via-sord Grace Note app app-h acc-h app. -app -app-h -acc-h -app. app-q acc-q -app-q -acc-q acc app-e acc-e acc. -acc -app-e -acc-e -acc. app-s acc-s app-t acc-t app-x acc-x -app-s -acc-s -app-t -acc-t -app-x -acc-x Arpeggio arp arp-up arp-down arp-adlib Trill tr1-s tr1 tr1-t tr1-x tr1-3e tr1-3s tr1-5q tr1-5e tr1-7q tr1-7e tr2-s tr2 tr2-t tr2-x tr2-3e tr2-3s tr2-5q tr2-5e tr2-7q tr2-7e ltr1-s ltr1-t ltr1 ltr1-x ltr1-3e ltr1-3s ltr1-5q ltr1-5e ltr1-7q ltr1-7e ltr2-s ltr2-t ltr2 ltr2-x ltr2-3e ltr2-3s ltr2-5q ltr2-5e ltr2-7q ltr2-7e Tremolo trem-e trem-s trem trem-t trem-x trem-3e trem-3s trem-3t trem-5q trem-5e trem-5s trem-5t trem-7q trem-7e trem-7s trem-7t Two-Note-Tremolo ttrem-e ttrem-s ttrem ttrem-t ttrem-x ttrem-3e ttrem-3s ttrem-3t ttrem-5q ttrem-5e trem-5s trem-5t ttrem-7q ttrem-7e ttrem-7s ttrem-7t Fermata fermata fermata-s fermata-vs fermata-l fermata-vl Cesura cesura cesura2 cesura3 cesura4 cesura5 cesura6 Comma comma comma2 comma3 comma4 comma5 comma6 Mordent Upper mordent1 mordent1-x mordent1-t mordent2 mordent2-x mordent2-t Lower lmordent1 lmordent1-x lmordent1-t lmordent2 lmordent2-x lmordent2-t Upper Double dmordent1 dmordent1-x dmordent1-t dmordent2 dmordent2-x dmordent2-t Lower Double ldmordent1 ldmordent1-x ldmordent1-t ldmordent2 ldmordent2-x ldmordent2-t Turn Upper turn12 turn22 turn21 turn11 turn12-s turn22-s turn21-s turn11-s turn12-x turn22-x turn21-x turn11-x Lower lturn12 lturn22 lturn21 lturn11 lturn12-s lturn22-s lturn21-s lturn11-s lturn12-x lturn22-x lturn21-x lturn11-x Upper Classic cturn12 cturn22 cturn21 cturn11 cturn12-5e cturn22-5e cturn21-5e cturn11-5e Lower Classic lcturn12 lcturn22 lcturn21 lcturn11 lcturn12-5e lcturn22-5e lcturn21-5e lcturn11-5e Key Slap key-slap Harp bisb thin-pick between-tuning-peg-and-tuning-mechanism clang close-to-table dampened fingernail hand-on-the-corpus hand-on-the-strings knuckle-on-the-corpus semitone-downwards semitone-upwards wholetone-downwards wholetone-upwards pedal-noise tuning-wrench hit xylophone-tone Cue Notes (50% Size Note) cue Number num0 num1 num2 num3 num4 num5 num6 num7 num8 num9 num10 num11 num12 Finger dig1 dig2 dig3 dig4 dig5 Repeat repeat Ending end1 end2 end3 end4 end5 end6 end7 end8 end9 end10 Legato leg Tie tie Glissando gliss gliss2 gliss3 gliss4 kgliss kgliss-ch Octave Shifts 8va 8vb 15ma 15mb Pedals ped1 ped half-ped1 half-ped sost-ped1 sost-ped una-corda1 una-corda Hand ms md lh rh User Attributes The ADD-TEXT-ATTRIBUTES function allows you to add your own list of attribute names (playing techniques) to the system. (add-text-attributes '(ord-tasto "ord⟶tasto") '(tasto-ponte "sul tasto⟶pont.") ) Example A. Webern, Streichtrio, op. 20, 1927 '((e bb4 p> leg s fs5 stacc fs5 stacc+pizz - (acc b3 arco+harm+leg) c4 pp c4 stacc+pizz - a5 p> arco+leg d6 stacc (acc cs5 leg) gs4 stacc -) (s cs5 pp stacc+pizz (acc a5 leg+arco) gs4 stacc -e -s gs4 p> stacc+ten (acc a5 leg) d6 stacc eb4 pp ten+pizz)) A. Webern, Sechs Bagatellen für Streichquartett, 1913 '((-e -s (leg eb5 pp< ponte+con-sord 3e a6 < eb5 < a6 < leg)) ((leg 3e eb5 mp> a6 > eb5 >) -e -e) (-e -3e - (leg+stacc e4 ppp< < < p))) Next page Prerequisite
7. ## 3rd Element - Velocity

Traditional staff notation has a collection of common symbols that are formed from the first letter of Italian words for degrees of intensity we want to attach to a note or a phrase. In OMN there are 12 such terms ranging from ppppp to fffff. The items in this collection have specific pre-set data values attached and as such produce in MIDI play back differences of attack on the notes they accompany. Contents OMN Notation Dynamic Crescendo Diminuendo List of Symbols One Note Dynamic Symbols Examples OMN Notation (q a4 ppppp) (q a4 pppp) (q a4 ppp) (q a4 pp) (q a4 p) (q a4 mp) (q a4 mf) (q a4 f) (q a4 ff) (q a4 fff) (q a4 ffff) (q a4 fffff) Dynamic The symbols classed as being Dynamic have a relative MIDI velocity value attached to them. The objective within OMN is to primarily to provide the notation for such symbols. (q a4 cresc) (q a4 dim) (q a4 ) (q a4 00) (q a4 pfp) (q a4 pf) (q a4 fp) (q a4 sfp) (q a4 sf) (q a4 sff) (q a4 sfff) (q a4 sfz) (q a4 sffz) (q a4 sfffz) (q a4 rf) (q a4 rfz) (q a4 fz) (q a4 ffz) (q a4 fffz) Crescendo The collection titled Crescendo takes the Italian abbreviations for the common dynamic descriptions and places a ) List of Symbols ppppp pppp ppp pp p mp mf f ff fff ffff fffff ppppp< pppp< ppp< pp< p< mp< mf< f< ff< fff< ffff< fffff< ppppp> pppp> ppp> pp> p> mp> mf> f> ff> fff> ffff> fffff> 0< < > >0 cresc dim pfp fpf pf fp ffp fffp sfp sfpp sfppp sffp sfffp sf sff sfff sffff sfz sffz sfffz fz ffz fffz rf rfz One Note Dynamic Symbols This notation is used in wind, brass and string performance to suggest a precise dynamic changes to take place on a single pitch. The symbols are particularly associated with the use of hand-held mutes in writing for trumpets and trombones. ppppp>0 . . . fffff>0 0<ppppp> . . . 0<fffff> <ppppp>0 . . . <fffff>0 0<ppppp>0 . . . 0<fffff>0 <ppppp> . . . <fffff> >ppppp< . . . >fffff< ppppp<> . . . fffff<> ppppp>< . . . fffff>< ppppp<pppp . . . ffff<fffff pppp>ppppp . . . fffff>ffff ppppp<>ppppp . . . ffff<>ffff pppp><pppp . . . fffff><fffff ppppp<pppp>ppppp . . . ffff<fffff>ffff pppp>ppppp<pppp . . . fffff>ffff<fffff >0< 0<>0 <>0 0<> <> >< Examples (M. Reger, Aus meinem Tagebuch, I, 3, 1904/12) '((q d4f4bb4d5 f< leg c4eb4a4c5 leg bb3d4g4bb4 leg e c4eb4a4c5 leg d4f4ab4d5 ff leg) (q f4ab4d5f5 > leg e4g4bb4e5 leg h fs4a4d5 mf) (q c4ds4a4 p< leg bb3e4g4 leg b3d4fs4 f leg e3g3cs4 > leg) (h d3fs3d4 pp)) K. Stockhausen, Mantra für 2 Pianisten, 1970 '(t a3 p stacc a3 stacc a3 stacc a3 tie e a3 q... b3 t f h. gs4 mp (acc e e4 p f4 e4 d4) w e4)   B. Smetana, Aus meinem Leben, Streichquartett e-Moll, 1876 '((e b4 f) (w b4 sf leg) (q e4 marc+stacc+espr - - -e fs4 stacc) (w g4 sf leg) (q b3 stacc+marc - - -e ds4 stacc) (h e4 sf marc+leg q g3 stacc+marc -e a3 stacc) (h b3 sf leg q e3 stacc+marc -e fs3 stacc) ((leg q g3 marc e e3 -s fs3 ten))) J. Podrazik, Kritiken Nostalgia, 2004 '(((marc e e3 mp eb4 fs3 c3) s g3 stacc e fs2 < marc (stacc s g2 < 5q gs2 < d3 < cs4 < e4 < d3 Next page 4th Element - Attribute
8. ## 2nd Element - Pitch

In OMN a pitch is written as a text symbol that combines a note’s lower-case letter name with its octave number. OMN uses the convention that c4 is ‘middle c’ , so numbered because of the note's position as the fourth C key on a standard 88-key piano keyboard. In fact the composer can go a little beyond the standard keyboard range because OMN takes in the MIDI range of 0 - 127 pitches. Contents Pitch Symbols Sharp Flat C major scale 12 Tone Row Chord Examples Pitch Symbols Chromatic scale '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 as4 b4) Sharp The sharp is written as an ’s’ symbol preceded by the letter of the diatonic pitch and then the octave number, thus cs4. '(cs4 ds4 es4 fs4 gs4 as4 bs4) Flat The flat is written as an ’b’ symbol preceded by the letter of the diatonic pitch and then the octave number, thus db4. '(cb4 db4 eb4 fb4 gb4 ab4 bb4) C major scale '(c4 d4 e4 f4 g4 a4 b4) In a diatonic C major scale where no chromatic notes exist the letter name and the octave number suffice. When transpositions are made using an algorithmic function the note spelling will often mix sharps and flats to seek the best compromise. 12 Tone Row A. Berg, Wozzeck, Act 1, Scene 4 '(eb4 b4 g4 cs4 c4 fs4 e4 bb4 a4 f4 ab4 d4) In a 12 Tone Row sharp and flat spellings are common. In OMN they can be freely mixed to enable intervallic analysis to be undertaken. (pitch-to-interval '(eb4 b4 g4 cs4 c4 fs4 e4 bb4 a4 f4 ab4 d4)) => (8 -4 -6 -1 6 -2 6 -1 -4 3 -6) Opusmodus can make conversions to and from interval sets. A. Schönberg, Opus 28, Number 1 '(c4 e4 g4 cs4 a4 b4 f4 ds4 d4 fs4 gs4 as4) This row is taken from Schoenberg’s Three Satires for mixed chorus. The song is directed at those exploiting tonal and atonal principles alike without being aware of origins or consequences. The text of the song 'Am Scheideweg' corresponds to a C-major triad which is worked into this twelve-tone row and the row’s chromatic spelling is chosen to make the vocal pitching of intervals easier. Chord To create a chord, individual pitches are brought together as a single entity. '(q c4e4g4 e4g4c5 g4c5e5 c4e4a4 e4a4c5 a4c5e5) The ordering of pitches within a chord grouping does not have to reflect ascending or descending patterns to be displayed correctly in notation. This means algorithmic constructions of chords can be freely undertaken. '(q g2d3g3b3 a2c3fs3a3 b2d3g3) As with individual pitches, chords adopt sharp or flat spellings as they occur in a list. Examples I. Strawinsky, Petruschka, 1911/21 '((s d5f5b5 f e5g5c6 e f5a5d6 s g5b5e6 f5a5d6 e5g5c6 d5f5b5) (e c5e5a5 c5e5a5 q d5f5b5 marc) (s d5f5b5 e5g5c6 f5a5d6 g5b5e6 e f5a5d6 s e5g5c6 d5f5b5) (e c5e5a5 c5e5a5 q d5f5b5 marc)) L. Janáček, In the Mists, 1914 '((t cs5 pp bs4 < cs5 < dn5 > cs5 > bn4 > gs4 es4 -s fermata) (t gs4 fss4 gs4 an4 gs4 fss4 en4 cs4 -s fermata)) Next page 3rd Element - Velocity
9. ## 1st Element - Length

The OMN language provides for a textual equivalent to the many symbols used in traditional staff notation. In the parameter of LENGTH these symbols represent exact durations of virtual time. Contents Length Symbols Rest Symbols Dotted Length Tuplet Repeat Compound Length Tie Extended Length Extended Periodic Length Ratios Examples Length Symbols Here are the standard values of note-lengths. The most commonly-used are represented in the OMN language by the first letter of their American arithmetic name, so w is a whole-note, h is a half-note, q is a quarter note and so on. Rest Symbols Here are the standard values of rest-lengths.The most commonly-used are represented in the OMN language by the first letter of their American arithmetic name but with the prefix of a - (minus) sign, so -w is a whole-note rest, -h is a half-note rest, -q is a quarter note rest and so on. To assist with multiple rests -12 will produce 12 bars of whole-note rests. '(q q q) Here is a list of three quarter-notes. The list has to begin with a '(a quote) and be enclosed by parentheses ( ). '(q -e e q) The example above shows note-lengths and rest-lengths in combination. Length 8 will produce 8 bars of whole-notes lengths. '(8 h q q) Length -8 will produce 8 bars of whole-notes rests. '(-8 h q q) Dotted Length Symbol: . .. ... OMN dots are used the same way as in the standard notation. The maximum dots in OMN length is 3. '(q...) Tuplet The OMN system of rhythmical notation is initially constructed on the principle of duple divisions. Here the individual note-lengths stand for their face value. w = (h h) h = (q q) q = (e e) and so on. The other divisional types must make do by borrowing from this binary series: duplet (2), triplet (3), quadruplet (4), quintuplet (5), sextuplet (6), septuplet (7), octuplet (8), nontuplet (9) etc… When we write these values we use the same note-values as the immediately preceding binary division. '((3w 3w 3w) (3h 3h 3h) (3q 3q 3q)) This means for example that a triplet division of the quarter note uses eighth notes. '((5w = = = =) (5h = = = =) (5q = = = =)) This means for example that a quintuple division of the quarter note uses sixteenth notes. Repeat Note: = Rest: - '((e. s q =) (e. s q =)) The use of repeat symbols for note-lengths and rest-lengths is fundamental to OMN. Its use can give score scripts a very particular style and appearance. Composers will soon discover different approaches will suit particular situations when writing for percussion or in the notation of repetitive textures. '((q -e = q) (q - e. t =)) If a note-length repeat symbol follows a rest-length a note-length is given. '(s e - s - e. -s e s -e) The use of the rest-length repeat can bring clarity to the visual layout of a phrase. Compound Length Length composed of two or more separate length elements: '(qs s e h) '(hqs -s qe) Tie Symbol: _ Attribute: tie (omn form) OMN has two types of ties. The first one is a tie length symbol _ and the second one is the attribute tie. '((h_e e q) (q_3q 3q 3q -h)) The tie symbol is used when a tie is necessary in the middle of a list. '((h_e c4 e_q tie) (q_3q c4 3q 3q_h)) The tie as an attribute is necessary when a tie goes across one list to join a length symbol in an adjacent list. Extended Length Note: =‌= Rest: -- '(s =‌= -- = - =‌=‌= - =‌= = --) Both note-lengths and rest-lengths can be extended simply by bringing the symbols together in the same way pitches come together to produce chords. In percussion writing this can provide further clarity because only one length value needs to be set at the beginning of the list. '(3q =‌= -e = s - = - =‌= --) Extended Periodic Length '(s=‌= = = = = =) '(5q=‌= = = 7q=‌=‌= = = =) '(5q=‌= - = 7q=‌=‌= = - =) '(s=‌= =‌= -- = - =‌=‌= - =‌= = --) Ratios OMN notation allows the use of ratio values if more convenient. '((q = e = h) (q - e. t =)) same as: '((1/4 1/4 1/8 1/8 1/2) (1/4 -1/4 3/16 1/32 1/32)) Many functions automatically output ratios as a default rather than OMN symbols. This can usually be changed by setting a keyword within the function such as :omn t. '((q_e e q) (q -3q = = h)) same as: '((1/4_1/8 1/8 1/4) (1/4 -1/12 1/12 1/12 1/2)) The tie mechanism in both its forms works with ratios. Examples Figure 24 (M. Ravel, Bolero, 1928) '((e 3e = = e 3e = = e =) (e 3e = = e 3e = = = = =)) Figure 25 (G. Ph. Telemann, 12 Fantasie per clavicembalo TWV 33, n.1, 1732) '((s a4 d5 fs4 d5 g4 d5) (s a4 d5 fs4 d5 g4 d5) (s a4 d5 cs5 b4 a4 g4) (s fs4 d4 e4 c4 e d4)) Figure 26 (D. Scarlatti, Sonata B-Dur, 1736) '((e e5 3e g5 bb4 g4 e a4) (3e a5 c4 a4 e bb4 3e g5 bb4 g4) (s a4 c6 c6 a5 a5 f5) (s f5 d5 d5 c5 d5 bb5)) Figure 27 (F. Chopin, Etudes, Op. 10, No. 5, 1833) '((3e gb6 bb6 db6 gb6 eb6 gb6 db6 gb6 bb5 db6 gb5 bb5) (3e gb5 bb5 db5 gb5 eb5 gb5 db5 gb5 bb4 db5 gb4 bb4) (3e db4 db5 ab4 db5 ab4 ab5 ab4 ab5 eb5 ab5 eb5 eb6) (3e eb5 eb6 ab5 eb6 ab5 ab6 ab5 ab6 db6 ab6 db6 db7)) Next page 2nd Element - Pitch

11. ## find-intervals*

Will have look, thank you Andre.
12. ## find-intervals*

i coded it to analyze a pitchfield ;;; a function witch filters/shows you all pitch-combinations by INTERVAL-SIZE ;;; from 1 to 11 ("octave-independent") ;;; for example you are interested to see all FIFTH-combinations in a SIEVE ;;; or to LIST all resulting/ordered intervals ;;; FUNCTION (defun find-intervals* (pitch-seq &key (intervals 'all) (chord nil)) (let ((combs (combination 2 pitch-seq)) (ints) (int) (all-comb-pitches-intervals)) (progn (setf ints (loop for i in combs do (setf int (car (pitch-to-interval i))) when (>= int 0) collect (cond ((and (>= int 12) (<= int 24)) (- int 12)) ((and (>= int 24)) (- int 24)) (t int)))) (setf all-comb-pitches-intervals (loop for i from 1 upto 11 append (loop for j in (loop for x in combs for y in ints collect (cons y x)) when (= (car j) i) collect j))) (if (equal intervals 'all+int) all-comb-pitches-intervals (if (equal intervals 'all) (loop for i in all-comb-pitches-intervals when (equal chord t) collect (chordize (rest i)) else collect (rest i)) (loop for i in all-comb-pitches-intervals when (= (car i) intervals) collect (if (equal chord t) (chordize (rest i)) (rest i)))))))) ;;; EXAMPLES (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 'all :chord t) (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 1 :chord t) (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 2 :chord t) (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 3) (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 5) (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 7) (find-intervals* (gen-sieve '(c3 g7) '(3 1 5) :type :pitch) :intervals 'all) other example -> cmd3 (setf seq (gen-sieve '(f3 fs6) '(4 2 1 1 1 2 4 7) :type :pitch)) ;(setf seq (gen-sieve '(f3 fs6) '(7 4 2 1 1 1 2 4) :type :pitch)) ;(setf seq '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6)) (append (find-intervals* seq :intervals 1 :chord t) (find-intervals* seq :intervals 2 :chord t) (find-intervals* seq :intervals 5 :chord t) (find-intervals* seq :intervals 6 :chord t) (find-intervals* seq :intervals 8 :chord t)) (find-intervals* seq :intervals 'all :chord t) ;;; with interval-sizes in output-format (find-intervals* seq :intervals 'all+int) => ((1 a3 bb5) (1 b3 c4) (1 b3 c6) (1 c4 cs4) (1 cs4 d4) (1 cs4 d6) (1 d4 eb5) (1 gs4 a5) (1 a5 bb5) (1 bb5 b5) (1 b5 c6) (2 f3 g5) (2 a3 b3) (2 a3 b5) (2 b3 cs4) (2 c4 d4) (2 c4 d6) (2 cs4 eb5) (2 d4 e4) (2 e4 fs6) (2 gs4 bb5) (2 g5 a5) (2 a5 b5) (2 bb5 c6) (2 c6 d6) (3 f3 gs4) (3 a3 c4) (3 a3 c6) (3 b3 d4) (3 b3 d6) (3 c4 eb5) (3 cs4 e4) (3 e4 g5) (3 gs4 b5) (3 eb5 fs6) (3 g5 bb5) (3 a5 c6) (3 b5 d6) (4 f3 a3) (4 f3 a5) (4 a3 cs4) (4 b3 eb5) (4 c4 e4) (4 d4 fs6) (4 e4 gs4) (4 gs4 c6) (4 eb5 g5) (4 g5 b5) (4 bb5 d6) (4 d6 fs6) (5 f3 bb5) (5 a3 d4) (5 a3 d6) (5 b3 e4) (5 cs4 fs6) (5 d4 g5) (5 e4 a5) (5 g5 c6) (5 a5 d6) (6 f3 b3) (6 f3 b5) (6 a3 eb5) (6 c4 fs6) (6 cs4 g5) (6 d4 gs4) (6 e4 bb5) (6 gs4 d6) (6 eb5 a5) (6 c6 fs6) (7 f3 c4) (7 f3 c6) (7 a3 e4) (7 b3 fs6) (7 c4 g5) (7 cs4 gs4) (7 d4 a5) (7 e4 b5) (7 gs4 eb5) (7 eb5 bb5) (7 g5 d6) (7 b5 fs6) (8 f3 cs4) (8 b3 g5) (8 c4 gs4) (8 cs4 a5) (8 d4 bb5) (8 e4 c6) (8 eb5 b5) (8 bb5 fs6) (9 f3 d4) (9 f3 d6) (9 a3 fs6) (9 b3 gs4) (9 c4 a5) (9 cs4 bb5) (9 d4 b5) (9 eb5 c6) (9 a5 fs6) (10 f3 eb5) (10 a3 g5) (10 b3 a5) (10 c4 bb5) (10 cs4 b5) (10 d4 c6) (10 e4 d6) (10 gs4 fs6) (11 f3 e4) (11 a3 gs4) (11 b3 bb5) (11 c4 b5) (11 cs4 c6) (11 e4 eb5) (11 gs4 g5) (11 eb5 d6) (11 g5 fs6)) perhaps OPMO could extend it to an omn-format-FILTER - so that all other pitches (not matched pitches/sets) would be repaced by rests? would be interesting to work like that with pitchfields/sieves. so you could choose ...for example: "want to have all FIFTHS including a pitch like C or Eb or Gs (octave independent)...?

Thanks Janusz ;-)

This is quite simple to do, just use the pathname (string) to your midi file: (live-coding-midi "~/Opusmodus/MIDI/Handel/handel.mid")

Can someone clarify the procedure for loading a pre-compiled MIDI file into 'Live Coding Instrument'? Documentation states: "The live-coding function can start by loading a pre-compiled midi-file..." and from under "Arguments" states: "file-or-midi an integer (outer interval-size)"....but that's all there is to documentation for MIDI files??? There are no examples concerning this aspect I could locate. I am currently using the "(live-coding-midi (compile-score...)" with success, but would like the basic example/process/syntax for loading existing MIDI files? Thanks in advance.
16. Earlier

Yep 😉
18. ## Opusmodus 1.2.23374

Really Cool and musical function !
19. ## Opusmodus 1.2.23374

View File Opusmodus 1.2.23374 New: GEN-CHORD-SERIES I think many of you will love the new function The function GEN-CHORD-SERIES builds chords using a scale in three types of harmonic steps: fifth (default), fourth and third. The scale needs to be in a range between c4 and b4 (0 11) and the root must be an element of the scale. Method 1 Fifth: (c4 g4 d5 a5 e6 b6 f7) (d4 a4 e5 b5 f6 c7 g7) (e4 b4 f5 c6 g6 d7 a7) (f4 c5 g5 d6 a6 e7 b7) (g4 d5 a5 e6 b6 f7 c8) (a4 e5 b5 f6 c7 g7 d8) (b4 f5 c6 g6 d7 a7 e8) Fourth: (c4 f4 b4 e5 a5 d6 g6) (d4 g4 c5 f5 b5 e6 a6) (e4 a4 d5 g5 c6 f6 b6) (f4 b4 e5 a5 d6 g6 c7) (g4 c5 f5 b5 e6 a6 d7) (a4 d5 g5 c6 f6 b6 e7) (b4 e5 a5 d6 g6 c7 f7) Third: (c4 e4 g4 b4 d5 f5 a5) (d5 f5 a5 c6 e6 g6 b6) (e4 g4 b4 d5 f5 a5 c6) (f4 a4 c5 e5 g5 b5 d6) (g4 b4 d5 f5 a5 c6 e6) (a4 c5 e5 g5 b5 d6 f6) (b4 d5 f5 a5 c6 e6 g6) Method 2 (intervals) Fifth: (7 7 7 7 7 7 -5 -5 -5 -5 -5) Fourth: (5 5 5 5 5 5 5 -7 -7 -7 -7) Third: (3 3 3 4 3 3 3 4 3 3 3) For example if the root is fs4 and the type is 5 (fifth) then the map we use is: (f4 c5 g5 d6 a6 e7 b7). In method 1 it doesn’t matter whether the notes are natural, sharp, or flat. Let’s examine the three types: (setf hexachord '(d4 eb4 fs4 g4 a4 bb4)) Fifth: (gen-chord-series hexachord 'fs4) => (fs4g4d5a5eb6bb5) Third: (gen-chord-series hexachord 'fs4 :type 3) => (fs4a4eb5g5bb5d6) Fourth: (gen-chord-series hexachord 'fs4 :type 4) => (fs4bb4eb5a5d6g5) Examples: Building chords using a hexachord scale: (gen-chord-series hexachord 'fs4 :type 3 :segment t) => (fs4eb5bb5 a4g5d6) With the segment option set to T we divide the chord into two segments by selecting every other second note: (gen-chord-series hexachord '(fs4 fs4) :type 3 :width '(30 24) :segment t) => (fs4eb5bb5 a4g5d6 fs4eb5bb5 a4g5d5) Below the type is selected at random: (gen-chord-series hexachord '(fs4 a4 d4) :type '? :segment '? :seed 56) => (fs4bb4eb5a5d6g5 a4d5g5fs6bb5eb6 d4a4g5 fs4eb5bb5) In the next few examples we use a list of width values (ambitus) - each value assigned to each chord: (gen-chord-series hexachord hexachord :type 3 :width '(30 24 36 12)) => (d4fs4a4eb5g5bb5 eb4g4bb4d5fs5a5 fs4a4eb5g5bb5d6 g4bb4d4fs4a4eb4 a4eb5g5bb5d6fs6 bb4d5fs5a5eb5g5) Please note, if the root list length is bigger than the width list length then the width list values will be looped: (gen-chord-series hexachord hexachord :type 4 :width '(30 24 36 12)) => (d4g4fs5bb5eb6a5 eb4a4d5g5fs5bb5 fs4bb4eb5a5d6g6 g4fs4bb4eb4a4d4 a4d5g5fs6bb5eb6 bb4eb5a5d5g5fs5) (gen-chord-series hexachord hexachord :width '(30 24 36 12)) => (d4a4eb5bb5fs6g5 eb4bb4fs5g5d5a5 fs4g4d5a5eb6bb6 g4d4a4eb4bb4fs4 a4eb5bb5fs6g5d6 bb4fs5g5d5a5eb5) (gen-chord-series hexachord hexachord :type '? :width '(30 24 36 12) :segment t :seed 23) => (d4a4g5 fs4eb5bb5 eb4fs5d5 bb4g5a5 fs4eb5d6 bb4a5g6 g4d4a4 bb4fs4eb4 a4g5d6 eb5bb5fs6 bb4a5g5 eb5d5fs5) Building chords using C Major scale: (setf c-major '(c4 d4 e4 f4 g4 a4 b4)) (gen-chord-series c-major c-major :width 36) => (c4g4d5a5e6b6f6 d4a4e5b5f6c7g6 e4b4f5c6g6d6a6 f4c5g5d6a6e6b6 g4d5a5e6b6f6c7 a4e5b5f6c7g6d6 b4f5c6g6d6a6e6) (gen-chord-series c-major c-major :type 3 :width 36) => (c4e4g4b4d5f5a5 d4f4a4c5e5g5b5 e4g4b4d5f5a5c6 f4a4c5e5g5b5d6 g4b4d5f5a5c6e6 a4c5e5g5b5d6f6 b4d5f5a5c6e6g6) (gen-chord-series c-major c-major :type 4 :width 36) => (c4f4b4e5a5d6g6 d4g4c5f5b5e6a6 e4a4d5g5c6f6b6 f4b4e5a5d6g6c7 g4c5f5b5e6a6d6 a4d5g5c6f6b6e6 b4e5a5d6g6c7f6) Here we use transposition values for each chord or segments: (gen-chord-series c-major '(b4 f4 d4 c4 e4 g4 a4) :type '? :width 36 :segment t :seed 45 :transpose '(0 6 -1 13)) => (b4a5g6f6 e5d6c7 b4cs6eb6f6 fs5gs6bb6 cs4gs4eb5bb5 e4b4fs5 cs5gs5eb6bb6 f5c6fs6 e4f5g6a6 b4c6d6 cs5eb6f6fs6 gs5bb6b6 gs4eb5bb5e6 b4fs5cs6) (gen-chord-series c-major (rnd-order c-major :seed 543) :type '? :width '(12 12 18 24 30 36 36) :segment t :seed 5462) => (a4e4b4f4 c5g4d4 d4c5b4a4 g4f4e4 e4b4f5c5 g4d5a4 b4c6d5e5 f5g5a5 c4b4a5g5 f4e5d6 g4a5b6c7 d5e6f6 f4e5d6c7 b4a5g6) (gen-chord-series c-major '(f4 b4 d4) :width 12 :type 3 :chord nil) => ((f4 a4 c5 e4 g4 b4 d4) (b4 d4 f4 a4 c5 e4 g4) (d4 f4 a4 c5 e4 g4 b4)) (gen-chord-series c-major '(f4 b4 d4) :width 12 :type 4 :chord nil) => ((f4 b4 e4 a4 d4 g4 c5) (b4 e4 a4 d4 g4 c5 f4) (d4 g4 c5 f4 b4 e4 a4)) (gen-chord-series c-major '(f4 b4 d4) :width '(36 24 28) :chord nil) => ((f4 c5 g5 d6 a6 e6 b6) (b4 f5 c6 g5 d5 a5 e5) (d4 a4 e5 b5 f5 c6 g5)) Some more examples with method 1 and method 2: (setf a-scale '(c4 eb4 e4 g4 gs4 b4)) First with method 1 (default): (gen-chord-series a-scale a-scale :type '(4 4 5 5 4 3) :width 36 :segment t) => (c4eb5g5 b4e5gs5 eb4g4c5 e4gs4b5 e4g4c5 eb4gs4b5 g4c5eb6 gs4b5e6 gs4c5eb6 g4b5e6 b4e5gs5 eb5g5c6) Now with method 2: (gen-chord-series a-scale a-scale :type '(4 4 5 5 4 3) :method 2 :width 36 :segment t) => (c4eb5e6 g4gs5b6 eb4b4e5 gs4c5g5 e4g5c6 b4gs5eb6 g4e5eb6 c5b5gs6 gs4b5c7 eb5e6g6 b4c6e6 gs5eb6g6) (setf chrom '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4)) (gen-chord-series chrom chrom :method 1 :width 36) (gen-chord-series chrom chrom :method 2 :width 36) (gen-chord-series chrom chrom :method 1 :width 36 :segment t) (gen-chord-series chrom chrom :method 2 :width 36 :segment t) As we can see there are endless possibilities. Just copy a few of the expressions to your Composer (Editor) and start exploring. Best wishes, Janusz Submitter opmo Submitted 05/13/2018 Category Opusmodus Latest Release
20. ## Piano Trio "Slonimsky" Movement 1

Hi, here's for study purpose the Opusmodus score of the first movement of my piano trio. All the best to the wonderful Opusmodus users community ! SB. PianoTrio-SlonimskyV2.opmo
21. ## Opusmodus 1.2.23354

Thanks Janusz, it's very interesting...

23. ## LISP Defun Question

Thanks! Now it's working for me too....😊
24. ## LISP Defun Question

Works here: (defun tmap (tonality) (tonality-map `(,tonality :root b3 :map step) (make-scale 'c4 12))) (tmap (pcs '3-2)) => (b3 c4 d4 b4 c5 d5 b5 c6 d6 b6 c7 d7) added 3 minutes later If you are getting an error you need to provide the expression otherwise I can't help.
25. ## LISP Defun Question

Hi Janusz, Any idea why this stopped working? I've changed :map shift to :map step but it's still not working... thanks! Avner
26. ## Opusmodus 1.2.23354

View File Opusmodus 1.2.23354 New: All-Combinatorial Hexachords GEN-AC-HEXACHRD AC-HEXACHORD-COMPLEMENT-FORM-SET HEXACHORD-COMPLEMENT ________________________________ The function GEN-AC-HEXACHRD generate a hexachord (H1) set and its complement (H2) set form a given name (all-combinatorial hexachords) by randomising the order and applying an inversion into the the H1 set first. The result is a sequence with two hexachords, H1 and H2 or an aggregate (twelve-tone row). The AC in the function name stand for 'All-Combinatorial Hexachords'. All-Combinatorial Hexachords names and there pitch class prime form sets: A = (0 1 2 3 4 5) B = (0 2 3 4 5 7) C = (0 2 4 5 7 9) D = (0 1 2 6 7 8) E = (0 1 4 5 8 9) F = (0 2 4 6 8 10) All-Combinatorial Hexachords in Forte notation: (pcs-prime-form '((0 1 2 3 4 5) (0 2 3 4 5 7) (0 2 4 5 7 9) (0 1 2 6 7 8) (0 1 4 5 8 9) (0 2 4 6 8 10) ) :forte) => (6-1 6-8 6-32 6-7 6-20 6-35) Example: In the first example we use A set (0 1 2 3 4 5): (gen-ac-hexachord 'a) => ((6 4 3 1 5 2) (7 9 10 0 8 11)) Here the result is a twelve-tone row (aggregate): (gen-ac-hexachord 'b :aggregate t) => (11 7 2 9 10 0 4 8 1 6 5 3) In the example below the hexachords are generated from set C and with start 0: (gen-ac-hexachord 'c :start 0) => ((0 2 5 4 9 7) (3 1 10 11 6 8)) (gen-ac-hexachord 'd :aggregate t :start 7) => (7 11 5 1 0 6 8 4 10 2 3 9) (gen-ac-hexachord 'e) => ((0 9 8 1 5 4) (3 6 7 2 10 11)) (gen-ac-hexachord 'f :seed 456) => ((9 1 7 5 11 3) (4 0 6 8 2 10)) ________________________________ The function AC-HEXACHORD-COMPLEMENT-FORM-SET returns all form sets with all combinations of the complement hexachord (H2) set. Example: (setf ac-hex '((0 4 5 11 6 10) (7 3 1 2 9 8))) (ac-hexachord-complement-form-set ac-hex) => ((9 1 2 8 3 7) (3 7 8 2 9 1) (8 7 2 3 1 9) (2 1 8 9 7 3) (7 3 2 8 1 9) (1 9 8 2 7 3) (8 9 2 1 3 7) (2 3 8 7 9 1)) Here we reverse the hexachords order: (ac-hexachord-complement-form-set (reverse ac-hex)) => ((10 6 4 5 0 11) (4 0 10 11 6 5) (0 4 11 5 6 10) (6 10 5 11 0 4) (0 4 6 5 10 11) (6 10 0 11 4 5) (10 6 11 5 4 0) (4 0 5 11 10 6)) In the next example we generate the all-combinatorial hexachords with GEN-AC-HEXACHORD function: (setf hexachords (gen-ac-hexachord 'd :seed 965) => ((11 5 3 10 9 4) (6 0 2 7 8 1)) (ac-hexachord-complement-form-set hexachords) => ((8 2 0 7 6 1) (2 8 6 1 0 7) (1 6 7 0 2 8) (7 0 1 6 8 2) (6 0 2 7 8 1) (0 6 8 1 2 7) (1 8 7 2 0 6) (7 2 1 8 6 0)) To get the form set names we set the keyword :form-names to T: (ac-hexachord-complement-form-set (gen-ac-hexachord 'c :seed 965) :form-names t) => (p6 ri3 i9 r0) (rnd-octaves '(c2 c6) (rnd-order (get-form-set (gen-ac-hexachord 'c :seed 965) '(p6 ri3 i9 r0) :segment '(3 3) :type :pitch))) => ((gs3 c5 f5) (eb4 bb2 cs5) (d4 b4 g2) (e3 fs2 a2) (cs3 eb5 bb4) (f4 c4 gs2) (e5 fs3 a4) (g2 d3 b3) (f2 cs5 gs4) (eb5 bb3 c3) (d4 b4 fs3) (e5 a3 g5) (bb2 c4 eb5) (f3 cs4 gs4) (a3 e4 g2) (b2 d4 fs4)) ________________________________ This function collect complement pitch classes of a given hexachord. The combination of the hexachord and of the result will constitute the makeup of an aggregate (twelve-tone row). Example: (hexachord-complement '(0 1 2 6 7 8)) => (5 4 3 11 10 9) (hexachord-complement '(0 1 2 6 7 8) :pitch) => (f4 e4 eb4 b4 bb4 a4) ________________________________ Small changes to the documentation structure.Function name changes: 12tone-analysis -> twelve-tone-analysis 12tonep -> twelve-tonep 12tone-forms -> twelve-tone-matrix get-12tone -> twelve-tone-filter rnd-12tone-form -> rnd-form-set get-12tone-form -> get-form-set Transpose added to PCS-INVERT function: (pcs-invert (pcs '9-7) 0) => (0 11 10 9 8 7 5 4 2) (pcs-invert '((6 7 9 11 0 2 3) (1 3 6 9 0 11 4 7)) 0) => ((6 5 3 1 0 10 9) (11 9 6 3 0 1 8 5)) (pcs-invert '((6 7 9 11 0 2 3) (1 3 6 9 0 11 4 7)) 5) => ((11 10 8 6 5 3 2) (4 2 11 8 5 6 1 10)) (pcs-invert '((6 7 9 11 0 2 3) (1 3 6 9 0 11 4 7)) '(5 8)) => ((11 10 8 6 5 3 2) (7 5 2 11 8 9 4 1)) LENGTH-TEMPO-MAP function name changed to LENGTH-TO-TEMPO Fix to TIME-POINT-SYSTEM That's all for now, best wishes, JP Submitter opmo Submitted 05/10/2018 Category Opusmodus Latest Release
27. ## gen-brownian-bridge

something new... greetings andré ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; BROWNIAN BRIDGE -> could be use as a rnd-process from A to B (integers or pitches) ;;; if you have a look to example with ":all-gen t", you will see the process with all generations, how it works ;;; or take a look to: ;;; https://de.wikipedia.org/wiki/Wiener-Prozess#/media/File:BrownscheBewegung.png ;;; https://de.wikipedia.org/wiki/Brownsche_Brücke ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; SUB (defun pick (a b &key (span 5)) (let ((rnd1 (car (rnd-number 1 (+ a span) (- a span)))) (rnd2 (car (rnd-number 1 (+ b span) (- b span)))) (n)) (progn (setf n (car (rnd-number 1 rnd1 rnd2))) (if (or (= n a) (= n b)) (+ (rnd-pick '(1 -1)) n) n)))) ;;; MAIN ;;; MAIN (defun gen-brownian-bridge (n startend &key (all-gen nil) (output 'integer) (span 5)) (let ((seq)) (progn (setf seq (append (list startend) (loop repeat n with liste = startend do (setf liste (filter-repeat 1 (loop repeat (1- (length liste)) for cnt = 0 then (incf cnt) append (append (list (nth cnt liste) (pick (nth cnt liste) (nth (1+ cnt) liste) :span span) (nth (1+ cnt) liste)))))) collect liste))) (setf seq (if (equal all-gen t) seq (car (last seq)))) (if (equal output 'pitch) (integer-to-pitch seq) seq)))) ;;; EXAMPLES ;; SPAN influence -> span 2 (list-plot (gen-brownian-bridge 5 '(50 23) :span 2 :all-gen t) :zero-based t :point-radius 3 :join-points t) ;; SPAN influence -> span 10 (list-plot (gen-brownian-bridge 5 '(50 23) :span 20 :all-gen t) :zero-based t :point-radius 3 :join-points t) ;;; SPAN default (5) (list-plot (gen-brownian-bridge 5 '(50 23) :all-gen t) :zero-based t :point-radius 3 :join-points t) (list-plot (gen-brownian-bridge 5 '(50 23)) :zero-based t :point-radius 3 :join-points t) (gen-brownian-bridge 5 '(50 23) :all-gen t :output 'pitch) (gen-brownian-bridge 5 '(50 23) :output 'pitch) some sound-examples ;;; EXAMPLE with ALL GENS / seperated by rests (def-score brownian-bridge (:title "score title" :key-signature 'atonal :time-signature '(4 4) :tempo 72) (instrument :omn (make-omn :pitch (setf n (gen-brownian-bridge 5 '(30 10) :all-gen t :output 'pitch)) :length (loop for i in n append (list '-1/4 (loop repeat (length i) append '(t)))) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano)) ;;; EXAMPLE with LAST GEN -> rnd-evaluations => rnd-ways from a to b (def-score brownian-bridge (:title "score title" :key-signature 'atonal :time-signature '(4 4) :tempo 72) (instrument :omn (make-omn :pitch (gen-brownian-bridge (car (rnd-number 1 2 7)) '(30 10) :output 'pitch) :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano)) two examples with different SPAN on MESSIEAN's mode5 mapped with <tonality-map> ;;; on MESSIAENS- mode5 - > 8 cycles + SPAN 10 => bigger intervals/steps (def-score brownian-bridge (:title "score title" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch (setf n (tonality-map '(messiaen-mode5 :map step :root 'fs3) (integer-to-pitch (gen-brownian-bridge 8 '(10 27) :span 10 :all-gen t)))) :length (loop for i in n append (list '-1/4 (loop repeat (length i) append '(t)))) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano)) ;;; on MESSIAENS- mode5 - > 8 cycles + SPAN 3 => smaller intervals/steps (def-score brownian-bridge (:title "score title" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch (setf n (tonality-map '(messiaen-mode5 :map step :root 'fs3) (integer-to-pitch (gen-brownian-bridge 8 '(10 27) :span 3 :all-gen t)))) :length (loop for i in n append (list '-1/4 (loop repeat (length i) append '(t)))) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano))
28. ## Opusmodus 1.2.23291

I'm looking forward to exploring these new features!
×

• Lessons