Jump to content

TomTolleson

Members
  • Posts

    77
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    TomTolleson reacted to Pli in Updated library of many custom Opusmodus functions   
    I don't know about cluster engine, but regarding the Quicklisp error above, you can get it up by following the instruction in the comments of Opusmodus/User Source/Extensions/Quicklisp Start.lisp
  2. Thanks
    TomTolleson reacted to opmo in Updated library of many custom Opusmodus functions   
    I think Torsten needs to make changes to his libraries to work with LW first.
  3. Thanks
    TomTolleson reacted to Stephane Boussuge in Interpolation between integers with gen-transition   
    Better doc:
     
    CLHS: Function FLOOR, FFLOOR, CEILING, FCEILING...
    WWW.LISPWORKS.COM  
  4. Thanks
    TomTolleson reacted to Stephane Boussuge in Interpolation between integers with gen-transition   
    Here's the doc:
     
    Simplified Common Lisp reference - round
    JTRA.CZ  
     
     
  5. Thanks
    TomTolleson reacted to Stephane Boussuge in Interpolation between integers with gen-transition   
    May be this can help a bit, I've tried this:
     
    (setf bass '(g2 c3 a2 e3 fs3)) (setf bassint (pitch-to-integer bass)) ;=> (-17 -12 -15 -8 -6) ;;; create a set of integers from interpolation ;;; between bass integers (bassint), ;;; then convert those to pitches (defun linear-interpolation (numbers steps) (let ((interpolated-numbers nil)) (loop for i from 0 below (- (length numbers) 1) for number = (nth i numbers) for next-number = (nth (1+ i) numbers) do (loop for j from 0 to steps do (push (+ (* (- next-number number) (/ (float j) steps)) number) interpolated-numbers) ) (push next-number interpolated-numbers)) (filter-repeat 1 (nreverse interpolated-numbers)))) (setf n-steps 4) (setf new-ints (mapcar 'round (linear-interpolation bassint n-steps))) (setf melody (integer-to-pitch new-ints)) (setf sop (filter-tie (make-omn :pitch (pitch-transpose 24 melody) :length '(e) :span :pitch ))) (setf bas (make-omn :pitch bass :length '(h) :span :pitch )) (ps 'gm :fl (list sop) :bn (list bas) :time-signature '(4 4)) SB.
  6. Thanks
    TomTolleson reacted to opmo in arp-down and arp-up still supported in OM3?   
    You can't use pitches and articulation elements without length element.
     
    (setf protochords (gen-repeat 5 (respell '(q eb2eb4g4bb4 arp-down c2c4e4ab4 ab2eb4ab4b4 arp-down d2d4f4a4 arp-down bb2d4f4bb4 arp-down g2eb4g4b4 arp-down c2c4eb4g4 arp-down ab2eb4ab4b4 arp-down d2d4gb4a4 arp-down bb2d4gb4bb4 arp-down g2d4g4bb4 arp-down c2c4eb4g4 arp-down ab2c4eb4ab4 arp-down f2db4f4a4 arp-down bb2db4f4bb4 arp-down g2d4g4bb4 arp-down eb2eb4gb4bb4 arp-down ab2c4eb4ab4 arp-down f2db4f4a4 arp-down d2d4f4a4 arp-down g2d4g4bb4 arp-down eb2eb4g4bb4 arp-down))))
  7. Thanks
    TomTolleson reacted to JulioHerrlein in Unfold method in ‘om for chord inversion   
    (pitch-rotate -2 '(b3c4e4g4))  
  8. Thanks
    TomTolleson reacted to Stephane Boussuge in Parametric Tintinntabuli   
    Sorry, the function euclidean-rhythms was one of my personal functions.
    Attached, you will find the function definition file.
     
    SB.
     
    euclidean-rhythms.lisp
  9. Thanks
    TomTolleson reacted to JulioHerrlein in Parametric Tintinntabuli   
    Dear Stéphane and Tom
     
    I did some edits in the Stéphane´s code. Some functions had names changed.
     
    Hope it can help.
    Best,
    Julio
     
    ;;;--------------------------------------------------------- ;;; Parameters ;;;--------------------------------------------------------- (setf size 8) (setf bars (gen-repeat size '(4/4))) (setf pause (length-span bars '(-q))) (setf ph1.size 8) (setf bars (gen-repeat size '(4/4))) (setf pause (length-span bars '(-q))) (setf mode1 '(dorian :root d4)) (setf ph1.pitch (filter-repeat 1 (tonality-map mode1 (integer-to-pitch (vector-round 0 16 (vector-smooth 0.36 (gen-white-noise 256 :seed 772))))))) (setf ph1.len (euclidean-rhythm (gen-repeat ph1.size '(9)) 1 5 1/8 :seed 93)) ; :binary-to-length t) ; :len-val 'e ; )) ;; Antécédent (setf ph1.omn (make-omn :pitch ph1.pitch :length ph1.len )) ;; Conséquent (setf ph1b.omn (ambitus '(0 16) (tonality-map mode1 (pitch-variant ph1.omn :variant 'i)))) (setf ph1 (assemble-seq ph1.omn ph1b.omn)) ;; Tintinabuli ;; V1 (setf tint1a.pitchlist '(c4 e4 g4)) (setf tint1a.pitch (rnd-sample (* ph1.size 4) tint1a.pitchlist)) (setf tint1a.len (euclidean-rhythm (gen-repeat (length ph1) '(9)) 1 2 1/8 :seed 103)) ; :binary-to-length t ; :len-val 'e ; )) (setf tint1a.omn (filter-tie (tonality-map mode1 (make-omn :pitch tint1a.pitch :length tint1a.len )))) (setf tint1a tint1a.omn) ;; V2 (setf tint1b.pitchlist '(c3 e3 g3)) (setf tint1b.pitch (rnd-sample (* ph1.size 4) tint1b.pitchlist)) (setf tint1b.len (euclidean-rhythm (gen-repeat (length ph1) '(9)) 1 2 1/8 :seed 19)) ; 1/8)) ; :binary-to-length t ; :len-val 'e ; )) (setf tint1b.omn (filter-tie (tonality-map mode1 (make-omn :pitch tint1b.pitch :length tint1b.len )))) (setf tint1b tint1b.omn) ;; V3 (setf tint1c.pitchlist '(c2 e2 g2 c3)) (setf tint1c.pitch (rnd-sample (* ph1.size 4) tint1c.pitchlist)) (setf tint1c.len (euclidean-rhythm (gen-repeat (length ph1) '(9)) 1 2 1/8 :seed 17662)) ; :binary-to-length t ; :len-val 'e ; )) (setf tint1c.omn (filter-tie (tonality-map mode1 (make-omn :pitch tint1c.pitch :length tint1c.len )))) (setf tint1c tint1c.omn) (setf v1 ph1) (setf v2 tint1a) (setf v3 tint1b) (setf v4 tint1c) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1)) (pitch-transpose 0 (ambitus 'violin v2)) (pitch-transpose 0 (ambitus 'viola v3)) (pitch-transpose 0 (ambitus 'cello v4)) ) :key-signature 'atonal :tempo 90 :flexible-clef nil :rewrite-lengths nil :accidentals :cautionary :merge-rests nil )  
  10. Thanks
    TomTolleson reacted to Stephane Boussuge in Parametric Tintinntabuli   
    Hi,
     
    I've made some Tintinabuli test long time ago in Opusmodus but don't remember if it was correctly implemented or not....
    Also all of this tests are broken because using a very old version of Opusmodus.
    I don't have time to fix them all now but I quick fixed the first one I found with actual Opusmodus correct functions.
     
    Don't know if that one is correct regarding the "rules" but may be it could help you a bit.
     
    This subject interest me as well and if I find a bit of time, I will explore it deeper this year.
     
    Best
     
    SB.
     
    ;;;--------------------------------------------------------- ;;; Parameters ;;;--------------------------------------------------------- (setf size 8) (setf bars (gen-repeat size '(4/4))) (setf pause (length-span bars '(-q))) (setf ph1.size 8) (setf bars (gen-repeat size '(4/4))) (setf pause (length-span bars '(-q))) (setf mode1 '(dorian :root d4)) (setf ph1.pitch (filter-repeat 1 (tonality-map mode1 (integer-to-pitch (vector-round 0 16 (vector-smooth 0.36 (gen-white-noise 256 :seed 772))))))) (setf ph1.len (euclidean-rhythms (gen-repeat ph1.size '(9)) '(1) '(5) :seed 93 :binary-to-length t :len-val 'e )) ;; Antécédent (setf ph1.omn (make-omn :pitch ph1.pitch :length ph1.len )) ;; Conséquent (setf ph1b.omn (ambitus '(0 16) (tonality-map mode1 (pitch-variant ph1.omn :variant 'i)))) (setf ph1 (assemble-seq ph1.omn ph1b.omn)) ;; Tintinabuli ;; V1 (setf tint1a.pitchlist '(c4 e4 g4)) (setf tint1a.pitch (rnd-sample (* ph1.size 4) tint1a.pitchlist)) (setf tint1a.len (euclidean-rhythms (gen-repeat (length ph1) '(9)) '(1) '(2) :seed 103 :binary-to-length t :len-val 'e )) (setf tint1a.omn (filter-tie (tonality-map mode1 (make-omn :pitch tint1a.pitch :length tint1a.len )))) (setf tint1a tint1a.omn) ;; V2 (setf tint1b.pitchlist '(c3 e3 g3)) (setf tint1b.pitch (rnd-sample (* ph1.size 4) tint1b.pitchlist)) (setf tint1b.len (euclidean-rhythms (gen-repeat (length ph1) '(9)) '(1) '(2) :seed 19 :binary-to-length t :len-val 'e )) (setf tint1b.omn (filter-tie (tonality-map mode1 (make-omn :pitch tint1b.pitch :length tint1b.len )))) (setf tint1b tint1b.omn) ;; V3 (setf tint1c.pitchlist '(c2 e2 g2 c3)) (setf tint1c.pitch (rnd-sample (* ph1.size 4) tint1c.pitchlist)) (setf tint1c.len (euclidean-rhythms (gen-repeat (length ph1) '(9)) '(1) '(2) :seed 17662 :binary-to-length t :len-val 'e )) (setf tint1c.omn (filter-tie (tonality-map mode1 (make-omn :pitch tint1c.pitch :length tint1c.len )))) (setf tint1c tint1c.omn) (setf soprano ph1) (setf alto tint1a) (setf tenor tint1b) (setf bass tint1c) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score choir-satb (:title "Title" :composer "Composer" :copyright "Copyright © " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass)) (soprano :omn soprano :channel 1 :sound 'gm :program 'choir-aahs :volume 100 :pan 16 :controllers (91 '(48)) ) (alto :omn alto :channel 2 :sound 'gm :program 'choir-aahs :volume 100 :pan 41 :controllers (91 '(48)) ) (tenor :omn tenor :channel 3 :sound 'gm :program 'choir-aahs :volume 100 :pan 86 :controllers (91 '(48)) ) (bass :omn bass :channel 4 :sound 'gm :program 'choir-aahs :volume 100 :pan 111 :controllers (91 '(48)) ) )  
  11. Like
    TomTolleson reacted to Stephane Boussuge in Parametric Tintinntabuli   
    Dear Torsten, about Cluster Engine, have you got some plans to implement this wonderful tool into the new Opusmodus V3 ? as well as your great others libraries like Fenv and others ?
     
    Best
     
    Stéphane
  12. Like
    TomTolleson reacted to torstenanders in Parametric Tintinntabuli   
    I once implemented a version of this in PWGL with constraint programming (rule based programming) and the help of pwgl-cluster-engine and pwgl-cluster-rules. Unfortunately, I PWGL is meanwhile broken for me, and I cannot open this patch anymore, but just in case you have used PWGL and these libraries before, I attach a patch demonstrating it.
     
    If not, then this likely will not really help you. Sorry that I cannot help more. Its about 10 years ago since I did this...
     
    Best,
    Torsten
     
    04-tintinnabuli.pwgl
  13. Like
    TomTolleson got a reaction from JulioHerrlein in MIDI to Score error   
    Actually, what I'm finding works well is just to load the MIDI into Musescore and use the Midi Entry function under the Tools menu in OM to record the pitches. So my workflow is fine.
  14. Like
    TomTolleson got a reaction from Stephane Boussuge in Producing new lines of pitches of various lengths, all ending on the same bar.   
    Thanks so much Stephane! I wasn’t aware of the get-span and length-span options. This is a huge help!
     
    Tom
  15. Like
    TomTolleson reacted to opmo in MIDI to Score error   
    In the midi file there is no tempo set. We will add 120 as a default if midi without one.
    We are patching other apps bugs, there should be no midi files without a tempo parameters - no time no music 🙂
    This will be fixed in the next update.
  16. Like
    TomTolleson reacted to Stephane Boussuge in Un jardin à Keranchaudel   
    Here's a minimalist style soundtrack made as one of the tests for my new orchestral template.
     
     

    SB.
  17. Thanks
    TomTolleson reacted to JulioHerrlein in Negative Harmony Function   
    Dear Tom, 
     
    Looks great ! Sometimes we find excellent stuff just by accident. I love when this happens !
    Actually, as I said before, the negative harmony is sligthly different from just the inversion of the pitch. 
    In your inversion, the pitch axis is the first note a4, so all the inversion operation is based in that first note.
     
    In the  negative harmony, the axis lies between two notes and have some tonal orientation, i.e., it´s a kind of mapping that changes according to each tonality. For example, the mapping corresponding to the C center would be like:
     

     
    So, the "negative version" of  your melody below:
     
    a4 g4 fs4 a4 d5 a4 fs5 d5 a5 fs5 e5 d5
     
    would be, according to the graph above:
     
    Bb C Db Bb F Bb Db F Bb Db Eb F.
     
    Please, check the first video of the post, it´s very pedagogical.
     
    Probably Stephane will have a solution. The keyword is MAPPING. Maybe pattern substitution, pattern match, but a function where the octaves are relatives.
     
    All the best !
     
    Julio
     
     
  18. Thanks
    TomTolleson reacted to Stephane Boussuge in Session 6 - 20.06.20 - From Nothing (Part 2)   
    Hi folks,
    here's the file from the last session.
     
    Happy study !
    Stéphane
     
    FromNothingSuite-20-06-2020.opmo
  19. Thanks
    TomTolleson reacted to opmo in Opusmodus 1.4 - Microtonality   
    Forthcoming ver. 1.4
    Microtonal System
     
    OMN Syntax:

     
    Example:
     


     
    Best wishes,
    Janusz
  20. Like
    TomTolleson reacted to Stephane Boussuge in Providing code examples to students   
    (setf op25arnie '(e4 f4 g4 cs4 fs4 ds4 gs4 d4 b4 c4 a4 as4)) (respell (gen-chord2 20 '(3) op25arnie :offset '(2 1 2 3))) Using the :offset parameter in the gen-chord2 function could be interesting too, for example for keeping notes between chords for smoother transitions with common tones.
     
    S.
  21. Like
    TomTolleson reacted to JulioHerrlein in Providing code examples to students   
    Dear Friends,
     
    Here 's a way to produce chords from 12 tone rows (Schoenberg opus 25 row):
    (setf op25arnie '(e4 f4 g4 cs4 fs4 ds4 gs4 d4 b4 c4 a4 as4)) (respell (gen-chord2 20 '(3 3 3 1) op25arnie)) Hope it helps a little.
     
    Best,
    Julio
     
     
    Also check this !
    And the Nigel Morgan Parametric Composition book, of course !
    More specific, to keep track of the row:
    (setf op29webernLib (expand-libraries '(library vienna webern r19))) (setf rowint (pitch-to-integer op29webernLib)) (setf pitches (gen-repeat 10 op29webernLib)) (setf lengths (span pitches (gen-repeat 10 '(s s s s -s s e -s s s -s e e -q q)))) (setf text (span pitches rowint)) (def-score Stage-1 (:key-signature 'chromatic :time-signature '(4 4) :tempo 80 :layout (treble-layout 'piano-rh)) (piano-rh :length lengths :pitch pitches :text text ;:velocity dynamics :channel 1 :sound 'gm :program 'acoustic-grand-piano) ) Best,
    Julio
  22. Like
    TomTolleson reacted to opmo in Providing code examples to students   
    Such an example will be very useful indeed.
    Looking forward to see how you made it work.
    Best, J
  23. Like
    TomTolleson got a reaction from opmo in Providing code examples to students   
    Hello,
     
    I'm making a presentation on 12-tone composition in an educational context. While my focus is on a 12-tone map (including OMN and OpusModus code) I want to begin with some more simple examples e.g. a Canon, a Fugue, first second and third species counterpoint.
     
    While I can create a canon, counterpoint and a fugue myself with a bit of time, it would be much less time-consuming for me if I were able to use existing examples. Is there an existing library of OMN examples of these types of compositions?

    If not, I'm happy to post mine once I'm done.

    Tom
  24. Like
    TomTolleson reacted to Stephane Boussuge in Pattern for Piano   
    New short piano piece from "3 Pièces pour Piano".
     

    stephaneboussuge · Pattern for Piano  
    SB.
     
     
  25. Like
    TomTolleson reacted to Stephane Boussuge in Evaluate and Play errors   
    Tom, you tried to evaluate the score ttchordpath who has no def-score inside it.
     
    I gave it to you as an script example but it is not a score (no score def) and btw you need to evaluate each line one after the other or evaluate all but don't use evaluate and play because Opusmodus can't play a score not defined ;-)
     
    Stephane
     
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy