-
Posts
1,141 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by Stephane Boussuge
-
Hello, a small piece for piano solo. Score script attached to this post. SB. Jeu2PourPiano.opmo
-
read-list-in-steps -> another idea to code this?
Stephane Boussuge replied to AM's topic in User Extensions Source Code
(let ((i -1)) (defun next (liste) (nth (mod (incf i) (length liste)) liste))) ;;; (next '(a b c d e f)) SB. -
How to add articulations to a score by hand
Stephane Boussuge replied to opmo's topic in Score and Notation
Great Tortsten and very useful !! Thank you for this function !! Stéphane -
Hello, a new piece for ensemble after viewing an Egon Schiele exposition in Albertina museum, Vienna. SB TheSingleOrangeWasTheOnlyLight Partition complète.pdf
-
Hello, Here's an example of a possible way for achieve group instrumentation. The idea is to create names of instrumental groups and extract some binary list from this groups for using in do-timeline2 function for apply the instrumentation. The score is also attached to this post. ;;;--------------------------------------------------------- ;;; GROUP INSTRUMENTATION EXAMPLE ;;;--------------------------------------------------------- (setf size 12) ;;; Basic Pitch material generation (setf pmat (integer-to-pitch (rnd-number 24 -4 16))) ;;; Global velocity definition (setf gvel (rnd-sample size '((pp)(p)(mp)(mf)(f)))) ;;; OMN material for each instrument (setf flute (make-omn :pitch (pitch-transpose 12 (rnd-sample-seq (rnd-number size 2 8) (gen-repeat 6 (list pmat)))) :length (euclidean-rhythm (gen-repeat size '(16)) 1 16 's :type '(2)) :velocity gvel )) (setf clarinet (make-omn :pitch (pitch-transpose 7 (rnd-sample-seq (rnd-number size 2 8) (gen-repeat 6 (list pmat)))) :length (euclidean-rhythm (gen-repeat size '(16)) 1 16 's :type '(2)) :velocity gvel )) (setf violin (make-omn :pitch (pitch-transpose 10 (rnd-sample-seq (rnd-number size 2 8) (gen-repeat 6 (list pmat)))) :length (euclidean-rhythm (gen-repeat size '(16)) 1 8 's :type '(2)) :velocity gvel )) (setf violoncello (make-omn :pitch (pitch-transpose -12 (rnd-sample-seq (rnd-number size 2 8) (gen-repeat 6 (list pmat)))) :length (euclidean-rhythm (gen-repeat size '(16)) 1 8 's :type '(2)) :velocity gvel )) (setf piano-rh (make-omn :pitch (pitch-transpose 4 (rnd-sample-seq (rnd-number size 2 8) (gen-repeat 6 (list pmat)))) :length (euclidean-rhythm (gen-repeat size '(16)) 1 8 's :type '(2)) :velocity gvel )) (setf piano-lh (make-omn :pitch (pitch-transpose -17 (rnd-sample-seq (rnd-number size 2 8) (gen-repeat 6 (list pmat)))) :length (euclidean-rhythm (gen-repeat size '(16)) 1 4 's :type '(2)) :velocity gvel )) ;;; GROUP INSTRUMENTATION ;;; the main idea is to generate some binary list ;;; based on the interpretation of "instrumental textures or group names). ;; INSTRUMENTAL GROUPS DEFINITION (setf texture1 '(flute clarinet)) (setf texture2 '(flute violin)) (setf texture3 '(flute clarinet violoncello piano-rh piano lh)) (setf texture4 '(clarinet violin violoncello)) (setf texture5 '(violin violoncello piano-rh piano-lh)) (setf texture6 '(flute)) (setf orch-template '(flute clarinet violin violoncello piano-rh piano-lh )) ;; utility function definition (defun binary-orch1 (orch-template groups) (loop for i in orch-template collect (if (member i groups) 0 1))) ;; main function (defun binary-orch (orch-template groups) (mapcar (lambda(x) (binary-orch1 orch-template x)) groups)) ;; group order choice (setf orchestration1 (apply-eval (rnd-sample size '( texture1 texture2 texture3 texture4 texture5 texture6 )))) ;; generate binary from group order (setf binary-from-orch (binary-orch orch-template orchestration1 )) ;; apply the orchestration (do-timeline2 '(flute clarinet violin violoncello piano-rh piano-lh) (matrix-transpose binary-from-orch) '(gen-pause x) ) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score pierrot-ensemble (:title "Title" :composer "Composer" :copyright "Copyright ©" :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 71 :layout (list (bracket-group (flute-layout 'flute) (clarinet-layout 'clarinet) (violin-layout 'violin) (violoncello-layout 'violoncello)) (piano-layout 'piano-rh 'piano-lh))) (flute :omn flute :channel 1 :sound 'gm :program 'flute :volume 95 :pan 70 :controllers (91 '(52)) ) (clarinet :omn clarinet :channel 3 :sound 'gm :program 'clarinet :volume 95 :pan 60 :controllers (91 '(57)) ) (violin :omn violin :channel 14 :sound 'gm :program 'violin :volume 100 :pan 16 :controllers (91 '(48)) ) (violoncello :omn violoncello :channel 15 :sound 'gm :program 'cello :volume 90 :pan 95 :controllers (91 '(60)) ) (piano-rh :omn piano-rh :channel 7 :sound 'gm :program 'acoustic-grand-piano :volume 100 :pan 64 :controllers (91 '(60)) ) (piano-lh :omn piano-lh :channel 8 :sound 'gm :program 'acoustic-grand-piano :volume 100 :pan 64 :controllers (91 '(60)) ) ) SB. ExempleForumInstrumentation.opmo
-
May be use REPLACE-MAP ? S.
-
figured-bass function
Stephane Boussuge replied to Avner Dorman's topic in User Extensions Source Code
André, i think you are absolutely true about deep learning for replacing the old way of hard coded rules for this type of works. It is indeed, the actual tendency. S. -
figured-bass function
Stephane Boussuge replied to Avner Dorman's topic in User Extensions Source Code
The example of music21 is great, indeed, but it is a lot of works to create such rules system. S. -
figured-bass function
Stephane Boussuge replied to Avner Dorman's topic in User Extensions Source Code
you can use :cycle t keyword and in this case, the choice will cycle in place to random choice. (gen-chord3 '(c4 eb4 g4) '((6 5) (5 3) (4 2)) :cycle t) S. -
figured-bass function
Stephane Boussuge replied to Avner Dorman's topic in User Extensions Source Code
-
figured-bass function
Stephane Boussuge replied to Avner Dorman's topic in User Extensions Source Code
Hi, you can have a look to GEN-CHORD3 function who is based on roots and intervals spec. SB. -
Great !! SB.
-
"The GESTALT-transformation makes more sense by this STEP-concept"
-
Hi André, It is very interesting and totally "in line" with my practice of remapped pitch contours. Generally, i use pitch as just melodic contours and use tonality map for constraint them. (this melodic contours, naturally can comes from everything, vectors, intervals ...and finaly converted to pitch and passed thrught Tonality-map function) The way you showed here is another interesting way. Thanks SB.
-
Excellente remarque puisque en effet, cette pièce, que j'ai voulu comme un Prélude, m'a été inspirée par l'écriture de Scriabine. SB.
-
Merci. Opusmodus est en effet un incroyable environnement de composition, le plus puissant et flexible jamais inventé jusqu'à aujourd'hui je pense. S.
-
OMN processing function creation example
Stephane Boussuge replied to Stephane Boussuge's topic in Function Examples
Great example with single-events ! Thank you André ! S. -
Hi, Here is a short example of OMN deconstruction/reconstruction technique useful when you want to do functions for working directly with omn. ;; Example of function application based on binary-list. (flatten (do-section '(0 1 0) '(chord-interval-add '(4) x) (mclist '(c4 d4 e4)))) ;;; Function example to search for '1/4 length and process the corresponding ;;; pitch for add Major 3rd interval when '1/4 is found. ;;; It is also a good example of deconstruction/reconstruction of OMN ;;; inside a function (defun add-3rd-quarter (omn) (let ((plist (disassemble-omn omn))) (setf (getf plist :pitch) (flatten (do-section (binary-invert (gen-binary-remove '1/4 (getf plist :length))) '(chord-interval-add '(4) x) (mclist (getf plist :pitch))))) (apply 'make-omn plist))) (add-3rd-quarter '(e c4 p d4 q e4 f stacc e f4 p a4 q g4 f stacc)) => (e c4 p d4 q e4gs4 f stacc e f4 p a4 q g4b4 f stacc) SB.
-
Magic piece for piano :-) SB.
-
A short piece for piano. Basically, i've played the piano part into logic X, export the part to midi and imported it into opusmodus. After importation, i have copied the OMN piano part from the imported score into a variable named pmat and also the controllers information for sustain pedal (controller No.64) into a variable named ct64. I've generated some scales from a row using harmonic-progression function: (setf row (rnd-row :type :pitch :seed 932281 :transpose 3)) (setf chords (harmonic-progression (rnd-number (length pmat) -11 11) row :size 7 :step 1 )) and finally i've applied this harmonic structure with tonality-map function onto my piano material (variable pmat): (setf piano (tonality-map (mclist chords) pmat)) and exported back the resulting midifile to Logic for further edit and piano score edit. SB.
-
new piece inspired by my new location in Austria: Vienna SB.
-
Hi, here's two small piece for piano made today a bit like some "Humoresque", one for this morning and the other this afternoon. SB.