Jump to content

opmo

Administrators
  • Posts

    2,903
  • Joined

  • Last visited

Everything posted by opmo

  1. The 'Last Score' (Tools menu) will play or display the last compiled score. For MIDI player the command is ⌃⌥⌘P and for the notation ⌃⌥⌘N That simple :-) To display notation and player in the same time: (display-midi 'your-score) (display-musicxml 'your-score)
  2. Looks like you have some problems with lengths. I would need to see the score in order to help. You can send it to me by email if you wish.
  3. You can download from the Forum directly -> "Current Version"
  4. This functionality will be part of the future upgrade version 2.0
  5. Out Now: harmonic-progression degree scale &key (size 3) (step 2) root row variant relative (chord t) (flatten t) seed rnd-sample-seq n sequence &key section seed and documentation fixes.
  6. Next release with HARMONIC-PROGRESSION planed for Monday, January 25th.
  7. HARMONIC-PROGRESSION coming soon: harmonic-progression degree scale &key (size 3) (step 2) relative root row variant (chord t) (flatten t) seed (harmonic-progression '(2 3 4) '(c major)) => (e4g4b4 f4a4c5 g4b4d5) (harmonic-progression '(3 4 0) '(c major)) => (f4a4c5 g4b4d5 c4e4g4) (harmonic-progression '(0 1 2 3 4 5 6 7) '(c major)) => (c4e4g4 d4f4a4 e4g4b4 f4a4c5 g4b4d5 a4c5e5 b4d5f5 c5e5g5) (harmonic-progression '(2 6 5 4) '(a minor)) => (c5e5g5 g5b5d6 f5a5c6 e5g5b5) (setf scale '(c4 d4 e4 f4 g4 a4)) (harmonic-progression '(0 1 2 3 4 5 6 7) scale) => (c4e4g4 d4f4a4 e4g4c5 f4a4d5 g4c5e5 a4d5f5 c5e5g5 d5f5a5) (harmonic-progression '(0 1 2 3 4 5 6 7) scale :step '(2 (2 1) 2)) => (c4e4g4 d4f4g4 e4g4c5 f4a4d5 g4c5d5 a4d5f5 c5e5g5 d5f5g5) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale) => (c4e4g4 f4a4d5 g4c5e5 c4e4g4 g3c4e4 f3a3d4 a3d4f4 c4e4g4 g3c4e4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3)) => (c4e4g4 f4a4d5 g4c5e5g5 c4e4g4c5e5 g3c4e4g4 f3a3d4f4 a3d4f4 c4e4g4 g3c4e4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :step '(2 2 1 2 (1 2) 2 2 2 1)) => (c4e4g4 f4a4d5 g4a4c5 c4e4g4 g3a3d4 f3a3d4 a3d4f4 c4e4g4 g3a3c4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :root '(-6 -2 3 -3 2 -1 0)) => (fs3bb3cs4 eb4g4c5 bb4eb5g5 a3cs4e4 a3d4fs4 e3gs3cs4 a3d4f4 fs3bb3cs4 f3bb3d4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3) :step '(2 2 1 2 (2 1) 2 2 2 (2 1)) :root '(c4 g4 a4 bb4 c5 ds5 e4 e5 bb4)) => (c4e4g4 c5e5a5 e5fs5a5b5 bb4d5f5bb5d6 g4c5d5f5 gs4c5f5gs5 cs4fs4a4 e5gs5b5 f4bb4c5) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3) :step '(2 2 1 2 (2 1) 2 2 2 (2 1)) :root '(c4 g4 a4 bb4 c5 ds5 e4 e5 bb4) :row t) => (c4e4g4 c5e5a5 e5fs5a5b5 bb4d5f5 g4c5d5f5 gs4c5f5 cs4fs4a4 e5gs5b5 f4bb4c5) (setf row '(gs4 ds4 g4 e4 as4 fs4 d4 f4 cs4 c4 a4 b4)) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) row) => (gs4g4bb4 e4fs4f4 bb4d4cs4 gs4g4bb4 a3gs4g4 c3b3eb4 b3eb4e4 gs4g4bb4 a3gs4g4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) row :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2)) => (fs3f3gs3 fs3gs3g3d3 f4a3gs3 a3gs3b3eb3 eb3d4cs4 e2eb3g3gs3 fs3bb3b3 bb3a3c4e3 g2fs3f3) (setf p45 (partial-row (library 'tbn-cs3-frames 'partials 'p45))) (harmonic-progression '(1 4 5 1 3 4 2 4 3) p45 :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2)) => (c4a4b5 b5f6c7fs7 gs6d7g7 eb4c5d6gs6 f5g6cs7 cs6g6d7gs7 cs5e6bb6 b5f6c7fs7 a4b5f6) (harmonic-progression '(1 4 5 1 3 4 2 4 3) p45 :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2) :chord nil :flatten nil :variant '? :seed 8634) => ((c4 a4 b5) (b5 f5 bb4 e4) (gs6 d7 g7) (eb4 fs3 e2 bb1) (cs7 g7 f6) (cs6 g5 c5 fs4) (cs5 bb3 e3) (fs7 c7 f6 b5) (a4 g3 cs3))
  8. Yes, you need to extend the bar count to 24 x 4/4. (setf partial1 (library 'tbn-cs3-frames 'partials 'p0)) (setf partial2 (library 'tbn-cs3-frames 'partials 'p1)) (setf partial3 (library 'tbn-cs3-frames 'partials 'p2)) (setf partial4 (library 'tbn-cs3-frames 'partials 'p3)) (setf partial5 (library 'tbn-cs3-frames 'partials 'p4)) (setf partial6 (library 'tbn-cs3-frames 'partials 'p5)) (setf row1 (partial-row partial1)) (setf row2 (partial-row partial2)) (setf row3 (partial-row partial3)) (setf row4 (partial-row partial4)) (setf row5 (partial-row partial5)) (setf row6 (partial-row partial6)) (setf rhy1 (gen-tuplet 1 2 'd '? (gen-repeat 48 '(q)) (rnd-sample (* 4 24) '(5 4 3)))) (setf rhy2 (gen-tuplet 1 2 'd '? (gen-repeat 48 '(q)) (rnd-sample (* 4 24) '(5 4 3)))) (setf rhy3 (gen-tuplet 1 2 'd '? (gen-repeat 48 '(q)) (rnd-sample (* 4 24) '(5 4 3)))) (setf rhy4 (gen-tuplet 1 2 'd '? (gen-repeat 48 '(q)) (rnd-sample (* 4 24) '(5 4)))) (setf rhy5 (gen-tuplet 1 4 'd '? (gen-repeat 24 '(h)) (rnd-sample (* 2 24) '(3 2)))) (setf rhy6 (gen-tuplet 1 4 'd '? (gen-repeat 24 '(h)) (rnd-sample (* 2 24) '(3 2)))) (setf vel (rnd-sample 96 '(pp p mp mf f))) (setf afl-omn (make-omn :length rhy1 :pitch row1 :velocity vel)) (setf cl-omn (make-omn :length rhy2 :pitch row2 :velocity vel)) (setf bcl-omn (make-omn :length rhy3 :pitch row3 :velocity vel)) (setf hn-omn (make-omn :length rhy4 :pitch row4 :velocity vel)) (setf vn-omn (make-omn :length rhy5 :pitch row5 :velocity vel)) (setf vc-omn (make-omn :length rhy6 :pitch row6 :velocity vel)) Each row is looped here. You could continue processing and develop the rows further before you merge them to omn of course.
  9. The original length span of each instrument will not change after the DO-TIMELINE process. If one of your instrument is 6 bar long (6 x 4/4) and the span of your section is bigger then the rest of the section will have no effect. Example: (setf inst '((q c4) (q c4) (q c4) (q c4) (q c4) (q c4) (q c4) (q c4))) (do-timeline '(inst (x - x - x - x - x x x x - x - x - x x x)) '(pitch-transpose -12 x)) inst => ((q c3) (q c4) (q c3) (q c4) (q c3) (q c4) (q c3) (q c4))
  10. The :resolution option sets the bar length (internally) for the process. The output is given in the original time signature. Each 'x represents one bar (original time signature) and if :resolution is used, each 'x is the length of the process of the given resolution value.
  11. No, there is no download version of the 30 Stages documents. You could save each of the files as a pdf file and then combine them into one document.
  12. The DO-TIMELINE will read, process and then set back the result to the variable names. The next DO-TIMELINE is using the return of the previous one and so on. If you make any change to any of the sections you will need to evaluate all of them again, starting with the evaluation of the origin variable set you are using in the DO-TIMELINE function. Example After any change (edit) the first thing you need to do is to evaluate the original variable set: (setf afl afl-omn cl cl-omn bcl bcl-omn hn hn-omn vn vn-omn vc vc-omn ) then each of the DO-TIMELINE: (do-timeline '( afl nil cl (x - x - x - x - x - x -) bcl (- x - x - x - x - x - x) hn t vn (- x - x - x - x - x - x) vc (x - x - x - x - x - x -) ) '(pitch-variant x :variant '?) :time '1/1) (do-timeline '( afl (x - x - x x - - x - x - x - x - x x - - x - x -) cl (- x - x x - x - - x - x - x - x x - x - - x - x) bcl (x x - x x - x - - x - x x x - x x - x - - x - x) hn (x - x x - x - x x - x - x - x x - x - x x - x -) vn (- x x - x - x - - x - x - x x - x - x - - x - x) vc (- x x - x - x - - x - x - x x - x - x - - x - x) ) '(pitch-figurate '(2 3) x) :time '1/2) (do-timeline '( afl (binary-invert (gen-binary-euclidean 1 48 30 48)) cl (binary-invert (gen-binary-euclidean 1 48 30 48)) bcl (binary-invert (gen-binary-euclidean 1 48 30 48)) hn (binary-invert (gen-binary-euclidean 1 48 30 48)) vn (binary-invert (gen-binary-euclidean 1 48 30 48)) vc (binary-invert (gen-binary-euclidean 1 48 30 48)) ) '(gen-pause x) :time (rnd-sample 12 '(1/4 1/2)) :loop t)
  13. CHORD-INVERSION now with correct octave rotation. chord-inversion n chord &key list root [Function] Arguments and Values: n inversion (rotation) number. chord a chord. list rotation in a sequence. root root chord and inversions together. Description: The function CHORD-INVERSION will generate all the inversions (rotations) of a chord up to and including N. For example, the first inversion of C major will give us: (chord-inversion 1 'c4e4g4) => e4g4c5 (chord-inversion -1 'c4e4g4) => g3c4e4 Root position and 1st inversion together. (chord-inversion 1 'c4e4g4 :root t) => (c4e4g4 e4g4c5) However, requesting the second inversion will give us both the first and second, and so on. Use the LISP primitive REVERSE to place the 2nd inversion before the first. (chord-inversion 2 'c4e4g4 :list t) => (e4g4c5 g4c5e5) (reverse (chord-inversion 2 'c4e4g4 :list t)) => (g4c5e5 e4g4c5) We can also rotate the chords downwards in pitch, for example the rotation of the fifth order below: (chord-inversion -5 'c4e4g4 :list t) => (g3c4e4 e3g3c4 c3e3g3 g2c3e3 e2g2c3) To get only the final rotation in a series: (chord-inversion -2 'c4e4g4) => e3g3c4 Examples: Generate rotations of a chord: (chord-inversion 3 'c4eb4 :list t :root t) => (c4eb4 eb4c5 c5eb5 eb5c6)
  14. Found it, indeed the :type is missing. Thank you for letting me know. Update on its way.
  15. (Opusmodus 1.1.17866) The new added option :resolution into TONALITY-MAP and HARMONIC-PATH functions solves the problem for variabile harmonic progression.
  16. We are proud to announce 7 new functions and great additions to tonality tools. New: GET-HARMONIC-PATH (sequence &key resolution loop unique sort remove row chord seed) Returns a pitch sequence (tonality, scale) made up of an omn sequence or any number of voices (instruments). DO-SECTION (section function sequence) Distributes an operation over a range of lists. Binary list section returns a processed list if 1. If 0 the list is unchanged. A list section with symbols '- and 'x returns a processed list if 'x. If '- the list is unchanged. DO-TIMELINE (list function &key (resolution :time-signature) loop) (Please examine the function if have used before - changes and additions). Distributes an operation over a number of bars, if 'x. If '- the bar is unchanged. Optionally you can use binary numbers: 1 equal x and 0 equal -. GET-TUNING (frequency) Returns the difference of a frequency value to the closest tempered pitch. POSITION-TO-BINARY (numbers) Returns a binary list where each of the position numbers is 1. BINARY-TO-DECIMAL (binary-list) Converts a binary list to a decimal number. DECIMAL-TO-BINARY (number) Converts a decimal number to a binary list. Revisions: TONALITY-MAP (scale sequence &key resolution loop section) HARMONIC-PATH (path sequence &key type resolution loop octave section seed) Functions removed from the system: BINARY-DO-SECTION BINARY-TIMELINE Both functions can be easily replaced with DO-TIMELINE or DO-SECTION (both work with binary list input). The DO-SECTION is made for user’s own defined functions where section option is not applied. Best wishes, JP
  17. No need for it, they are part of the final function GEN-ROTATE: (gen-rotate 2 '(c4 d4 e4 g4 a4)) => (g4 a4 c4 d4 e4) (gen-rotate -2 '(c4 d4 e4 g4 a4)) => (e4 g4 a4 c4 d4) The keywords :left and :right are equivalents of the integer values -1 and 1. We can also use :type :seq to generate multiple lists for an entire rotation of the items in list: (gen-rotate :left '(1 2 3 4) :type :seq) => ((1 2 3 4) (4 1 2 3) (3 4 1 2) (2 3 4 1)) Generate a sequence based on a rotation of 2 places right: (gen-rotate 2 '(1 2 3 4 5) :type :seq) => ((1 2 3 4 5) (5 1 2 3 4) (4 5 1 2 3))
  18. I think you had some typo in your path. I am glad is working now. :-)
  19. Good article and instruction :-) how-to-use-reaktor-with-opusmodus best wishes, JP
  20. Just uploading new version which should fix the notation display.
  21. Channel needs to be define. The sound set and the program is optional. The minimum setup for a instrument: (def-score appoggiatura2 (:key-signature '(c maj) :time-signature '(3 4) :tempo 60) (theme :omn '((q c5 d5 (-app e c5) (app e d5 c5 b4) q c5) (q d5 e5 (-acc e d5) (acc e e5 d5 c5) q d5) ((leg q e5 (-app e f5) q e5 (app e f5 e5 d5) q e5)) (q c5 d5 c5)) :channel 1) )
  22. Thank you Lasse. Happy New Year to all of us.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy