Jump to content

JulioHerrlein

Members
  • Posts

    814
  • Joined

  • Last visited

Reputation Activity

  1. Like
    JulioHerrlein reacted to PatrickMimran in Argument Question (simple problem)   
    Hello Julio 
     
    if you are like me and you do not know lisp this is a very useful link where you can find the main lisp functions .
    I found it very useful.
     
    cl-reference-brian.pdf
    LispResumé.pdf
  2. Like
    JulioHerrlein reacted to opmo in Crazy behavior   
    Pleasure,
    Janusz
  3. Thanks
    JulioHerrlein reacted to opmo in Crazy behavior   
    Because you have evaluated the expression before.
    If you use the same name it should be in this score.
    If you quit the App and restart and evaluate the score you will see an error.
  4. Like
    JulioHerrlein reacted to opmo in Opusmodus on a Windows Machine (using VMWare)   
    Thank you Wim.
  5. Like
    JulioHerrlein reacted to opmo in Opusmodus on a Windows Machine (using VMWare)   
    Good news and thank your for the link.
  6. Like
    JulioHerrlein got a reaction from opmo in Opusmodus on a Windows Machine (using VMWare)   
    I tried it today, with my 5 year-old PC, windows 7 64 bit, 4GB Ram with Intel Dual Core (before the I series).
    In this modest setup, I could run Sonar 8.5 with rewire with Finale 25 (Windows) together with Opusmodus
     in VMware. You can share a folder to export your XML to immediately open in the DAW sequencer with rewire Finale.
     
    Great Stuff !
     
    Opusmodus runs flawlessly !
    Very happy with this great software !
    Thank you guys !
    Best,
    Julio
    added 1 minute later Exacty the steps of this video tutorial.
    https://www.youtube.com/watch?v=5RQ21XG8Ts4
     
  7. Thanks
    JulioHerrlein reacted to torstenanders in Argument Question (simple problem)   
    You can define local variables within and outside functions with let.
     
    In principle, you can also use setf within a function, but then you are overwriting the value of a global variable. In most cases you want to avoid that. Functions that do not change anything outside them (so called side effects) are much safer. 
     
    Both let and setf are explained in detail in the very informative online textbook Practical Common Lisp, chapter 6: http://www.gigamonkeys.com/book/variables.html. There you will also learn that Lisp actually distinguishes between lexical and dynamic variables; I was talking here about local and global variables instead for simplicity. In case this chapter covers something you don't follow, just go back a chapter or two and you will learn a lot :)
     
    Simple example:

    (defun my-function (x)
      (let ((y (+ x 1)))
        y)) 
    (my-function 42)
    ; => 43
     
    Best,
    Torsten 
  8. Thanks
    JulioHerrlein reacted to AM in Argument Question (simple problem)   
    But in this way: (setf binrow '(0 2 5 7 8 11)) (gen-binary-row 12 '(binrow)) What am I missing ?  
    just do it like that:
    (setf binrow '(0 2 5 7 8 11)) (gen-binary-row 12 binrow) ;; your "binrow" is now a variable with a LIST as value ;; when you are writing '(binrow) it will be a LIST with the VALUE binrow (and not the values of "binrow")  
     
  9. Like
    JulioHerrlein reacted to opmo in Help with combining lists   
  10. Like
    JulioHerrlein reacted to opmo in Opusmodus 1.2.22703   
    New function: TIME-SWALLOW and minor bug fixes.
     
    The function TIME-SWALLOW 'swallows' sequence of pitches derived from the divide of every length value of a sequence by a given time value: (/ 1/2 1/16) = 8. The rest-lengths are omitted.
    (setf length '(1/2 1/16 7/16 1/8 3/8 3/16 5/16 1/4 1/4 5/16 3/16 3/8)) (setf infinity (infinity-series 100 '(g4 gs4))) => (g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4     f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4     gs4 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4     fs4 a4 g4 gs4 e4 b4 a4 fs4 b4 e4 d4 cs5 gs4 g4 f4 bb4 g4     gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 g4 gs4 fs4 a4 gs4     g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 f4 bb4 gs4 g4) (time-swallow 1/16 1 length pitch) => (g4 fs4 a4 gs4 f4 f4 g4 fs4 a4 g4 g4 a4) Time 1/16 in each length: 8 1 7 2 6 3 5 4 4 5 3 6 8                           1   7                      2 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 6                    3          5                4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 4            5                 3         6 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 fs4 a4  
    Example with swallow :type 1 (default) and with chord-size (3 3 2 1):
    (make-omn  :length length  :pitch (time-swallow 1/16 '(3 3 2 1) length pitch)) => (h g4gs4fs4 s fs4a4g4 q.. a4g4 e gs4 q. f4bb4g4 e. f4bb4gs4       qs g4bb4 q fs4 a4fs4e4 qs g4gs4fs4 e. g4f4 q. a4) 8-3                         1-3 7-2                    2-1 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 6-3                  3-3        5-2              4-1 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 4-3          5-3               3-2       6-1 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 fs4 a4  
    Same as above but with swallow :type 2:
    (make-omn  :length length  :pitch (time-swallow 1/16 '(3 3 2 1) length pitch :type 2)) => (h g4gs4fs4 s g4gs4a4 q.. fs4e4 e gs4 q. a4f4bb4       e. c5fs4a4 qs a4fs4 q fs4 f4bb4a4 qs fs4a4g4 e. fs4b4 q. cs5) 8-3                                1-3       7-2 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 f4 bb4 g4 2-1     6-3                         3-3 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 5-2                 4-1           4-3 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 5-3                    3-2          6-1 fs4 a4 g4 gs4 e4 b4 a4 fs4 b4 e4 d4 cs5 gs4 g4 f4 bb4 g4  
    More examples:
    (make-omn  :length length  :pitch (time-swallow 'e '(3 3 2 1) length pitch)) => (h g4gs4fs4 s gs4g4f4 q.. gs4g4 e fs4 q. a4g4gs4 e. a4fs4e4       qs e4b4 q gs4 f4bb4g4 qs g4gs4fs4 e. fs4a4 q. f4) (make-omn  :length length  :pitch (time-swallow 'e '(3 3 2 1) length pitch :type 2)) => (h g4gs4fs4 s f4bb4fs4 q.. fs4a4 e fs4 q. e4b4gs4       e. bb4g4gs4 qs a4f4 q gs4 bb4f4eb4 qs fs4a4g4 e. a4fs4 q. b4) (setf length2 (gen-length                (distributive-cube                 (interference2 '(3 2))) '(1/16))) => ((1/2 1/4 1/4 1/2 1/4 1/8 1/8 1/4 1/4 1/8 1/8 1/4 1/2 1/4 1/4 1/2)     (1/4 1/8 1/8 1/4 1/8 1/16 1/16 1/8 1/8 1/16 1/16 1/8 1/4 1/8 1/8 1/4)     (1/4 1/8 1/8 1/4 1/8 1/16 1/16 1/8 1/8 1/16 1/16 1/8 1/4 1/8 1/8 1/4)     (1/2 1/4 1/4 1/2 1/4 1/8 1/8 1/4 1/4 1/8 1/8 1/4 1/2 1/4 1/4 1/2)) (make-omn  :length length2  :pitch (time-swallow '(3e e s)                       '((3 3 2 1) (2 3)) length2 pitch)) => ((h g4gs4fs4 q a4fs4e4 f4bb4 h f4 q a4fs4e4 e fs4a4gs4 g4f4        q a4 g4gs4e4 e b4e4d4 cs5gs4 q f4 h f4bb4gs4        q gs4g4f4 g4gs4 h f4)     (q g4gs4 e fs4a4gs4 a4gs4 q gs4g4f4 e f4bb4 s bb4fs4a4 bb4fs4        e bb4fs4a4 fs4a4 s a4g4gs4 a4g4 e a4g4gs4 q g4gs4        e a4fs4e4 fs4e4 q e4b4gs4)     (q g4gs4fs4 e gs4g4f4 f4bb4 q fs4 e a4fs4e4 s e4b4gs4 b4gs4        e gs4 f4bb4g4 s g4gs4fs4 gs4fs4 e fs4 q f4bb4gs4        e bb4f4eb4 eb4c5 q fs4)     (h g4gs4 q a4fs4e4 f4bb4 h f4bb4gs4 q a4fs4 e fs4a4gs4 g4f4        q a4fs4e4 g4gs4 e b4e4d4 cs5gs4 q f4bb4g4        h f4bb4 q gs4g4f4 g4gs4 h f4bb4gs4)) (make-omn  :length length2  :pitch (time-swallow '(3e e s)                       '((3 3 2 1) (2 3)) length2 pitch :type 2)) => ((h g4gs4fs4 q e4b4gs4 fs4a4 h f4 q gs4fs4a4 e fs4e4b4 g4gs4        q a4 gs4g4f4 e f4bb4gs4 f4eb4 q gs4 h bb4fs4a4        q gs4fs4a4 a4g4 h gs4)     (q g4gs4 e a4gs4g4 f4bb4 q fs4a4g4 e a4fs4 s e4b4gs4 gs4g4        e g4f4bb4 g4gs4 s fs4a4f4 f4bb4 e bb4gs4g4 q bb4f4        e c5fs4a4 g4gs4 q a4fs4e4)     (q g4gs4fs4 e f4bb4fs4 g4gs4 q fs4 e g4f4bb4 s gs4fs4a4 f4bb4        e gs4 bb4f4eb4 s fs4a4g4 gs4a4 e fs4 q b4g4gs4        e g4f4bb4 fs4e4 q fs4)     (h g4gs4 q fs4e4b4 gs4fs4 h bb4f4eb4 q fs4a4 e fs4e4b4 g4gs4        q a4fs4b4 f4bb4 e bb4gs4g4 eb4c5 q fs4a4gs4        h g4gs4 q a4gs4g4 gs4a4 h f4bb4g4)) JP
  11. Like
    JulioHerrlein reacted to BrianCope in Help with combining lists   
    Thank you so much Janusz!! I love the way you creative lisp-coders can hear an idea and immediately create a lisp-realisation (with extensions)!!!
     
    What am amazing community. I'll look forward to the update.
     
    All the best
     
    Brian
  12. Like
    JulioHerrlein reacted to AM in Help with combining lists   
    something like this? don't know if it's like this...
    you want to project a chord on these "filtered pitches"?
     
    (setf lengths '(1/2 1/16 7/16 1/8 3/8 3/16 5/16 1/4 1/4 5/16 3/16)) (setf pitches '(g5 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 fs4 a4 g4 gs4 e4 b4 a4 fs4 b4 e4 d4 cs5 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 f4 bb4 gs4 g4)) (setf chord-intervals '(3 1 2 2)) (make-omn :length lengths :pitch (loop for i in (append (list 0) (cumulative-sums (loop for k in lengths collect (/ k 1/16)))) append (chordize (interval-to-pitch chord-intervals :start (nth i pitches)))))  
  13. Like
    JulioHerrlein reacted to opmo in Help with combining lists   
    I think you are looking for something like that:
    (setf length '(1/2 1/16 7/16 1/8 3/8 3/16 5/16 1/4 1/4 5/16 3/16 3/8)) (setf infinity (infinity-series 100 '(g4 gs4))) => (g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 fs4 a4 g4 gs4 e4 b4 a4 fs4 b4 e4 d4 cs5 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 f4 bb4 gs4 g4) (time-swallow 1/16 1 length pitch) => (g4 fs4 a4 gs4 f4 f4 g4 fs4 a4 g4 g4 a4) (make-omn :length length :pitch (time-swallow 1/16 1 length pitch)) => (h g4 s fs4 q.. a4 e gs4 q. f4 e. qs g4 q fs4 a4 qs g4 e. q. a4) (make-omn :length length :pitch (time-swallow 1/16 '(3 3 2 1) length pitch)) => (h g4gs4fs4 s fs4a4g4 q.. a4g4 e gs4 q. f4bb4g4 e. f4bb4gs4 qs g4bb4 q fs4 a4fs4e4 qs g4gs4fs4 e. g4f4 q. a4) (make-omn :length length :pitch (time-swallow 1/16 '(3 3 2 1) length pitch :type 2)) => (h g4gs4fs4 s g4gs4a4 q.. fs4e4 e gs4 q. a4f4bb4 e. c5fs4a4 qs a4fs4 q fs4 f4bb4a4 qs fs4a4g4 e. fs4b4 q. cs5) I made some changes the function which allows you now to assign a chord size to the pitch output.
  14. Like
    JulioHerrlein reacted to opmo in Help with combining lists   
    The update will be released tomorrow. The final function name might be different.
  15. Like
    JulioHerrlein reacted to AM in Help with combining lists   
    like that?
     
    (setf lengths '(1/2 1/16 7/16 1/8 3/8 3/16 5/16 1/4 1/4 5/16 3/16)) (setf pitches '(g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 fs4 a4 g4 gs4 e4 b4 a4 fs4 b4 e4 d4 cs5 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 f4 bb4 gs4 g4)) ;;; get the pitches (loop for i in (append (list 0) (cumulative-sums (loop for k in lengths collect (/ k 1/16)))) collect (nth i pitches)) ;;; a function which generates OMN-format (defun superimpose (lengths pitches) (make-omn :length lengths :pitch (loop for i in (append (list 0) (cumulative-sums (loop for k in lengths collect (/ k 1/16)))) collect (nth i pitches)))) ;;; evaluate -> OMN output (superimpose '(1/2 1/16 7/16 1/8 3/8 3/16 5/16 1/4 1/4 5/16 3/16) '(g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 fs4 a4 g4 gs4 a4 fs4 e4 b4 g4 gs4 fs4 a4 gs4 g4 f4 bb4 a4 fs4 e4 b4 fs4 a4 g4 gs4 e4 b4 a4 fs4 b4 e4 d4 cs5 gs4 g4 f4 bb4 g4 gs4 fs4 a4 f4 bb4 gs4 g4 bb4 f4 eb4 c5 g4 gs4 fs4 a4 gs4 g4 f4 bb4 fs4 a4 g4 gs4 a4 fs4 e4 b4 f4 bb4 gs4 g4))  
  16. Like
    JulioHerrlein reacted to opmo in Interval vector   
    Please check the PCS documents.
    (pcs '3-1 :type :vector) => (2 1 0 0 0 0) (pcs '(3-1 3-8) :type :vector) => ((2 1 0 0 0 0) (0 1 0 1 0 1))
  17. Like
    JulioHerrlein reacted to terekita in Interval vector   
    Hello,
     
    I'm aware of pcs-analysis (which prints data), but I'm looking for a way to collect lists of Forte-style interval vectors into a data structure in order to query them for similarity and difference. Something like:
     
    (get-interval-vector '3-1)
    -> (2 1 0 0 0 0)
     
    Is there an easy way to do this?
     
    thanks, Michael
  18. Like
    JulioHerrlein reacted to torstenanders in Set Theory: Retrieving Pitch Class sets from collections of notes   
    > Given some UNORDERED amount of pitches, how retrive the prime form and/or Forte Number.
     
    Check out function pcs-analysis. The problem is that this function does not return, but only print that data, so it is difficult to apply such analysis on a sequence/list of interval sets etc. 
     
    > How to do this from an existing midi file or XML ? Is t possible to retrive the forte number of every "n" notes of the pitch collection (melody or chord)?
     
    You can import MIDI files with function midi-to-score, but not (yet?) MusicXML file. 
     
    > Can you circunscribe some notes for analysis in a large file ?
     
    What do you mean?
     
    BTW, for music analysis you may want to have a look at systems designed for that, like the free music21 (http://web.mit.edu/music21/), based on Python. music21 can import music in various formats, including MIDI and MusicXML (the latter is preferable). The kind of analysis you are after is documented in the tutorial, e.g., at http://web.mit.edu/music21/doc/usersGuide/usersGuide_25_postTonalTools1.html?highlight=forte, which shows how you can add, e.g., the Forte class analysis as text (lyrics) to the score, which in turn you could export as MusicXML. With some Python programming you could also export your analysis data in a format that Lisp and thus could in turn import. E.g., you could export it from Python to JSON format (https://docs.python.org/2/library/json.html), and then import that data into Common Lisp (e.g., https://common-lisp.net/project/cl-json/).
     
    Best,
    Torsten 
     
     
  19. Like
    JulioHerrlein reacted to Stephane Boussuge in Set Theory: Retrieving Pitch Class sets from collections of notes   
    You may have a look to the function get-harmonic-path.
     
    You can decide the harmonic rhythm analysis you use fir this function with the parameter time.
     
    You can pass after the output of this function to pcs-analysis.
     
    S.
     
     
  20. Like
    JulioHerrlein reacted to RST in Parataxis for chamber ensemble   
    Hello people!
     
    This is a relatively recent work that I composed with Opusmodus.  A septet...
    Alto Flute, Clarinet, Trombone, Viola, Violoncello, Piano, Percussion
    This is a live recording from the premiere at the Trieste Prima Festival and is by Ensemble MD7 conducted by Steven Loy.
     

  21. Like
    JulioHerrlein reacted to opmo in DADA Quartet   
    You will find the 'DADA Quartet' score in the Opusmodus Scores Library with the next release.
  22. Like
    JulioHerrlein reacted to opmo in DADA Quartet   
    Algorithmic avant garde jazz improvisation for tenor saxophone, piano, bass and drums.
    I thought it is time to add something new to our 'Made in Opusmodus' forum.
     
       
     
    Samples: VSL Ensemble Pro with Vienna Instruments Pro.
     
    If you like to study the score, here it is:
    DADA Quartet.opmo
  23. Thanks
    JulioHerrlein reacted to opmo in How to control the beaming of notation ?   
    (setf time-sig '((3 3 3 3) 8))  
  24. Like
    JulioHerrlein reacted to Wim Dijkgraaf in Opusmodus on a Windows Machine (using VMWare)   
    There you are :-)

  25. Like
    JulioHerrlein reacted to Stephane Boussuge in How to control the beaming of notation ?   
    Just for info, it will be more in "Opusmodus style" to write that this way, using make-omn function:
     
    (setf some-pitches (gen-repeat 145 'g4)) (setf some-lengths (span some-pitches '(e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e e -e -e -e -e -e -e -e -e -e e e e e -e -e -e -e -e -e -e -e -e e -e - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - - = = = = = = = = = - - - - = = = = = = = = = -))) ;(setf some-division '(12)) ;(setf length-div (gen-divide some-division some-lengths)) (setf part (make-omn :pitch some-pitches :length some-lengths )) (setf time-sig '(12 8)) (def-score time ( :key-signature 'chromatic :time-signature time-sig :tempo 112 :layout (clarinet-layout 'clarinet) ) (clarinet :omn part :channel 1 :sound 'gm :program 'clarinet )) S.
     
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy