Jump to content

opmo

Administrators
  • Posts

    2,903
  • Joined

  • Last visited

Reputation Activity

  1. Like
    opmo reacted to AM in gen-sieves   
    nice :-) i have a lot of extra function on SYMMETRIES in my USER-library, it's a part of my momentary project
     
    - chained-symmetries
    - symmetries based on markov
    - shifted symmetries
    ..................................................
     
     
  2. Like
    opmo got a reaction from Stephane Boussuge in gen-sieves   
    I truly love your contribution to the Forum and Opusmodus.
    Two of your functions will be part of the next release.
     
    GEN-SYMMETRICAL
    (gen-symmetrical 24 '(1 2 3 4 5 6)) => (5 2 6 2 3 2 1 5 2 3 5 4 4 5 3 2 5 1 2 3 2 6 2 5) (gen-symmetrical 24 '(1 2 3 4 5 6) :repeat t) => (1 1 3 1 1 2 4 6 4 5 5 2 2 5 5 4 6 4 2 1 1 3 1 1) (gen-symmetrical '(6 8 12) '(1/16 1/32 1/8)) => ((1/8 1/32 1/8 1/8 1/32 1/8) (1/16 1/8 1/16 1/32 1/32 1/16 1/8 1/16) (1/8 1/32 1/16 1/32 1/16 1/32 1/32 1/16 1/32 1/16 1/32 1/8))  
    GEN-MULTISYMMETRICAL
    (gen-multisymmetrical 8 '(1 2 3 4 5 6)) => (2 3 2 1 1 2 3 2 4 5 2 5 5 2 5 4 1 5 4 6 6 4 5 1 6 5 3 1 1 3 5 6 6 5 3 1 1 3 5 6 1 5 4 6 6 4 5 1 4 5 2 5 5 2 5 4 2 3 2 1 1 2 3 2) (gen-multisymmetrical 8 '(1 2 3 4 5 6) :repeat t) => (1 1 2 4 4 2 1 1 6 4 5 5 5 5 4 6 2 2 2 5 5 2 2 2 5 5 5 3 3 5 5 5 5 5 5 3 3 5 5 5 2 2 2 5 5 2 2 2 6 4 5 5 5 5 4 6 1 1 2 4 4 2 1 1) (gen-multisymmetrical '(6 8 12) '(1/16 1/32 1/8)) => ((1/8 1/32 1/16 1/16 1/32 1/8 1/16 1/32 1/8 1/8 1/32 1/16 1/16 1/32 1/8 1/8 1/32 1/16 1/16 1/32 1/8 1/8 1/32 1/16 1/16 1/32 1/8 1/8 1/32 1/16 1/8 1/32 1/16 1/16 1/32 1/8) (1/32 1/8 1/32 1/16 1/16 1/32 1/8 1/32 1/16 1/32 1/8 1/16 1/16 1/8 1/32 1/16 1/32 1/8 1/16 1/8 1/8 1/16 1/8 1/32 1/8 1/32 1/8 1/32 1/32 1/8 1/32 1/8 1/8 1/32 1/8 1/32 1/32 1/8 1/32 1/8 1/32 1/8 1/16 1/8 1/8 1/16 1/8 1/32 1/16 1/32 1/8 1/16 1/16 1/8 1/32 1/16 1/32 1/8 1/32 1/16 1/16 1/32 1/8 1/32) (1/32 1/8 1/16 1/32 1/16 1/32 1/32 1/16 1/32 1/16 1/8 1/32 1/8 1/16 1/32 1/8 1/16 1/32 1/32 1/16 1/8 1/32 1/16 1/8 1/16 1/8 1/32 1/16 1/32 1/16 1/16 1/32 1/16 1/32 1/8 1/16 1/16 1/8 1/16 1/32 1/8 1/32 1/32 1/8 1/32 1/16 1/8 1/16 1/8 1/32 1/8 1/16 1/32 1/8 1/8 1/32 1/16 1/8 1/32 1/8 1/16 1/8 1/16 1/8 1/32 1/16 1/16 1/32 1/8 1/16 1/8 1/16 1/16 1/8 1/16 1/8 1/32 1/16 1/16 1/32 1/8 1/16 1/8 1/16 1/8 1/32 1/8 1/16 1/32 1/8 1/8 1/32 1/16 1/8 1/32 1/8 1/16 1/8 1/16 1/32 1/8 1/32 1/32 1/8 1/32 1/16 1/8 1/16 1/16 1/8 1/32 1/16 1/32 1/16 1/16 1/32 1/16 1/32 1/8 1/16 1/8 1/16 1/32 1/8 1/16 1/32 1/32 1/16 1/8 1/32 1/16 1/8 1/32 1/8 1/16 1/32 1/16 1/32 1/32 1/16 1/32 1/16 1/8 1/32))  
  3. Like
    opmo got a reaction from Stephane Boussuge in gen-sieves   
    (make-scale 'c4 29 :alt '(2 1)) JP
  4. Like
    opmo reacted to AM in gen-sieves   
    have fun!
    andré
     
    ;;; TWO SIEVE-generators ;;; simple and multiple (the simple-function is part of multiple) ;;;;;;;;;;;;;;;;;;;;;;;;; (defun gen-sieve (ambitus.omn intervals) (midi-to-pitch (loop with ambitus.midi = (pitch-to-midi ambitus.omn) with interval.cnt = -1 for pitch = (first ambitus.midi) then (setq pitch (+ (nth interval.cnt intervals) pitch)) when (<= pitch (second ambitus.midi)) collect pitch into bag else return bag do (incf interval.cnt) when (= interval.cnt (length intervals)) do (setq interval.cnt 0)))) (gen-sieve '(c4 g7) '(2 1)) ;;;;;;;;;;;;;;;;;;;;;;;;; (defun gen-multiple-sieve (sieve-rules) ;sieve-rules => '((ambitus.omn intervals) (ambitus.omn intervals) (ambitus.omn intervals)) (midi-to-pitch (sort (remove-duplicates (loop for i in sieve-rules append (pitch-to-midi (gen-sieve (first i) (second i))))) #'<))) (gen-multiple-sieve '(((c4 g7) (2 1 12)) ((c1 g7) (3 5))))  
  5. Like
    opmo got a reaction from lviklund in interval-mapping   
    Examples with newly added keyword :sort (the default is t):
    ;;; TEST (setf mat '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4 c5 cs5 d5)) (mapcar 'pitch-to-integer (list (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort nil) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort nil :shift t) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort t :shift t) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort nil :fixed t) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort t :fixed t) mat) )) => ((3 4 4 6 6 6 11 11 11 12 13 13 15 16 16) (3 0 1 4 6 11 13 15 12 13 16 18 23 25 27) (3 4 6 7 9 14 16 15 16 18 19 21 26 28 27) (3 4 4 6 6 6 11 11 11 13 13 13 13 13 13) (3 4 4 6 7 7 9 9 9 14 14 14 16 16 16))  
  6. Like
    opmo got a reaction from Stephane Boussuge in interval-mapping   
    Examples with newly added keyword :sort (the default is t):
    ;;; TEST (setf mat '(c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4 bb4 b4 c5 cs5 d5)) (mapcar 'pitch-to-integer (list (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort nil) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort nil :shift t) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort t :shift t) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort nil :fixed t) mat) (tonality-map '((3 0 1 4 6 11 13) :root 3 :sort t :fixed t) mat) )) => ((3 4 4 6 6 6 11 11 11 12 13 13 15 16 16) (3 0 1 4 6 11 13 15 12 13 16 18 23 25 27) (3 4 6 7 9 14 16 15 16 18 19 21 26 28 27) (3 4 4 6 6 6 11 11 11 13 13 13 13 13 13) (3 4 4 6 7 7 9 9 9 14 14 14 16 16 16))  
  7. Like
    opmo got a reaction from lviklund in interval-mapping   
    Tonality can be any sequence:
    (setf messiaen (append (expand-tonality '(c4 messiaen-mode1)) (expand-tonality '(c5 messiaen-mode2)) (expand-tonality '(c6 messiaen-mode3)))) (tonality-map '(messiaen :shift t) '(c4 cs4 d4 eb4 e4 f4 fs4 g4 gs4 a4 bb4 b4 c5 cs5 d5 eb5)) => (c4 d4 e4 fs4 gs4 bb4 c5 cs5 eb5 e5 fs5 g5 a5 bb5 c6 d6)  
     
     
  8. Like
    opmo reacted to AM in interval-mapping   
    violà, i think this is what you are looking for...
    (defun multiple-expand-tonality (&key startpitch octaves tonality) (remove-duplicates ;remove is for "cutting" if there are too much pitches (OMN loops last octave!) (loop repeat octaves with pitch = startpitch with cnt = 0 when (= cnt (length tonality)) do (setq cnt 0) append (expand-tonality (list pitch (nth cnt tonality))) do (incf cnt) do (setq pitch (car (pitch-transpose 12 (list pitch))))))) (multiple-expand-tonality :startpitch 'c2 :octaves 6 :tonality '(messiaen-mode1 messiaen-mode2 messiaen-mode3))  
  9. Like
    opmo reacted to AM in interval-mapping   
    i'm sure that it would also work with tonality-map,
    but i was interested to code a simple version for my own to understand all the things :-)
     
    ;;; i wanted to map every interval-sequence to every possible pitchfield... ;;; all the sequences are "centered" (i needed that for my project) ;;; with :base you could move up and down the center ;;; :pitchfield has to be a OMN-pitch-sequence ;;; FUNCTION (defun interval-projection-on-pitchfield (&key pitchfield intervals (base 0)) (let ((integers (pitch-to-integer (interval-to-pitch intervals))) (base-0-integers) (centering) (pos)) (setq base-0-integers (loop for i in integers collect (+ (abs (find-min integers)) i))) (setq centering (if (evenp (find-max base-0-integers)) ;; finds the center of the seq (/ (find-max base-0-integers) 2) (/ (1+ (find-max base-0-integers)) 2))) (loop for i in base-0-integers do (setq pos (+ i (* -1 centering) base)) ;; compensating center & base when (< pos 0) do (setq pos 0) ;; corr if intervals to big (+/-) when (> pos (1- (length pitchfield))) do (setq pos (1- (length pitchfield))) collect (nth pos pitchfield)))) ;;; EXAMPLE (interval-projection-on-pitchfield :pitchfield (append (expand-tonality '(c4 messiaen-mode5)) (expand-tonality '(c5 messiaen-mode5)) (expand-tonality '(c6 messiaen-mode5))) :intervals '(1 2 3 1 2 -4 -3 -2 3 5 7 -2) :base 12)  
    short question: is there a possibilty to build this
    (append (expand-tonality '(c4 messiaen-mode5)) (expand-tonality '(c5 messiaen-mode5)) (expand-tonality '(c6 messiaen-mode5))) with ONE function (i need more ambitus then 1 octave)...
     
    thanx, andré
     
     
     
  10. Like
    opmo got a reaction from TomTolleson in Opusmodus training classes in NYC   
    Dear Tom,
    Stephane Boussuge will contact you later today with the details on how to proceed with Skype training sessions.
    Best wishes, JP
  11. Like
    opmo reacted to AM in substitute markov-transition-rules   
    a version for 2+LEVEL-markov-tables
    all the best
    andré
     
    ;;example-mat (setq pitch-seq (append '(c4 cs4 fs4 g4) '(a4 gs4 eb4 d4) '(c4 d4 eb4 ab4 bb4 b4) '(c5 bb4 e4 d4 db4 b3 f3 eb3) '(d3 g3 c4 cs4 fs4 b4) '(c5 bb4 f4 e4 b3 a3) '(g3 c4 b3 bb3 f3) '(g3 c4 b3 bb3 f3) '(g3 c4 b3 bb3 f3) '(e3 eb3 a2 bb2))) ;; different levels of transition-tables > LEVEL 2, 3, & 4 (setf transition2 (gen-markov-transitions (pitch-to-interval pitch-seq) :level 2)) (setf transition3 (gen-markov-transitions (pitch-to-interval pitch-seq) :level 3)) (setf transition4 (gen-markov-transitions (pitch-to-interval pitch-seq) :level 4)) ;; the substitution-function for LEVELS 2+ (!!!) (defun substitute-transition-value2 (transition-list value-old value-new) (loop for j in transition-list with cnt = 0 collect (loop for i in j when (and (listp i) (= cnt 0)) collect (substitute value-new value-old i) and do (incf cnt) else collect (append (substitute value-new value-old (list (first i))) (list (second i)))) do (setq cnt 0))) ;; examples (gen-markov-from-transitions (substitute-transition-value2 transition2 -1 11) :size 100 :start 2) (gen-markov-from-transitions (substitute-transition-value2 transition3 -1 11) :size 100 :start 2) (gen-markov-from-transitions (substitute-transition-value2 transition4 -1 11) :size 100 :start 2)  
  12. Like
    opmo reacted to Stephane Boussuge in After The Club for Piano   
    Hi,
     
    here's a quiet speed piece playing around the jazz piano ;-)
     

    SB.
     
     
  13. Like
    opmo got a reaction from TomTolleson in Opusmodus training classes in NYC   
    The only possibility I can think of would be to have Skype lessens or a workshop (a weekend) in Venice.
     
  14. Like
    opmo reacted to Deb76 in Liste des accords de jazz   
    Merci Stéphane, c'est exactement ça que je recherchais. En fait, outre les possibilités de création et d'analyse avec Opusmodus, je m'en sers aussi comme aide pour travailler mes instruments, pour retranscrire des exemples de méthodes ou de partitions notamment au piano. Guitariste à la base, je me suis mis au piano et j'en suis au point où si j'ai encore quelques difficultés à tenir une séquence de basse régulière pour improviser autour, en revanche j'ai une bonne indépendance main gauche-main droite avec les accords  et jouer une mélodie en lecture ou improviser. Du coup, j'explore de plus en plus les grilles de jazz - je me suis régalé ce matin avec le thème "Impressions" de Coltrane. De même, j'avais un peu de mal avec le What'd I Say de Ray Charles, non pas dans sa partie de basse qui est simple à jouer mais dans la coordination du jeu main gauche - main droite  quand il effectue cette sorte de basculement avec les deux quand il joue en accords. La saisie de la partition avec Opusmodus m'a permis entre l'écoute et le ralentissement du tempo, d'assimiler cette façon de jouer. C'est vraiment très appréciable, d'autant que je renvoie la lecture sur le Kawaï ES6. Opusmodus est vraiment un bel outil pour la création mais aussi pour la pédagogie.
     
    PS : je me rends compte qu'aujourd'hui, je saisis beaucoup plus vite une partition avec OPMO qu'avec Notion 5 ou Finale.  
    PS1 : Je suppose qu'en raison des droits d'auteur, il n'est pas possible de mettre à disposition le script de What'd I Say de Ray Charles ?  
  15. Like
    opmo reacted to Rangarajan in Using Optima in Opusmodus   
    Hi,
    A few weeks ago, I wrote about the Optima Pattern Matching library. In today's post, I have given a simple example of using the library to post-process a score, after reading a MIDI file.
     
    Regards,
    Rangarajan
  16. Like
    opmo reacted to Stephane Boussuge in Rock It !! for Piano from Piano suite No.1   
    Hi,
     
    here's a new piece for Piano solo extracted from my piano suite No.1 (work in Progress).
    The suite is a succession of small piece in different moods.
    This one is a bit Rock ;-)
     The score is attached to this post.

     
     
     
    SB
    RockIt.opmo
  17. Like
    opmo got a reaction from RST in Chord Progressions   
    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))  
  18. Like
    opmo got a reaction from Stephane Boussuge in Small Tuplet Qestion OMN   
    (3q c4 <> ten 3e fs4 ten g5 ten 3s f4 fs5 tie 3e fs5 tie q fs5)  
  19. Like
    opmo reacted to AM in substitute markov-transition-rules   
    i'm working on a program including "markov"...
    so i coded this small FUNCTION to SUBSTITUTE markov-rules-values (because in my "project" i'm generating a feedback on the markov-rules (after a pattern-match)). i know it could be coded a lot smarter but it works.
    have fun! andré
     
    ;;;;FUNCTION (defun substitute-transition-value (transition-list value-old value-new) (loop for j in transition-list collect (loop for i in j when (numberp i) append (substitute value-new value-old (list i)) when (listp i) collect (append (substitute value-new value-old (list (first i))) (list (second i)))))) ;;;;;EXAMPLE (setq transitions '((1 (2 1) (3 3) (5 2) (8 1)) (2 (1 2) (5 3)) (3 (1 2) (8 1) (2 3)) (5 (3 2) (2 1) (1 3)) (8 (1 2) (2 2) (3 1)))) (substitute-transition-value transitions 1 -1) => ((-1 (2 1) (3 3) (5 2) (8 1)) (2 (-1 2) (5 3)) (3 (-1 2) (8 1) (2 3)) (5 (3 2) (2 1) (-1 3)) (8 (-1 2) (2 2) (3 1)))  
  20. Like
    opmo reacted to Stephane Boussuge in Prelude pour Piano   
    Hi,
     
    here is a new piece, Prelude pour Piano.

     
    Happy listening !
     
    Stéphane.
     
     
  21. Like
    opmo reacted to Stephane Boussuge in Articulations - post processing   
    Hi,
     
    often when we generate articulation and particularly legato articulation with functions like LENGTH-MAP, the legato slur could finished on marc or stacc notes like that:
     

     
    a possible way for improve this could be to use a post processing of LENGTH-MAP outputs with a MOTIF-MAP function:
     

     
    Attached to this post, a work in progress, Flux for ensemble, as an example of a possible use "in context" of this technique.
     
    Have a good day.
     
    SB.
     
    Flux-Extrait.pdf
    flux1.mp3
    Flux1-02.opmo
  22. Like
    opmo reacted to Stephane Boussuge in Opusmodus Fun   
    Just for the pleasure to share a small track made as a small exercise and experimentation with my favorite software ;-)
     
     
     
  23. Like
    opmo reacted to Rangarajan in Optima Pattern Matching Library   
    I hope to share some examples of use with OM in the next few posts.
     
    -Rangarajan
  24. Like
    opmo reacted to Rangarajan in Optima Pattern Matching Library   
    As part of my research into other tools that can be used along with Opusmodus, in today's post I have given a basic introduction to the Optima Lisp library for pattern matching. I hope to continue the discussion in the next couple of posts as well. I think this library will be useful if we want to do any operations in Opusmodus involving pattern matching, for example, reading a score and looking for specific patterns in it.
     
    Regards,
    Rangarajan
  25. Like
    opmo reacted to Stephane Boussuge in Score post processing   
    Hi,
    i have composed a short strings trio as an example of how to use score post processing techniques, ie. change things in a score after the OMN generation by the opmo functions.
     
    Score script and mp3  attached to this post.
    SB.
    StringsTrio210516g-GM.opmo
    StringsTrio210516g.mp3
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy