Jump to content

opmo

Administrators
  • Posts

    2,901
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    opmo got a reaction from lviklund in Automatic opening last MIDI file files in Musescore (or Sibelius, etc)   
    I will make a function for it.
    (midi-to-editor)  
  2. Like
    opmo got a reaction from JulioHerrlein in Automatic opening last MIDI file files in Musescore (or Sibelius, etc)   
    *last-score* is snippet therefore you should be able to open the it in any publishing app.
  3. Thanks
    opmo got a reaction from NagyMusic in Density Analysis Question   
    Yes
     
    (density-analysis '((h q e =) (e = = = = = = =))) => (0.25 0.5) (density-analysis '((h q e =) (s = t =))) => (0.25 1.0)  
  4. Like
    opmo got a reaction from NagyMusic in Density Analysis Question   
    The bigger the interval the lower the density.
     
    (density-analysis '((c4 d4) (c4 a4))) => (0.16666667 0.75) (density-analysis '((c4 d4 e4 f4) (c4 a4 g5 c7))) => (0.1388889 0.86111116)  
  5. Like
    opmo got a reaction from Stephane Boussuge in Request: a gen-divide-attack function only to positive rhythmic values   
    Done 🙂
     
    (gen-divide 3 '(q -q -e e e e q q -s s s s)) => ((1/4 -1/4 -1/8) (1/8 1/8 1/8) (1/4 1/4 -1/16) (1/16 1/16 1/16)) (gen-divide 3 '(q -q -e -e -e e q q -s s s s) :omit-rest t) => ((1/4 -1/4 -1/8 -1/8 -1/8 1/8 1/4) (1/4 -1/16 1/16 1/16) (1/16)) (gen-divide 3 '(q -q -e -e -e e q q -s s s s) :omit-rest t :omn t) => ((q - -e - - = q) (q -s = =) (s)) (gen-divide 3 '(q c4 -q -e d4 e e4 e f4 e g4 q a4 q b4 -s s c5 d5 e5)) => ((q c4 mf - -e) (e d4 mf e4 f4) (e g4 mf q a4 b4) (-s c5 mf d5) (s e5 mf)) (gen-divide 3 '(q c4 -q -e d4 e e4 e f4 e g4 q a4 q b4 -s s c5 d5 e5) :omit-rest t) => ((q c4 mf - -e d4 e4) (e f4 mf g4 q a4) (q b4 mf -s c5 d5) (s e5 mf))  
  6. Like
    opmo got a reaction from JulioHerrlein in Request: a gen-divide-attack function only to positive rhythmic values   
    Will have a look.
  7. Like
    opmo got a reaction from Stephane Boussuge in Traces for Ensemble   
    Good work Stephane, Nigel would love it. I wish Nigel could see the OM COUNTERPOINT and POLYPHONY in action.
    Soon I will make a new release with the enchantments to OMN-DICTUM and POLYPHONY functions.
  8. Thanks
    opmo reacted to Stephane Boussuge in Traces for Ensemble   
    New piece made with OM:

    stephaneboussuge · Traces For Ensemble  
     
     
     
    SB.
  9. Like
    opmo got a reaction from lviklund in No octaves   
    Done.
     
    (setf v1 '(h c5)) (setf v2 '(-q c4)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
    (setf v1 '(h c4 h d4 q e4 -h.)) (setf v2 '(-q c5 -q d5 q d5 q e5 h f5)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
     
    (polyphony '((12 11)) (list v1 v2) :index 'out :leading 2) (ps 'gm :p (list out1 out2))
  10. Like
    opmo got a reaction from Stephane Boussuge in Per Measure processing of accidentals (flats, sharps)   
    Done.
     
    (omn-dictum '((e stacc 1) (:all :sharp 2) (3q leg 2)) omn2) (omn-dictum '((e stacc 1) (bb4 :sharp) (3q leg 2)) omn2)  
    (omn-dictum '((:all :sharp 1) (:all :flat 2))             '((q bb4 leg a4 mp leg gs4 a4 f) (q bb4 leg a4 mp leg gs4 a4 f)))
  11. Thanks
    opmo got a reaction from JulioHerrlein in Per Measure processing of accidentals (flats, sharps)   
    This could be done.
  12. Like
    opmo got a reaction from Stephane Boussuge in Per Measure processing of accidentals (flats, sharps)   
    This could be done.
  13. Like
    opmo got a reaction from Rene in No octaves   
    Done.
     
    (setf v1 '(h c5)) (setf v2 '(-q c4)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
    (setf v1 '(h c4 h d4 q e4 -h.)) (setf v2 '(-q c5 -q d5 q d5 q e5 h f5)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
     
    (polyphony '((12 11)) (list v1 v2) :index 'out :leading 2) (ps 'gm :p (list out1 out2))
  14. Like
    opmo got a reaction from Stephane Boussuge in No octaves   
    Done.
     
    (setf v1 '(h c5)) (setf v2 '(-q c4)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
    (setf v1 '(h c4 h d4 q e4 -h.)) (setf v2 '(-q c5 -q d5 q d5 q e5 h f5)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
     
    (polyphony '((12 11)) (list v1 v2) :index 'out :leading 2) (ps 'gm :p (list out1 out2))
  15. Like
    opmo got a reaction from AM in No octaves   
    Done.
     
    (setf v1 '(h c5)) (setf v2 '(-q c4)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
    (setf v1 '(h c4 h d4 q e4 -h.)) (setf v2 '(-q c5 -q d5 q d5 q e5 h f5)) (polyphony '((12 11)) (list v1 v2) :index 'out) (ps 'gm :p (list out1 out2))
     
    (polyphony '((12 11)) (list v1 v2) :index 'out :leading 2) (ps 'gm :p (list out1 out2))
  16. Like
    opmo reacted to AM in Tom Johnson / Pascal's Triangle Modulo Seven ... and more   
    here is a short program (based on JOHNSON's writing... pascal-code found in www and modified) to generate TOM JOHNSON's series of numbers for "pascal's triangle ...".
     
    maybe interesting to play with the MODULO like JOHNSON did (mod 7)... try it!
     
    greetings
    andré
     
    ;;; SUB (defun pascal-next-row (a &key (johnson-modulo nil)) (loop :for q :in a :and p = 0 :then q :as s = (if (null johnson-modulo) (list (+ p q)) (list (mod (+ p q) johnson-modulo))) :nconc s :into a :finally (rplacd s (list 1)) (return a))) ;;; MAIN (defun pascal-triangle (n &key (johnson-modulo nil)) (loop :for a = (list 1) :then (pascal-next-row a :johnson-modulo johnson-modulo) :repeat n :collect a)) ;;; => pascal-triangle (pascal-triangle 7) => ((1) (1 1) (1 2 1) (1 3 3 1) (1 4 6 4 1) (1 5 10 10 5 1) (1 6 15 20 15 6 1)) ;;; => pascal-triangle with MODULO like tom johnson in PASCAL'S TRIANGLE MODULO SEVEN (pascal-triangle 21 :johnson-modulo 7) => ((1) (1 1) (1 2 1) (1 3 3 1) (1 4 6 4 1) (1 5 3 3 5 1) (1 6 1 6 1 6 1) (1 0 0 0 0 0 0 1) (1 1 0 0 0 0 0 1 1) (1 2 1 0 0 0 0 1 2 1) (1 3 3 1 0 0 0 1 3 3 1) (1 4 6 4 1 0 0 1 4 6 4 1) (1 5 3 3 5 1 0 1 5 3 3 5 1) (1 6 1 6 1 6 1 1 6 1 6 1 6 1) (1 0 0 0 0 0 0 2 0 0 0 0 0 0 1) (1 1 0 0 0 0 0 2 2 0 0 0 0 0 1 1) (1 2 1 0 0 0 0 2 4 2 0 0 0 0 1 2 1) (1 3 3 1 0 0 0 2 6 6 2 0 0 0 1 3 3 1) (1 4 6 4 1 0 0 2 1 5 1 2 0 0 1 4 6 4 1) (1 5 3 3 5 1 0 2 3 6 6 3 2 0 1 5 3 3 5 1) (1 6 1 6 1 6 1 2 5 2 5 2 5 2 1 6 1 6 1 6 1)) ;;; look!! (list-plot (flatten (pascal-triangle 50 :johnson-modulo 7)) :point-radius 0 :style :fill) (list-plot (flatten (pascal-triangle 50 :johnson-modulo 11)) :point-radius 0 :style :fill) (list-plot (flatten (pascal-triangle 80 :johnson-modulo 17)) :point-radius 0 :style :fill) (list-plot (flatten (pascal-triangle 50 :johnson-modulo 3)) :point-radius 0 :style :fill) ;;; rnd-testing (list-plot (flatten (pascal-triangle 80 :johnson-modulo (1+ (random 23)))) :point-radius 0 :style :fill)  
     
     

    Bildschirmvideo aufnehmen 2021-04-10 um 23.47.59.mov
  17. Like
    opmo got a reaction from Stephane Boussuge in No octaves   
    The overlapping of pitches (voices) could be fixed. I will have a look.
  18. Like
    opmo reacted to torstenanders in harmonics for equal tempered tunings / guitar // sorting single-events?   
    SICP is a really excellent book! (Even though meanwhile it is not used for teaching at MIT anymore.) What I alluded to above (higher-order functions) is already covered relatively early in the book in section 1.3 (link). This book provides a really solid foundation for programming. If you just study the first two chapters that might already be enough for your purposes (well organising code for algorithmic composition). (Fun fact: I read this book during our honey moon ~20 years ago.)
     
    Note that the book uses the (smaller & more clean) Lisp dialect Scheme, instead of Common Lisp (which is a huge language, a unification effort of multiple Lisp dialects that includes features of multiple older Lisp dialects). Opusmodus is based on Common Lisp. 
     
    If you want to study higher-order functions and other matters directly for Common Lisp, there are of course also suitable books, e.g., Practical Common Lisp. Functions incl. higher-order functions are discussed in chapter 5 (link). 
  19. Like
    opmo reacted to JulioHerrlein in harmonics for equal tempered tunings / guitar // sorting single-events?   
    Vintage LISP teaching (MIT, 1986)
    KIND OF COOL THING (this guy teaches the way I like)
     
    Structure and Interpretation of Computer Programs | Electrical Engineering and Computer Science | MIT OpenCourseWare
    OCW.MIT.EDU This course introduces students to the principles of computation. Upon completion of 6.001, students should be able to explain and apply the basic methods from programming languages to analyze computational systems, and to generate computational solutions to abstract problems. Substantial weekly programming assignments are an integral part of the course. This course is worth 4 Engineering Design Points.  
     
     
    LISP MUSIC
     
     
  20. Like
    opmo got a reaction from torstenanders in Span pedal over several measures with notes and rests   
    Will make it happen.
  21. Like
    opmo got a reaction from JulioHerrlein in Controlling the score layout with ps (combining separate instruments with brackets, braces etc.)   
    I will make the setup for you later today.
  22. Like
    opmo got a reaction from JulioHerrlein in Controlling the score layout with ps (combining separate instruments with brackets, braces etc.)   
    With the DEF-SCORE you should have no problem to do that. Do you want to use PS?
  23. Thanks
    opmo reacted to JulioHerrlein in harmonics for equal tempered tunings / guitar // sorting single-events?   
    THE GUITAR AS A MATRIX
    Here is a MIDI Chart I did like 20 years ago...
     
    For example, MIDI note #76 appears in all strings (in a 24-fret guitar, for example).
    There is a color code:
    1) BLUE NOTES: Appear just in one location in the TAB.
    2) BLACK NOTES: Appear in two locations in the TAB.
    3) GREEN NOTES: Appear in 3 locations in the TAB.
    4) 2) BLACK NOTES (BIG FONT): Appear in 4 locations in the TAB.
    5) 2) PINK NOTES: Appear in 5 locations in the TAB.
    6) RED NOTE: Appear in 6 locations (in the case of 24-fret guitars) or 5 times (in the case of 20, 21 or 22-fret guitars).
    Hope it helps to find a solution.
     

     
    If you are using a different Scordatura, you must build a custom table like that for the specific tuning
    and maybe a table for the harmonic locations.
     
  24. Like
    opmo reacted to Stephane Boussuge in Petite suite Partie 4/6   
    Hi folks,
    Here's a work in progress made with the fantastic COUNTERPOINT function.
     
     
    S.
  25. Like
    opmo reacted to AM in harmonics for equal tempered tunings / guitar // sorting single-events?   
    here it is... but NOT microtonal. just for equal tempered tunings
     
    it was too complicated (and not necessary) for me to code it (with attributes and cents, it's a bit ... 🤔), so i coded it just for my needs ... for equal tempered tunings...
    could use it for guitar/strings, just to have a list of your SCORDATURA-harmonics to work with.
     
    would be interesting if someone could CODE a function which transforms a "sounding-pitch-guitar-score" into the "play-score".
    so i wouldn't have to do it by hand... 
    where are the guitar players here? 🙂 julio? janusz?
     
    greetings
    andré
     
    (defun sort-to-pitch-events (events sort) (let* ((int (loop for i in events collect (list (pitch-to-integer (second i)) i))) (out (sortcar sort int))) (loop for i in out collect (second i)))) ;;----------------------------------------------------------------------------------- (defun gen-natural-harmonics (openstrings &key (scale nil) (n 16)) (progn (add-text-attributes '(str1 "str1") '(str2 "str2") '(str3 "str3") '(str4 "str4")'(str5 "str5") '(str6 "str6")) (let* ((cent-list (cents-to-attribute '(0 2 0 -14 2 -31 0 4 -14 -49 -2 41 -31 -12 0))) (harmonic (loop for i from 2 to n collect (compress (list 'num i)))) (harmonic-seq (loop for i in openstrings for j in (list 'str6 'str5 'str4 'str3 'str2 'str1) collect (make-omn :pitch (rest (harmonics i n)) :length '(q) :articulation (loop for i in cent-list for x in harmonic collect (if (equal i '-) (compress (list x '+ j)) (compress (list i '+ x '+ j)))) :span :pitch)))) (if (null scale) harmonic-seq (sort-to-pitch-events (single-events (flatten harmonic-seq)) '<))))) ;;----------------------------------------------------------------------------------- ;;----------------------------------------------------------------------------------- ;; attributes: string number + partial number + CENTS ;; sorted by strings (gen-natural-harmonics '(e1 a1 ds2 g2 a2 b2) :n 7) => ((q e2 num2+str6 b2 2c+num3+str6 e3 num4+str6 gs3 -14c+num5+str6 b3 2c+num6+str6 d4 -31c+num7+str6) (q a2 num2+str5 e3 2c+num3+str5 a3 num4+str5 cs4 -14c+num5+str5 e4 2c+num6+str5 g4 -31c+num7+str5) (q eb3 num2+str4 bb3 2c+num3+str4 eb4 num4+str4 g4 -14c+num5+str4 bb4 2c+num6+str4 cs5 -31c+num7+str4) (q g3 num2+str3 d4 2c+num3+str3 g4 num4+str3 b4 -14c+num5+str3 d5 2c+num6+str3 f5 -31c+num7+str3) (q a3 num2+str2 e4 2c+num3+str2 a4 num4+str2 cs5 -14c+num5+str2 e5 2c+num6+str2 g5 -31c+num7+str2) (q b3 num2+str1 fs4 2c+num3+str1 b4 num4+str1 eb5 -14c+num5+str1 fs5 2c+num6+str1 a5 -31c+num7+str1)) ;; sorted by pitch (gen-natural-harmonics '(e1 f1 a1 d2) :n 7 :scale t) => ((q e2 mf num2+str6) (q f2 mf num2+str5) (q a2 mf num2+str4) (q b2 mf 2c+num3+str6) (q c3 mf 2c+num3+str5) (q d3 mf num2+str3) (q e3 mf num4+str6) (q e3 mf 2c+num3+str4) (q f3 mf num4+str5) (q gs3 mf -14c+num5+str6) (q a3 mf -14c+num5+str5) (q a3 mf num4+str4) (q a3 mf 2c+num3+str3) (q b3 mf 2c+num6+str6) (q c4 mf 2c+num6+str5) (q cs4 mf -14c+num5+str4) (q d4 mf -31c+num7+str6) (q d4 mf num4+str3) (q eb4 mf -31c+num7+str5) (q e4 mf 2c+num6+str4) (q fs4 mf -14c+num5+str3) (q g4 mf -31c+num7+str4) (q a4 mf 2c+num6+str3) (q c5 mf -31c+num7+str3))  
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy