Jump to content

opmo

Administrators
  • Posts

    2,903
  • Joined

  • Last visited

Everything posted by opmo

  1. Lets try this. Go to your home directory and delete the folder Opusmodus - if you find one. This folder is create automatically by the first time you start of the application. 1. In Finder, Control-click or right click the icon of the Opusmodus application. 2. Select Open from the top of contextual menu that appears. 3. Click Open in the dialog box. If prompted, enter an administrator name and password.
  2. There are no known problems with Opusmodus MIDI routing. First check you MIDI ports. Evaluate the function below: (midi-destinations) The output of the function should looks something like this: => ((0 . "Bus 1") (1 . "Bus 2") (2 . "Bus 3") (3 . "Bus 4") (4 . "Session 1") (5 . "vPacarana"))You can use one of the formats, a number or the string name. Score example with port using a number: (setf mat '((q a4 e a4 = q b4 trem-s) (e c5 trem-t s d5 trem-3s s e5 trem-x h a5 trem) (q a5 ff fermata))) (def-score tremolo (:key-signature '(c maj) :time-signature '(3 4) :tempo 60) (inst :omn mat :port 0 :channel 1 :sound 'gm :program 'violin) )Now, the same score but with port string name:(setf mat '((q a4 e a4 = q b4 trem-s) (e c5 trem-t s d5 trem-3s s e5 trem-x h a5 trem) (q a5 ff fermata))) (def-score tremolo (:key-signature '(c maj) :time-signature '(3 4) :tempo 60) (inst :omn mat :port "Bus 1" :channel 1 :sound 'gm :program 'violin) )The Port setup in Opusmodus Preferences is for Audition (snippets) only and not a general MIDI setup, Opusmodus recognize you MIDI setup automatically. The port number is 0-based, therefore you see number 0 for port 1.
  3. Dear Michael, The language Opusmodus is using is Common Lisp, anything that you can do in plain Common Lisp, you can do with Opusmodus, we can easily say Opusmodus is a developing environment. Of course you can extend the system with your own function (Extensions folder), the documentation of your functions you will add to the System Library folder which you find in the Opusmodus folder (there is an example file to see how it works). Any code placed in the Extensions folder will be loaded at startup. The def-library function will help you to store your ideas, snippets, themes etc... in well organised manner. All libraries will be loaded at startup and should be placed if the /Opusmodus/Def-Libraries/Def-Library directory.
  4. When processing pitches ie. transposition, inversion etc... an internal conversion to integers takes place, once the process is completed, the integers are converted back to pitches this is why ds4 becomes eb4. The default pitch symbols: c4 cs4 d4 eb4 e4 f4 fs4 g4 gs4 a4 bb4 b4
  5. simple-cadence-t is not a tonality it is a series of tonalities. Add the interval 2 to the TONALITY-SERIES with :add keyword instead: (setf tonality (tonality-series simple-cadence :root '(c4 f4 f4 g4 c4) :closest '(down up) :add '(2)))
  6. Welcome, and I am very pleased you like Opusmodus. The solution to all that 'How to make complexity more friendly' is OMN. With OMN script the composer can start working with Opusmodus and not, from the outset be confronted with vast libraries of algorithms that can at first be intimidating and overwhelming. All this is just the beginning.
  7. Hi Torsten, Good to have you on board. First, you found a bug which is fixed now. You need to download the new version in order to solve the exercise. The HARMONIC-MAP is not what you are looking for. The function to use is the TONALITY-SERIES and then TONALITY-MAP. Here is your example with the two functions. (setf simple-cadence '((c4 maj) (f4 m) (f4 m) (g4 maj) (c4 maj))) (setf size 25) (setf rnd-pitches-smooth (gen-divide 4 (vector-to-pitch '(g3 g5) (vector-smooth 0.2 (gen-white-noise size))))) (setf rhy-pattern (append (gen-divide 5 (gen-repeat (- (/ size 5) 1) '(q q q e e))) '((q e e q q)))) (setf rnd-melody-smooth (make-omn :pitch rnd-pitches-smooth :length rhy-pattern)) (setf tonality (tonality-series simple-cadence :root '(c4 f4 f4 g4 c4) :closest '(down up)) (tonality-map tonality rnd-melody-smooth)I hope this is what you are looking for. With the TONALITY-MAP you can add other intervals which are not part of the scale you are using. If you using a series of scales or tonalities then you need first define them with TONALITY-SERIES function.
  8. The language Opusmodus is using is Lisp, anything that you can do in plain CCL, you can do with Opusmodus.app. A commonly-used HTTP client is called drakma. http://weitz.de/drakma/ It is available in Quicklisp http://www.quicklisp.org/beta/ To install and use Quicklisp, please read that web page, but in short, you do (load "http://beta.quicklisp.org/quicklisp.lisp") and then follow the directions.
  9. PITCH-ROTATE (flatten-sublist (gen-loop 12 (pitch-rotate (rnd-sample 12 (gen-integer -6 6)) '((d4fs4a4 a4e5c5a4))) :seed 245)) => ((d3fs3a3 e4c4a3a4) (d5fs5a5 a4a5e6c6) (e4c4a3a4 fs3a3d4) (a3d4fs4 a3a4e5c5) (e4c4a3a4 fs3a3d4) (e4c4a3a4 fs3a3d4) (d5fs5a5 a4a5e6c6) (c5a4a5e6 d5fs5a5) (d3fs3a3 e4c4a3a4) (a4e5c5a4 fs4a4d5) (a3a4e5c5 d4fs4a4) (e4c4a3a4 fs3a3d4)) GEN-CHORD2 (gen-chord2 12 '(4 3) '(c4 cs4 e4 eb4 b4 fs4 gs4 a4 bb4 d4 f4 g4) :offset '(2 3 -2) :transpose '(0 6 1 13) :rnd-octaves t :seed 83523) => (e5eb5b4fs4 c4d4eb4 e4c4g4a4 g5a4bb4 bb6d7f7g6 d6eb6e6 b3eb4fs3gs3 gs4cs4d4 d2f2g1c2 cs6fs5g5 f1e1c1g1 cs7d7f6) CHORD-VARIATION (gen-loop 12 (chord-variation '(d4fs4a4 a4e5c5a4)) :seed 3145) => ((d4bb3g3 a4d4fs4a4) (e5c5a4 a4d4fs4a4) (bb4fs4eb4 b5e5gs5b5) (d4bb3g3 a4d4fs4a4) (d4bb3g3 eb5gs4c5eb5) (bb4fs4eb4 eb5gs4c5eb5) (d4bb3g3 eb5gs4c5eb5) (bb4fs4eb4 a4d4fs4a4) (d4bb3g3 a4d4fs4a4) (e5c5a4 b5e5gs5b5) (bb4fs4eb4 a4d4fs4a4) (d4bb3g3 a4d4fs4a4))
  10. 12-tone row and its variants with randomised octaves. (setf row (rnd-row :type :pitch :transpose '?)) (setf rows (gen-repeat 12 (list row))) (setf variants (pitch-variant rows :variant '?)) (setf pitch (flatten (randomize-octaves '(c2 g7) variants))) Mapping length to pitches. (def-case rhythm (c3 '(h)) (cs3 '(q)) (d3 '(-3q = -)) (eb3 '(e.)) (e3 '(e)) (f3 '(-5q = ---)) (fs3 '(s.)) (g3 '(s)) (gs3 '(-3e - =)) (a3 '(-5e --- = -e)) (bb3 '(t -)) (b3 '(-t =)) (c4 '(h)) (cs4 '(q)) (d4 '(-3q = -)) (eb4 '(e.)) (e4 '(e)) (f4 '(-5q - = --)) (fs4 '(s.)) (g4 '(s)) (gs4 '(-3e - =)) (a4 '(-5e == -- -e)) (bb4 '(t -)) (b4 '(-t =)) (c5 '(h)) (cs5 '(q)) (d5 '(-3q = -)) (eb5 '(e.)) (e5 '(e)) (f5 '(-5q -- = -)) (fs5 '(s.)) (g5 '(s)) (gs5 '(-3e - =)) (a5 '(-5e -- == -e)) (bb5 '(-t =)) (b5 '(t -)) (otherwise '(q))) (setf len (rhythm (flatten variants))) Mapping velocity to pitches. (def-case velocity (c3 'mf) (cs3 'mp) (d3 'ppp) (eb3 'pp) (e3 'p) (f3 'mp) (fs3 'mf) (g3 'f) (gs3 'ff) (a3 'fff) (bb3 'ffff) (b3 'fffff) (c4 'mf) (cs4 'mp) (d4 'ppp) (eb4 'pp) (e4 'p) (f4 'mp) (fs4 'mf) (g4 'f) (gs4 'ff) (a4 'fff) (bb4 'ffff) (b4 'fffff) (c5 'mf) (cs5 'mp) (d5 'ppp) (eb5 'pp) (e5 'p) (f5 'mp) (fs5 'mf) (g5 'f) (gs5 'ff) (a5 'fff) (bb5 'ffff) (b5 'fffff) (otherwise 'mf)) (setf vel (velocity (flatten variants))) Mapping programs to pitches. (def-case program (c3 'pr0) (cs3 'pr1) (d3 'pr2) (eb3 'pr3) (e3 'pr4) (f3 'pr5) (fs3 'pr6) (g3 'pr7) (gs3 'pr8) (a3 'pr9) (bb3 'pr10) (b3 'pr11) (c4 'pr0) (cs4 'pr1) (d4 'pr2) (eb4 'pr3) (e4 'pr4) (f4 'pr5) (fs4 'pr6) (g4 'pr7) (gs4 'pr8) (a4 'pr9) (bb4 'pr10) (b4 'pr11) (c5 'pr0) (cs5 'pr1) (d5 'pr2) (eb5 'pr3) (e5 'pr4) (f5 'pr5) (fs5 'pr6) (g5 'pr7) (gs5 'pr8) (a5 'pr9) (bb5 'pr10) (b5 'pr11) (otherwise 'pr0)) (setf art (program (flatten variants))) Generating chords (setf pitch-serie (gen-chord2 200 (rnd-sample 200 '(1 2 3)) pitch :ambitus-chord '(13))) Putting all into OMN form (setf mat (make-omn :length len :pitch pitch-serie :velocity vel :articulation art)) Tempo (setf tempo (make-tempo (flatten (gen-repeat (rnd-sample 12 '(3 4 5 6)) '((96) (72) (88) (102) (44)))) (get-span len))) Defining score (def-score serial-map (:key-signature 'atonal :time-signature (get-time-signature mat) :tempo tempo :layout (grand-layout 'inst)) (inst :omn mat :sound 'PR :channel 1) )
  11. pitch-rotate rotation-number sequence &key chord section ambitus [Function] Arguments and Values: rotation-number a number or list of numbers. sequence list of pitches. chord NIL or T (chord rotation). The default is T. ambitus instrument name or an integer or pitch list (low high). The default is 'piano. section an integer or list of integers. Selected list or lists to process. Description: The function PITCH-ROTATE employs chordal rotation based on a rotation-number value. (pitch-rotate 1 '(c4 d4 e4 f4 g4 a4 b4)) => (d4 e4 f4 g4 a4 b4 c5) (pitch-rotate 2 '(c4 d4 e4 f4 g4 a4 b4)) => (e4 f4 g4 a4 b4 c5 d5) (pitch-rotate 1 '(c4e4g4 d4f4 e4g4)) => (d4f4 e4g4 e4g4c5) (pitch-rotate 2 '(c4e4g4 d4f4 e4g4)) => (e4g4 e4g4c5 f4d5) Without rotation on the chords :chord NIL (pitch-rotate 2 '(c4e4g4 d4f4 e4g4) :chord nil) => (e4g4 c5e5g5 d5f5) Examples: (setf seq '((a4 a4bb4g4d5 bb4 d5c5bb4a4c5 a4) (bb4a4g4c5 g4 bb4a4g4a4 d5 bb4a4g4) (d5c5bb4a4c5 d5 bb4a4g4c5 c5 bb4a4g4g4))) (pitch-rotate '(1 2 -3) seq) => ((a4bb4g4d5 bb4 d5c5bb4a4c5 a4 a5) (bb4a4g4a4 d5 bb4a4g4 a4g4c5bb5 g5) (c4bb4a4g4 c4 g3bb4a4g4 d5c5bb4a4c5 d5)) Without rotation on the chords :chord NIL (pitch-rotate '(1 2 -3) seq :chord nil) => ((a4bb4g4d5 bb4 d5c5bb4a4c5 a4 a5) (bb4a4g4a4 d5 bb4a4g4 bb5a5g5c6 g5) (bb3a3g3c4 c4 bb3a3g3g3 d5c5bb4a4c5 d5)) Selected lists to process. (pitch-rotate '(1 2 -3 3) (append seq seq) :section '(0 2 3 5)) => ((a4bb4g4d5 bb4 d5c5bb4a4c5 a4 a5) (bb4a4g4c5 g4 bb4a4g4a4 d5 bb4a4g4) (c4bb4a4g4 c4 g3bb4a4g4 d5c5bb4a4c5 d5) (d5c5bb4a4c5 a4 a5 bb4g4d5a5 bb5) (bb4a4g4c5 g4 bb4a4g4a4 d5 bb4a4g4) (bb4a4g4c5 c5 bb4a4g4g4 c5bb4a4c5d6 d6)) OMN (pitch-rotate (rnd-sample 6 (gen-integer -6 6)) '((q a4bb4g4d5 e bb4 = q d5c5bb4a4c5 e a4 a5) (q bb4a4g4c5 e g4 q bb4a4g4a4 e d5 q bb4a4g4) (q c4bb4a4g4 e c4 = q g3bb4a4g4 d5c5bb4a4c5 e d5) (q d5c5bb4a4c5 e a4 a5 q bb4g4d5a5 e bb5) (q bb4a4g4c5 e g4 q bb4a4g4a4 e d5 q bb4a4g4) (q bb4a4g4c5 e c5 q bb4a4g4g4 c5bb4a4c5d6 e d6))) => ((q d4a4bb4g4 e bb3 bb3 q c4d5c5bb4a4 e a3 a4) (q a4g4c5bb5 e g5 q a4g4a4bb5 e d6 q a4g4bb5) (q d5c5bb4a4c5 e d5 bb4a4g4c5 q c5 c5 e bb4a4g4g4) (q c4d5c5bb4a4 e a3 a4 q a4bb4g4d5 e bb4) (q c4bb4a4g4 e g3 q a3bb4a4g4 e d4 q g3bb4a4) (q c4 e g3bb4a4g4 q d5c5bb4a4c5 d5 e bb4a4g4c5))
  12. Home directory -> Opusmodus folder In the home directory you will find - Opusmodus folder. The Extensions folder is the folder where you can add your own source code files. The contents of the folder will load at the startup. Anything dropped into the Documents folder (pdf, images, audio, etc…) will display in the Utilities panel and will be ready for display in the Assistant panel. The same applies with the MIDI folder, here you can put all your collections of midi files which you then can access and play or convert to OMN notation in the workspace window. The Def-Libraries folder is for your midi sound sets (instruments) setups and for your libraries. The Scores folder is the folder where you put and store your scores. In other words, the Opusmodus folder is your Utilities access display. I hope that OMN will help composers to get started, by using the system. Algorithms alone can be intimidating. To explore the OMN grammar quickly, you can also check the Snippets.opmo file which you’ll find in the Howto’s folder in the Documents panel (second button) and the 'OMN - The Language’ documents. The System Function documentation you will find in the Utilities panel on the right (first button). I suggest using contextual menu (right click or ctrl and click) on the Utilities, Assistant and Composer panels - the CM menu is essential. One of the special functionalities in Utilities is the ability to open a few files at once (same title, different format). For example in the Stages Tutorial Guide you will find two formats of docs; one is a score and the other one is a doc. If you click on one of them and choose 'Open All Related', both files will open. If there are more then 2 files (Stage 30) then all three will open.
  13. Version 1.0.15605 is out with a new function added: GEN-CHORD2, ready for download. gen-chord2 count chord-size pitches &key ambitus-chord offset transpose rnd-octaves ambitus seed [Function] Arguments and Values: count an integer or list of integers (number of chords). chord-size an integer or list of integers (size of chords). pitches list or lists of pitches. offset an integer or list of integers. ambitus-chord an integer or list of integers. transpose an integer or list of integers. rnd-octaves NIL or T. The default is NIL. ambitus instrument name or an integer or pitch list (low high). The default is 'piano. seed NIL or number. The default is NIL. Description: The function GEN-CHORD2 enables the composer to generate chords from a list of pitches. The count value sets the number of chords to be generated. The size of the chord is determined by the chord-size parameters. Keywords like :transpose, :ambitus-chord, :rnd-octaves, :ambitus and :offset are further parameters used within the function. (setf row (rnd-row :type :pitch :seed 245)) => (c4 cs4 e4 eb4 b4 fs4 gs4 a4 bb4 d4 f4 g4) (gen-chord2 4 '(3 3 3 3) row) => (c4cs4e4 eb4b4fs4 gs4a4bb4 d4f4g4) (gen-chord2 4 '(2 2 3 4) row :offset '(2 2 -1 1)) => (e4eb4 b4fs4 eb4b4fs4 b4fs4gs4a4) (gen-chord2 4 '(2 2 3 4) row :offset '(2 0 -1 0)) => (e4eb4 e4eb4 cs4e4eb4 cs4e4eb4b4) (gen-chord2 4 '(4 3) row) => (b4fs4gs4a4 a4bb4d4 g4c4cs4e4 e4eb4b4) (gen-chord2 '(12 6) '(3 4) '((c4 cs4 d4 ds4 e4 f4) (fs4 g4 gs4 a4 as4 b4))) => ((eb4e4f4 cs4d4eb4e4 e4f4c4 d4eb4e4f4 f4c4cs4 eb4e4f4c4 c4cs4d4 e4f4c4cs4 cs4d4eb4 f4c4cs4d4 d4eb4e4 c4cs4d4eb4) (a4bb4b4 g4gs4a4bb4 bb4b4fs4 gs4a4bb4b4 b4fs4g4 a4bb4b4fs4) Examples: If :offset is NIL (the default) then the chord-size value determines the offset value. (gen-chord2 4 '(4 3) row :offset '(2 3 -2)) => (e4eb4b4fs4 fs4gs4a4 eb4b4fs4gs4 fs4gs4a4) (gen-chord2 4 '(4 3) row :offset '(2 3 -2) :transpose '(0 6 1 13)) => (e4eb4b4fs4 c5d5eb5 e4c5g4a4 g5a5bb5) (gen-chord2 4 '(4 3) row :offset '(2 3 -2) :transpose '(0 6 1 13) :rnd-octaves t) => (e2eb2b1fs2 c2d2eb2 e2c2g2a1 g6a6bb6)
  14. until
    [b]hcmf// [/b]is an annual, international festival of contemporary and new music, over 10 days consisting of approximately 50 events, including concerts, music-theatre, dance, multi-media, talks and film, with a related Learning and Participation programme devised and implemented to reflect the artistic programme and respond to regional need.
  15. Giant Steps (1959) Theme (setf theme '((h fs5 d5) (h b4 q. g4 e bb4 tie) (h. bb4 -q) (q. b4 eh a4) (h d5 bb4) (h g4 q. ds4 e fs4 tie) (w fs4) (h g4 q. f4 e bb4 tie) (h bb4 -) (h b4 q. a4 e d5 tie) (w d5) (h ds5 q. ds5 e fs5 tie) (h fs5 -) (h g5 q. g5 e bb5 tie) (w bb5) (q. fs5 q fs5 -q.))) Chords (setf chords '((h (b3 maj7) (d3 7)) (h (g3 maj7) (bb3 7)) (w (eb3 maj7)) (h (a3 m7) (d3 7)) (h (g3 maj7) (bb3 7)) (h (eb3 maj7) (gb3 7)) (w (b3 maj7)) (h (f3 m7) (bb3 7)) (w (eb3 maj7)) (h (a3 m7) (d3 7)) (w (g3 maj7)) (h (cs3 m7) (fs3 7)) (w (b3 maj7)) (h (f3 m7) (bb3 7)) (w (eb3 maj)) (h (cs3 m7) (fs3 9)))) Score (def-score giant-steps (:title "Giant Steps" :composer "John Coltrane" :key-signature '(c major) :time-signature '(4 4) :tempo 288 :layout (piano-solo-layout 'theme 'chords)) (theme :omn theme :channel 1 :sound 'gm :program 0) (chords :omn chords :channel 2))
  16. Goodbye Pork Pie Hat Theme (setq theme '((-h.. e c4) (e f4 e_3q ab4 3q f4 ab4 e bb4 q ab4 s f4 db4) (e f4 q ab4 s f4 eb4 q. f4 e c4) (e f4 e_3q ab4 3q f4 ab4 e b4 q bb4 s f4 eb4) (e f4 q ab4 s f4 eb4 q. f4 e) (e c5 e_3q eb5 3q f4 ab4 e bb4 q ab4 s f4 ab4) (e c5 e_3q f5 3q f4 bb4 3h eb5 3q c4 ab4 e4 db4) (3h ab4 b4 f4 e4 b4 g4) (h ab4 q. f4 s b4 bb4) (h ab4 f4) (e bb4 ab4 f4 eb4 b4 bb4 ab4 f4) (h ab4 f4) (3h c4 bb4 ab4 f4 eb4 c4) (w f4))) Chords (setf chords '((-w) (h (f3 7s9) p (db3 9)) (h (gb3 maj7) (b3 7b5 :rotate -2)) (h (eb3 7) (db3 7)) (h (eb3 7) (f3 7)) (h (bb3 m7) (db3 7)) (h (g3 7b5) (c3 7)) (h (d3 7) (g3 7 :rotate -1)) (h (db3 7) (gb3 maj7)) (h (b3 6/7 :rotate -1) (bb3 7 :rotate -1)) (h (c3 7) (eb3 7)) (h (f3 7s9) (db3 7)) (h (gb3 maj7s11) (b3 7b5 :rotate -1)) (w (f3 m11 :rotate -1) p))) Score (def-score Goodbye-Pork-Pie-Hat (:title "Goodbye Pork Pie Hat" :composer "Charles Mingus" :key-signature '(f minor) :time-signature '(4 4) :tempo 56 :layout (piano-solo-layout 'theme 'chords)) (theme :omn theme :channel 1 :sound 'gm :program 'Electric-Piano-1 :volume 127 :pan 64) (chords :omn chords :channel 2))
  17. Round Midnight Theme (setq theme '(-q s bb3 eb4 f4 bb4 q. gb4 e bb3 q. eb4 s d4 eb4 e bb4 ab4 -q - s eb4 gb4 bb4 db5 q. c5 e eb4 a4 s fs4 d4 q gs4 e s f4 db4 q g4 - s ab4 b4 eb5 gb5 q. f5 e b4 h._e bb4 s eb4 f4 q. gb4 s f4 eb4 q. f4 e eb4 d4 hq. bb3 -q s bb3 eb4 f4 bb4 q. gb4 e bb3 q. eb4 s d4 eb4 e bb4 ab4 -q - s eb4 gb4 bb4 db5 q. c5 e eb4 a4 s fs4 d4 q gs4 e s f4 db4 q g4 - s ab4 b4 eb5 gb5 q. f5 e b4 h._e bb4 s eb4 f4 q gb4 e f4 eb4 q f4 e eb4 d4 h._e eb4 e f4 q gb4 e f4 eb4 q. f4 e eb4 d4 eh bb4 e eb4 f4 q gb4 e f4 eb4 q. f4 e eb4 d4 eh bb3 q bb4 q. b4 e q. bb4 e q ab4 gb4 f4 bb4 e eb5 = q e db5 = q q. b4 s eb4 d4 h bb4)) Chords (setf chords '(h (eb3 m7) p (c3 m7b5) h (f3 m7b5) (bb3 7) (eb3 m7) (ab3 7) q (b3 m7) (e3 7) (bb3 m7) (eb3 7) h (ab3 m7 :rotate 1) (db3 7) (eb3 m7) (ab3 7 :rotate -2) q (c3 m7b5) (b3 7b5) h (bb3 7sus4) w (bb3 7) h (eb3 m7) (c3 m7b5) (f3 m7b5) (bb3 7) (eb3 m7) (ab3 7) q (b3 m7) (e3 7) (bb3 m7) (eb3 7) h (ab3 m7 :rotate -1) (db3 7 :rotate -1) (eb3 m7) (ab3 7) q (c3 m7b5 :rotate 1) (b3 7b5) h (bb3 7sus4) w (eb3 m7) h (c3 m7b5) (f3 7) (f3 m7) (bb3 7) (c3 m7b5) (f3 7) (f3 m7) (bb3 7) (ab3 m7) (db3 7 :rotate -1) (b3 7) (bb3 7 :rotate -1) q (bb3 m7) (eb3 7) (ab3 m7) (db3 7) (gb3 m7 :rotate -1) (b3 7 :rotate -2) h (bb3 7 :rotate -3))) Score (def-score round-midnight (:title "Round Midnight" :composer "Thelonious Monk" :key-signature '(eb minor) :time-signature (get-time-signature theme) :tempo 56 :layout (piano-solo-layout 'theme 'chords)) (theme :omn theme :channel 1 :sound 'gm :program 'Electric-Piano-1 :volume 127 :pan 64) (chords :omn chords :channel 2))
  18. My Funny Valentine Theme (setq theme '((h c4 q d4 eb4) (q. d4 e eb4 h d4) (h c4 q d4 eb4) (q. d4 e eb4 h d4) (h c4 q d4 eb4) (h bb4 q ab4 g4) (w f4 tie) (w f4) (h eb4 q f4 g4) (q. f4 e g4 h f4) (h eb4 q f4 g4) (q. f4 e g4 h f4) (h eb4 q f4 g4) (q. d5 e c5 q. bb4 e a4) (w ab4 tie) (h ab4 q g4 f4) (q. d5 e eb4 q eb4 d4) (h eb4 q eb4 d4) (q. c5 e eb4 q eb4 d4) (h eb4 q eb4 d4) (q. d5 e eb4 q eb4 d4) (h eb4 q f4 g4) (w c5 tie) (h c5 d4) (h c4 q d4 eb4) (q. d4 e eb4 h d4) (h eb4 q f4 g4) (h c5 q d5 eb5) (q. d5 e eb5 h d5) (w eb5 tie) (w eb5) (h eb4 q f4 g4) (q. f4 e g4 h f4) (w eb4) (-w))) Chords (setq chords '((w (c3 m)) (w (c3 mmaj7)) (w (c3 m7)) (w (c3 m6)) (w (ab3 maj7)) (h (ab3 m69) (f3 m7b5)) (w (d3 m7b5)) (w (g3 7b9)) (w (c3 m)) (w (c3 mmaj7)) (w (c3 m7)) (w (c3 m6)) (w (ab3 maj7)) (w (f3 m6)) (w (ab3 m6)) (w (bb3 7b9)) (h (eb3 maj7) (f3 m7)) (h (g3 m7) (f3 m7)) (h (eb3 maj7) (f3 m7)) (h (g3 m7) (f3 m7)) (h (eb3 maj7) (g3 7)) (q (c3 m7) (c3 m7) (bb3 m7) (a3 13)) (w (ab3 maj7)) (h (d3 m7b5) (g3 7b9)) (w (c3 m)) (w (c3 mmaj7)) (w (c3 m7)) (w (c3 m6)) (w (ab3 maj7)) (h (d3 m7b5) (g3 7b9)) (w (c3 m)) (h (bb3 m7) (a3 7s11)) (h (f3 m7) (bb3 7b9)) (w (eb3 6)) (h (d3 m7b5) (g3 7b9)))) Score (def-score my-funny-valentine (:title "My Funny Valentine" :composer "Roger/Hard" :key-signature '(c minor) :time-signature '(4 4) :tempo 84 :layout (piano-solo-layout 'theme 'chords)) (theme :omn theme :channel 1 :sound 'gm :program 'Electric-Piano-1 :volume 127 :pan 64) (chords :omn chords :channel 2))
  19. until
    The 2015 NAMM Show in Anaheim, January 22-25, is your chance to build your company's brand and reach the most important music products buyers and decision makers in the world.
  20. until
    The Audio Engineering Society will host its fourth conference on Audio for Games February 11-13 2015.
  21. The GEN-LENGTH-CARTESIAN is a complex function and needs an understanding of the CARTESIAN set. The CARTESIAN function will return all the combinatory possibilities drawn from two or more sets. If you use too many sets then the combinatory possibilities could go on for ever and the program could stop being responsive. The critical part is the number of sets and not the length of the set. Two sets of any length will compute a result very quickly. In Lisp we can test any function run time with TEST macro. (test (cartesian '((a b c d) (1 2 3 4)))) The result of the test is: (cartesian '((a b c d) (1 2 3 4))) took 11 microseconds (0.000011 seconds) to run. During that period, and with 8 available CPU cores, 11 microseconds (0.000011 seconds) were spent in user mode 4 microseconds (0.000004 seconds) were spent in system mode 1,760 bytes of memory allocated. Example with 2 sets each with 12 numbers. As we can see it took 22 microseconds to run the function. (time (cartesian '((0 1 2 3 4 5 6 7 8 9 10 11) (0 1 2 3 4 5 6 7 8 9 10 11)))) The result of the test is: (cartesian '((0 1 2 3 4 5 6 7 8 9 10 11) (0 1 2 3 4 5 6 7 8 9 10 11))) took 22 microseconds (0.000022 seconds) to run. During that period, and with 8 available CPU cores, 21 microseconds (0.000021 seconds) were spent in user mode 8 microseconds (0.000008 seconds) were spent in system mode 9,568 bytes of memory allocated. 1 minor page faults, 0 major page faults, 0 swaps. Here an example with 4 sets of 12 it took 1,926 microseconds (0.001926 seconds) to run. With 12 sets of 12 the run time would take for 'ever'. (cartesian '((0 1 2 3 4 5 6 7 8 9 10 11) (0 1 2 3 4 5 6 7 8 9 10 11) (0 1 2 3 4 5 6 7 8 9 10 11) (0 1 2 3 4 5 6 7 8 9 10 11))) took 1,926 microseconds (0.001926 seconds) to run. 970 microseconds (0.000970 seconds, 50.36%) of which was spent in GC. During that period, and with 8 available CPU cores, 2,893 microseconds (0.002893 seconds) were spent in user mode 304 microseconds (0.000304 seconds) were spent in system mode 1,089,920 bytes of memory allocated. Arguments and Values: (gen-length-cartesian 1 ; min divide value 3 ; max divide value 'm ; argument for group division or maximum count (no division) 'n ; rest position (rnd-sample 20 '(q q h) :seed 12) ; the root length value of the list. (rnd-sample 20 '(2 3) :seed 12) ; number of tuplets groups in the list (numbers of the root length) (rnd-sample 20 (primes 5 3) :seed 12) ; this is the length (count) of each if the list. (rnd-sample 20 '(1 2 3 4 5) :seed 12) ; tuplets value (division). Same as above: (gen-length-cartesian 1 3 'm 'n '(h q h q q q h h q q q h q h q q h h h q) '(3 3 3 2 2 2 3 3 2 2 2 3 2 3 2 3 3 3 3 2) '(13 7 13 5 3 5 13 11 7 5 5 11 5 13 5 7 13 11 13 7) '(5 3 5 2 1 2 5 4 3 2 2 4 2 5 2 3 5 4 5 3)) More GEN-LENGTH-CARTESIAN examples: (gen-length-cartesian 1 1 'd 'n 'q '(2 3) '(13 4) '(1 2 3 4)) => ((1/16 1/16 1/16 1/16 1/4 1/16 1/16 1/16 1/16 1/16 1/16 1/16 1/16) (1/4 1/8 1/8 1/4)) (gen-length-cartesian 1 2 'd 'n 'q '(2 3) '(13 4) '(1 2 3 4)) => ((1/6 1/12 1/12 1/6 1/16 1/16 1/8 1/6 1/12) (1/4 1/4 1/8 1/8)) (gen-length-cartesian 1 1 'd 'n 'q '(2 3) '(7 5) '(1 2 3 4)) => ((1/12 1/12 1/12 1/16 1/16 1/16 1/16) (1/4 1/4 1/12 1/12 1/12)) (gen-length-cartesian 1 3 'd 'n 'q '(2 3) '(7 5) '(1 2 3 4)) => ((1/6 1/12 1/8 1/16 1/16) (1/8 1/8 1/4 1/8 1/8)) Low, High and Maximum: (gen-length-cartesian 1 3 'm 'n '(h) '(3) '(13) '(1 2 3 4 5)) The root length value is 'h 1/2. There are 3 groups of lengths, each 1/2 in value - (* 3 1/2) = 3/2 The length count is 13. The tuplets values are (1 2 3 4 5). Result: => ((1/10 1/10 1/10 1/10 1/10 1/6 1/6 1/6 1/10 1/10 1/10 1/10 1/10)) The length span of the list is 3/2 with three groups of tuplets; 2 quintuplets and 1 of triplet. The low and high multiplier is not used here, as the divide argument 'm (maximum) dose not permit any divisions. Same example as above but this time with the division 'd argument: (gen-length-cartesian 1 3 'd 'n '(h) '(3) '(13) '(1 2 3 4 5)) => ((1/5 3/10 1/5 3/10 1/6 1/3)) In this example we may end up with longer run time. (gen-length-cartesian 1 1 'm 'n '(h) '(7) '(11) '(1 2 3 4 5)) => ((1/2 1/2 1/4 1/4 1/2 1/2 1/4 1/4 1/6 1/6 1/6)) The important part here is to balance the length span (group sum length-value), the size (list length) and finally the tuplet-value. If GEN-LENGTH-CARTESIAN is difficult to use please check the GEN-TUPLET function. This function is part of the GEN-LENGTH-CARTESIAN function and will allow you to get the same result without the worry about the CARTESIAN sets.
  22. There are two ways of creating a VSL sound set library. The first one is with keyswitches - this is the default VSL setup. The second one is to do your own Program Changes sound set to switch between Patches. In this example we use the 'VSL Prepared Piano' instrument. First the keyswitches sound set: (def-sound-set VSL-Prepared-Piano-KS :programs (:group Main chain (:key c7 :key a0) double-screw (:key cs7 :key a0) harmoinic (:key d7 :key a0) harmoinic-secco (:key ds7 :key a0) foil (:key e7 :key a0) glass (:key f7 :key a0) stick (:key fs7 :key a0) stick-roll (:key g7 :key a0) glissandi (:key gs7 :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 Sost-Ped 66 Una-Corda 67 :group Matrix cc1 1 )) Here is the Program Changes sound set: (def-sound-set VSL-Prepared-Piano :programs (:group Main chain (cc101 0) double-screw (cc101 15) harmoinic (cc101 29) harmoinic-secco (cc101 43) foil (cc101 57) glass (cc101 71) stick (cc101 85) stick-roll (cc101 99) glissandi (cc101 113) ) :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 Sost-Ped 66 Una-Corda 67 :group Matrix cc101 101)) Please note that if you want to use the full range of the piano you will have to set the keyswitch range outside the range of the piano or set Program Changes to switch between Patches.
  23. An Opusmodus demonstration with a discussion of the thinking behind it with Janusz Podrazik and Stephane Boussuge at the London College of Music - Composer's workshops (Thursday 4 - 6pm).
  24. Algorithmic 'play' with the song "Alle meine Entchen" (All my little ducklings) popular german children song. An example with TONALITY-MAP and GEN-PAUSE functions. A fun exercise for four voices in five parts. The original song Global seed. (init-seed 35) Song in OMN script. (setf song '((e c4 d4 e4 f4) (q g4 =) (e a4 = = =) (q g4 -) (e a4 = = =) (q g4 -) (e f4 = = =) (q e4 =) (e g4 = = =) (q c4 -))) Creating four voices based on the original song. Processing three voices, each with its own random order of its bars. (setf s-rnd (rnd-order song :list t)) (setf a-rnd (rnd-order song :list t)) (setf t-rnd (rnd-order song :list t)) The fourth voice is 10 repetitions of the first bar of the original song. (setf b-rep (gen-repeat 10 (list (first song)))) Transposition of each bar to start pitch. (setf s-trs (pitch-transpose-start '(0 1 2 3 4 5 6 7 8 9 10) s-rnd)) (setf t-trs (pitch-transpose-start '(0 7) t-rnd)) (setf b-trs (pitch-transpose-start '(0 -1 2 -3 4 -5 6 -7 8 -9) b-rep)) Adding accents to the bass voice. (setf b-dyn (subseq (gen-accent 0.2 '(2 3) b-trs) 0 4)) Three voices of the 2nd part are mapped to dorico-flamenco scale. (setf s-2 (tonality-map '(dorico-flamenco :root f3 :ambitus soprano :shift t) s-trs)) (setf t-2 (tonality-map '(dorico-flamenco :root f3 :ambitus tenor :shift t) t-trs)) (setf b-2 (tonality-map '(dorico-flamenco :root f3 :ambitus bass :shift t) b-trs)) The 'bass' voice in the 3rd part is mapped to prometheus-liszt scale. (setf b-3 (tonality-map '(prometheus-liszt :root f3 :ambitus bass :shift t) b-dyn)) All four voices of the 4th part are mapped to minor tonality. (setf s-4 (tonality-map '(minor :root gs4 :ambitus soprano :shift t) s-rnd)) (setf a-4 (tonality-map '(minor :root gs4 :ambitus alto :shift t) a-rnd)) (setf t-4 (tonality-map '(minor :root gs4 :ambitus tenor :shift t) t-rnd)) (setf b-4 (tonality-map '(minor :root gs4 :ambitus bass :shift t) b-rep)) End bar with fermata. (setf end-bar '(e gs3 b3 eb4 e4 fermata)) 10, 4 and 1 bar pause. (setf pause10 (gen-pause song)) (setf pause4 (gen-pause b-dyn)) (setf pause1 (gen-pause end-bar)) Assembling voices. (setf soprano (assemble-seq song s-2 pause4 s-4 pause1)) (setf alto (assemble-seq pause10 pause10 pause4 a-4 pause1)) (setf tenor (assemble-seq pause10 t-2 pause4 t-4 pause1)) (setf bass (assemble-seq pause10 b-2 b-3 b-4 end-bar)) Defining the score and the layout. (def-score Alle-meine-Entchen (:title "Alle meine Entchen" :key-signature '(c maj) :time-signature '(2 4) :tempo '((120 34) (:rit 120 30 1/16 1)) :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass :ignore-velocity t)) (soprano :omn soprano :channel 1 :sound 'gm :program '0) (alto :omn alto) (tenor :omn tenor) (bass :omn bass))
  25. You need to install Opusmodus Version 1.0.15567, there are a few changes and additions.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy