Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Stephane Boussuge

    Harmonic Systems - Harmonizing from top notes (melodies)

    originally, i've made gen-chord3 with JP for using in this top to bottom approach. what is called root in gen-chord3 parameters was not thinked by me originaly as "root" but more cantus note on with to add other notes (below or not). S.
  3. Today
  4. JulioHerrlein

    Harmonic Systems - Harmonizing from top notes (melodies)

    Dear Janusz, The chord generators in the system (as far as I know) are root based systems, i.e., they buid chords stacking notes over a root. When you work a saxophone soli section in a big band arrangement, you use a top to bottom approach, i.e., you start with the melody of a song or an origianl tune (think a Charlie Parker bebop head) and you build an harmonization under it. The melody becomes the top note of a 4-part harmonization. We use some rules to determine wich chord will be used in each case, depending on the melodic function. In the above example, the notes C, E, G and A will be always harmonized with the corresponding close position inversions of the C6 chord while the B, D, F and Ab will be always harmonized with the corresponding close position inversions of the Bdim7 chord. We need a function that will transform a melody to a 4-part harmonization, similar to chord-interval-add function. For example: (chord-interval-add '(-3 -3)(chord-interval-add '(-4 -3)(chord-interval-add '(-3 -3) '(c5 d5 e5 f5 g5 gs5 a5 b5)))) This will result in a 4-part harmonization, but this is not "note selective", it will apply the same interval series over the entire list of notes. I need a filter to apply diferent series of intervals over each different note. For example: Over all the C notes, I want the (-3 -2 -3) as interval add. Over all the D, F, A and Ab/G# notes, I want (-3 -3 -3) Over all the E notes, I want the (-4 -3 -2) as interval add. Over all the G notes, I want the (-3 -4 -3) as interval add. This is the Barry Harris Rule for harmonizing a bebop scale. So I need a chord-interval-add function with note selection (a kind of IF - DO filter): IF this is an C note (in any register) DO ADD this interval list (-3 -2 -3) from the melody, forming a 4-part C6 chord with melody on top. IF this is a B, D, F or G#/Ab note, ADD this interval list (-3 -3 -3) from the melody, forming a 4-part Bdim7 chord with melody on top. And prefearably, a chord-interval-add function with multiple choice of intervals, but I can workaround this, if not possible, working with variables setf, I think... Is it clear now ? BEst, Julio
  5. stephen-zubko

    stephen-zubko

  6. I would need a few examples, input and output to see how could this work in our system.
  7. JulioHerrlein

    Harmonic Systems - Harmonizing from top notes (melodies)

    This would be great to make fast block harmonizations for arrangements.
  8. opmo

    Upgrade from SCOM

    Upgrade/crossgrade from Symbolic Composer to Opusmodus is the price of the academic licence.
  9. Jorvd

    Upgrade from SCOM

    Hi, Is it still possible to upgrade/crossgrade from Symbolic Composer to Opus Modus? I finally saved me up some funds to get my official OM licence, but I don't see the upgrade/discount option anymore. I fear the worst, but thought I might ask anyway! Thanks in advance for the reply 🙂 - Jor
  10. Yesterday
  11. JulioHerrlein

    Harmonic Systems - Harmonizing from top notes (melodies)

    In other words: Given and OMN expression, how can I apply one operation (like transposition, for example) to just the C notes, or just the B notes (in any register)? Best Julio
  12. In the jazz world, Barry Harris came up with the idea of harmonizing a bebop scale. Combining a C6 (C, E, G, A) and a Bdim7 (B, D, F, Ab) chords, we have this scale: From this stantpoint we can alternate tonic and dominant sounds, like this: Every pair of chords have all the 8-note set. The notes C,E, G and A are always harmonized with a C6 chord. The notes D, F, Ab and B are always harmonized with a Bdim7 chord. So, from the point of view of sets, there is no problem. WHAT IS NEEDED: I want a way to start FROM the melody, and then make a four part block harmonization with this (or any other) harmonic system from the melody as an OMN expression. So, I need a way to filter the notes to aply the right chord: FOR EXAMPLE: For the notes C, E, G and A If the note is an C (in any register), I will apply a chord like , I will add the notes A, G and E, below the melody. If the note is an (in any register), I will apply a chord like , I will add the notes G, E and C, below the melody. And so on... For the notes D, F, Ab and B: If the note is an B (in any register), I will apply a chord like , I will add the notes Ab, F and D, below the melody. And so on: So, to make any procedure: I need first find a way to apply a specific procedure only over the notes I want, over all the C notes, all the B notes, etc. How to filter from an OMN expression ? All the best ! Julio
  13. Last week
  14. AM

    sorting algorithms

    a kind of MERGE-SORT -> sorry for bad coding i didn't find a better solution -> perhaps a new SORT for GEN-SORT... (defun kind-of-merge-sort (alist) (progn (setf alist (mcflatten (loop repeat 30 do (setf alist (loop for i in (gen-divide 2 alist) collect (sort-asc (flatten i)))) collect alist))) (loop repeat (length alist) for cnt = 0 then (incf cnt) when (not (equal (nth cnt alist) (nth (1+ cnt) alist))) collect (nth cnt alist)))) (list-plot (flatten (kind-of-merge-sort (rnd-order (gen-integer 0 20)))) :join-points t :point-radius 0 :style :fill)
  15. opmo

    Opusmodus 1.3 Upgrade

    Developers Progress The Opusmodus development team is making progress on the new release of our Opusmodus 1.3 software. We are planning to have 1.3 version ready for release on December 1st with the upgrade price of EUR 145. Opusmodus Prices Going Up In the meantime, for those of you who have not yet purchased Opusmodus 1.2 the price will increase to EUR 399 for personal and EUR 250 for academic licence on December 1st so now is the time to buy. Are you Eligible for a Free Upgrade? If you purchased an Opusmodus license on or after July 1st, 2018 you are entitled to the upgrade to version 1.3 at no charge. Opusmodus 1.3 December 1st Whats new in version 1.3 Compatibility with macOS Mojave macOS 10.14 Dark Mode CLM integration OSC integration MIDI player improvements New functions circle-pitch-plot circle-rhythm-plot pc-thythm xy-plot edit-event process-omn make-thread stop-threads osc-send osc-controller Enhancement single-events quantize and bug fixes. Best wishes, JP
  16. scoyoh

    scoyoh

  17. opmo

    how to keep omn-notation?

    (setf sequence '((t s t) (3q 3e_s. t) (5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) (t s._3e 3q))) (gen-retrograde sequence) => ((t s t) (t s._3e 3q) (5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) (3q 3e_s. t)) best, JP
  18. JulioHerrlein

    how to keep omn-notation?

    Quoting André: But, despite this, we always want to have the output as close as possible to the final score. Best, Julio
  19. opmo

    how to keep omn-notation?

    Will be fixed in the next update. The problem not the ratios but the tied lengths. What we need to do is to reverse the order of tied lengths: 5q_7q = 7q_5q
  20. AM

    how to keep omn-notation?

    thanx stephane! ...but when you have a look on the output... (gen-retrograde durations1 :omn t) => ((t s t) (t 13/96 3q) (5h = 3/35 7q = = = = 3/35 5h =) (3q 13/96 t) (t s t)) or with FLATTEN: (gen-retrograde (flatten durations1) :omn t) => (t s t 3q 13/96 t 5h = 3/35 7q = = = = 3/35 5h = t 13/96 3q t s t) the "original notation" with no troubles => ((t s t) (3q 3e_s. t) (5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) (t s._3e 3q) (t s t))
  21. Stephane Boussuge

    how to keep omn-notation?

    (gen-retrograde durations1 :omn t) => ((t s t) (t 13/96 3q) (5h = 3/35 7q = = = = 3/35 5h =) (3q 13/96 t) (t s t)) S.
  22. for some score-display it would be very very useful if when EVAL etc... (or use any of the OPMO-functions) OMN-notation would be displayed and not changing to RATIOS... have a look to this example: it's written like that, because then the display is very smart. when i use "rnd-pick" or other functions it changes from OMN to RATIO... very ugly then. is there an internal solution for that or another trick? thanx for help a. ;; NICE DISPLAY BY CMD3 (setf durations1 (list '(t s t) '(3q 3e_s. t) '(5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) '(t s._3e 3q) '(t s t) )) => ((t s t) (3q 3e_s. t) (5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) (t s._3e 3q) (t s t)) ;;; UGLY DISPLAY BY CMD3 because of the OPMO-fuction (gen-retrograde durations1) ;; should result the same rhythm => ((1/32 1/16 1/32) (1/32 13/96 1/12) (1/10 1/10 3/35 1/28 1/28 1/28 1/28 1/28 3/35 1/10 1/10) (1/12 13/96 1/32) (1/32 1/16 1/32)) ;;; the same (rnd-pick durations1) => (1/32 13/96 1/12) ;;; OKAY because LISP and not OPMO (nth 0 durations1) => (t s t) a practical example: ;;; WORKS => because in the last step it's on LISP-level (setf durations (list '(t s t) '(3q 3e_s. t) '(5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) '(t s._3e 3q) '(t s t) '(t t t t) '(5q 5q 5q 5q 5q) '(3q 3q 3q) '(7q 7q 7q 7q 7q 7q 7q))) (setf morph-list (flatten (gen-morph 7 '(0 1 2 3) '(4 5 6 7)))) ;;cmd3 (setf newdurations (loop for i in morph-list append (nth i durations))) ;;; DON'T WORK => because OMPO chanhig the format to RATIOS (setf durations1 (list '(t s t) '(3q 3e_s. t) '(5h 5h 5q_7q 7q 7q 7q 7q 7q 7q_5q 5h 5h) '(t s._3e 3q) '(t s t))) (setf durations2 (list '(t t t t) '(5q 5q 5q 5q 5q) '(3q 3q 3q) '(7q 7q 7q 7q 7q 7q 7q))) ;;cmd3 (setf newdurations (flatten (gen-morph 7 durations1 durations2)))
  23. JulioHerrlein

    transpose-on-event-number

    WOWWWWWWW !!!! This version is getting better every day !!! Best ! Julio
  24. AM

    transpose-on-event-number

    with BAR and BEAT? that's great JANUSZ, you are always two steps ahead or "MILES AHEAD" (trumpeter's joke :-)) but WHEN will be the RELEASE? 🤓
  25. opmo

    transpose-on-event-number

    With EDIT-EVENT (ver1.3) function you will be able to edit any parameter in any given bar: (edit-event '( (0 0 '(pitch-transpose 12 x) :pitch) (0 2 '(chord-inversion 2 x) :pitch) (0 3 '(pitch-variant x :variant 'i) :pitch) (2 1 '(chord-inversion 1 x) :pitch) (2 2 '(chord-inversion 1 (pitch-transpose 12 x)) :pitch) (3 1 '(chord-inversion 1 (pitch-transpose 12 x)) :pitch) (3 2 '(chord-inversion 2 x) :pitch) (3 3 '(chord-inversion 2 x) :pitch) (3 5 '(chord-inversion 4 x) :pitch) (3 6 'g3e4c5 :pitch) ) '((e c2 c3e3g3 c3e3g3 c3e3g3) (e f2 c3f3a3 c3f3a3 c3f3a3) (e e2 e3g3c4 e3g3c4 e3g3c4) (e gs2 e3b3 e3b3 e3b3 g2 d3g3b3 d3g3b3 d3g3b3))) => ((e c3 mf c3e3g3 g3c4e4 c3gs2f2) (e f2 c3f3a3 c3f3a3 c3f3a3) (e e2 mf g3c4e4 g4c5e5 e3g3c4) (e gs2 mf b4e5 e4b4 e4b4 g2 g4b4d5 g3e4c5 d3g3b3))
  26. AM

    transpose-on-event-number

    thanx for the span-ignore-pause-HINT! ...but it makes no sense to me - when you are working with EVENTS (by numbering it) - to ignore some of them 😉 the idea behind this concept is, that you could work with a (finished) score by changing some parameters or enlarge rests - like a kind of "post-production". in this way it's not necessary to go deep inside you generating-algorithms, you can only change things a little bit like in a notation-software (i think it's on that level). some months ago i had the idea to do such changes (post...) by positions with BARS/BEATS - but at the moment i think it's much better to signify the EVENTS and work directly on them. less errors and easy to code such post...-functions.
  27. Stephane Boussuge

    transpose-on-event-number

    For span-ignore-pause, use the function gen-swallow SB.
  28. AM

    add-num-to-events

    to use the function which works on event-numbers, first you have to number it (the score), so that you could work with this afterwards... ;;; ADD numbers to text attributes (can do that in your setup), then ADD number to events ;;; have a look to the example. after that, easy to use REPLACE-ON-EVENT-NUMBER etc... (defun add-numbers-to-text-attributes (a b) (loop for i from a to b append (add-text-attributes (list (compress (list 'nr i)) (write-to-string i))))) (add-numbers-to-text-attributes 0 100) (defun add-num-to-events (omnlist) (loop for x in (single-events omnlist) for i from 0 to (length (single-events omnlist)) when (omn-formp x) collect (omn-replace :articulation (list (compress (list 'nr i))) x) else collect x)) ;;; evaluate cmd3 (setf seq (add-num-to-events '(-q q c4 mp -q -q e e e e e q c4 mp -q -q q c4 mp -q))) => ((-q) (q c4 mp nr1) (-q) (-q) (e c4 mp nr4) (e c4 mp nr5) (e c4 mp nr6) (e c4 mp nr7) (e c4 mp nr8) (q c4 mp nr9) (-q) (-q) (q c4 mp nr12) (-q))
  1. Load more activity
×