Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 11/10/2018 in all areas

  1. 8 points
    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 in December 2018 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 in December 2018 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 2018 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 fit-to-span osc-thread osc-stop-threads osc-data Enhancement single-events quantize and bug fixes. Best wishes, JP
  2. 3 points
    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
  3. 3 points
    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
  4. 3 points
    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))
  5. 2 points
    May be Expansion-series functions pitch-repeat-transpose (re-incarnation 🙂 trim with gen-trim length-diminution or augmentation fragmentation with pitch-fragment gen-transition or gen-morph etc.. use weighted function to add more and more rest in music (length-weight) use text-to-pitch functions to create pitch structures based on the Death word or a death poem create vectors who go from top to bottom (or reverse) and use them for rhythm, pitch etc... (gen-tendency) the possibilities are endless 🙂 SB.
  6. 2 points
    AM

    transpose-on-event-number

    greetings andré ;;; --------------------------------------------------------------------------------------------------- ;;; because i'm working with numbered-events (to have some more control) i has to code ;;; a specific tranposition-function, which is transposing on specific spans/positions ;;; --------------------------------------------------------------------------------------------------- ;;; SUB (defun and-span (n a b) (and (>= n a) (<= n b))) ;;; MAIN (defun transpose-on-event-number (omn-list &key positions/transpose-list) (loop for i in (single-events omn-list) for cnt = 0 then (incf cnt) with position-list = (loop for x in positions/transpose-list collect (car x)) with transpose-list = (loop for y in positions/transpose-list collect (rest y)) with cnt2 = 0 when (and (and-span cnt (car (nth cnt2 position-list)) (cadr (nth cnt2 position-list))) (not (length-restp (car (omn :length i))))) collect (pitch-transpose-n (nth cnt2 transpose-list) i) else collect i when (and (= cnt (cadr (nth cnt2 position-list))) (< cnt (cadar (last position-list)))) do (incf cnt2))) ;;; ZERO-based (like in lisp) (transpose-on-event-number '(q g4 -q q g4 g4 g4 g4 g4 g4 g4 g4) :positions/transpose-list '(((0 5) 1) ((6 7) -3) ((8 9) 12))) => ((q gs4 mf) (-q) (q gs4 mf) (q gs4 mf) (q gs4 mf) (q gs4 mf) (q e4 mf) (q e4 mf) (q g5 mf) (q g5 mf))
  7. 1 point
    opmo

    Difficulties combining multiple scores

    You will find the answer in the Stephane score "DseExta.opmo" in the 4. Score Examples/Strings and Piano.
  8. 1 point
    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
  9. 1 point
    You can use pitch-class within pattern-map function: (pattern-map '(((0 1 9 4 2 5) (0 4 2 1 9 5)) ((11 8 10 3 7 6) (10 8 11 3 7 6))) '((c6 cs4 a4 e3 d6 f4) (b4 gs3 bb4 eb4 g5 fs6)) :pcs t) => ((c6 e4 d4 cs3 a6 f4) (bb4 gs3 b4 eb4 g5 fs6))
  10. 1 point
    Stephane Boussuge

    Help on WILDCARDS ? *

    You can use pitch-class within pattern-map function: (pattern-map '(((0 1 9 4 2 5) (0 4 2 1 9 5)) ((11 8 10 3 7 6) (10 8 11 3 7 6))) '((c6 cs4 a4 e3 d6 f4) (b4 gs3 bb4 eb4 g5 fs6)) :pcs t) => ((c6 e4 d4 cs3 a6 f4) (bb4 gs3 b4 eb4 g5 fs6))
  11. 1 point
    AM

    Help on WILDCARDS ? *

    often helpful in PATTERN MATCH things... (like in OPMO pattern-match-functions) here is a short IDEA for an octave-independent PITCH-PATTERN-MATCHP with possible WILDCARD, perhaps could help you... ;;;-------------------------------------------------------------- ;;; PITCH PATTERN-MATCHP octave-independent ;;;-------------------------------------------------------------- ;;; SUB (defun convert-pitch (pitches) (loop for i in pitches when (pitchp i) collect (compress (butlast (explode i))) else collect i)) ;;; MAIN (defun pitch-pattern-matchp (pitchlist pattern) (let ((pitchlist (convert-pitch pitchlist)) (pattern (convert-pitch pattern))) (pattern-matchp pitchlist pattern))) (pitch-pattern-matchp '(c4 d4 eb4 f4 g4) '(c ? e)) => nil (pitch-pattern-matchp '(c4 d4 eb4 f4 g4) '(c ? eb)) => t
  12. 1 point
    opmo

    OM OSC Setup

    OSC is build in version 1.3
  13. 1 point
    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. But naturally, the gen-chord3 function is not conditionnal, so we have to think about something else but i think you can do that with pattern-match function. S. or also with def-case.
  14. 1 point
    I would need a few examples, input and output to see how could this work in our system.
  15. 1 point
    This would be great to make fast block harmonizations for arrangements.
  16. 1 point
    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
  17. 1 point
    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.
  18. 1 point
    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.
  19. 1 point
    For span-ignore-pause, use the function gen-swallow SB.
  20. 1 point
    AM

    replace-on-event-number

    the same idea with INSERT/REPLACE (defun replace-on-event-number (omn-list &key position/list (type 'replace) (output nil)) (progn (setf omn-list (loop for i in (single-events omn-list) for cnt = 0 then (incf cnt) with position-list = (loop for x in position/list collect (car x)) with list = (loop for y in position/list collect (rest y)) with cnt2 = 0 when (= cnt (nth cnt2 position-list)) collect (cond ((equal type 'replace) (if (listp (nth cnt2 list)) (flatten (nth cnt2 list)) (nth cnt2 list))) ((equal type 'add) (list i (nth cnt2 list)))) else collect i when (and (= cnt (nth cnt2 position-list)) (< cnt (car (last position-list)))) do (incf cnt2))) (if (equal output 'flatten) (flatten omn-list) omn-list))) ;;; EXAMPLES REPLACE (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 (q g5d5)) (5 -q)) :type 'replace) => ((q g4 mf) (q g5d5) (q g4 mf) (q g4 mf) (q g4 mf) (-q) (q g4 mf) (q g4 mf) (q g4 mf) (q g4 mf)) (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 (q g5d5)) (5 -q)) :type 'replace :output 'flatten) => (q g4 mf q g5d5 q g4 mf q g4 mf q g4 mf -q q g4 mf q g4 mf q g4 mf q g4 mf) ;;; EXAMPLES ADD (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 -e.) (5 -w)) :type 'add :output nil) => ((q g4 mf) ((-q) (-e.)) (q g4 mf) (q g4 mf) (q g4 mf) ((-q) (-w)) (q g4 mf) (q g4 mf) (q g4 mf) (q g4 mf)) (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 (w g6 ffff)) (5 -w)) :type 'add :output 'flatten) => (q g4 mf -q w g6 ffff q g4 mf q g4 mf q g4 mf -q -w q g4 mf q g4 mf q g4 mf q g4 mf) ;;;;
  21. 1 point
    AM

    transpose-on-event-number

    it's not a common solution, only a specific for my project... 1) it should also work with chords - because it's made for EVENTS it's always one chord = one event 2) of course, you have to decide/check if you like to merge rests or not => because i'm filtering the texture by a binary-seq (binaries from a jpeg, like a sieve) it's not the idea to merge the rests, but you could do that in a seperate step. but in my case every note/event (before filtering) is numbered, so with/when BINARY-FILTER/SIEVE you will keep the numbering concise.
  22. 1 point
    AM

    transpose-on-event-number

    what you could do with it? a precise "projection on a curve" of a generated OMN (in this example: a 12-tone-row, which is been permuted (by a SORTING-algorithm) from start to end, till it's a symmetrical scale)
  23. 1 point
    Stephane Boussuge

    Pattern for Piano

    New short piano piece from "3 Pièces pour Piano". SB.
×