-
Posts
77 -
Joined
-
Last visited
Reputation Activity
-
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
-
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.
-
TomTolleson reacted to Stephane Boussuge in Interpolation between integers with gen-transition
Better doc:
CLHS: Function FLOOR, FFLOOR, CEILING, FCEILING...
WWW.LISPWORKS.COM
-
TomTolleson reacted to Stephane Boussuge in Interpolation between integers with gen-transition
Here's the doc:
Simplified Common Lisp reference - round
JTRA.CZ
-
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.
-
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)))) -
TomTolleson reacted to JulioHerrlein in Unfold method in ‘om for chord inversion
(pitch-rotate -2 '(b3c4e4g4))
-
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
-
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 )
-
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)) ) )
-
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
-
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
-
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.
-
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
-
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.
-
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.
-
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
-
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
-
TomTolleson reacted to opmo in Opusmodus 1.4 - Microtonality
Forthcoming ver. 1.4
Microtonal System
OMN Syntax:
Example:
Best wishes,
Janusz
-
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.
-
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
-
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
-
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
-
TomTolleson reacted to Stephane Boussuge in Pattern for Piano
New short piano piece from "3 Pièces pour Piano".
stephaneboussuge · Pattern for Piano
SB.
-
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