Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,141
  • Joined

  • Last visited

Everything posted by Stephane Boussuge

  1. Hello, a small piece for piano solo. Score script attached to this post. SB. Jeu2PourPiano.opmo
  2. (let ((i -1)) (defun next (liste) (nth (mod (incf i) (length liste)) liste))) ;;; (next '(a b c d e f)) SB.
  3. Great Tortsten and very useful !! Thank you for this function !! Stéphane
  4. Hello, a new piece for ensemble after viewing an Egon Schiele exposition in Albertina museum, Vienna. SB TheSingleOrangeWasTheOnlyLight Partition complète.pdf
  5. 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
  6. (rnd-pick '(((h q) (h)) ((h. q) (h)) ((h. h) (h))) :encode nil) => ((h. q) (h)) It works this way but i think it need to work also with :encode T. May be a bug in encoding process who remove nested list. Janusz ? S.
  7. 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.
  8. The example of music21 is great, indeed, but it is a lot of works to create such rules system. S.
  9. 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.
  10. My way is to define a word default in the user-attributes file in extension: '(default "") This way, i can use default articulation name but without notation on score, just as "-" sign. SB.
  11. Hi, you can have a look to GEN-CHORD3 function who is based on roots and intervals spec. SB.
  12. "The GESTALT-transformation makes more sense by this STEP-concept"
  13. 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.
  14. 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.
  15. Merci. Opusmodus est en effet un incroyable environnement de composition, le plus puissant et flexible jamais inventé jusqu'à aujourd'hui je pense. S.
  16. 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.
  17. you can also use (progn (setf seed (random 1000)) (setf pitches1 (vector-to-pitch '(g3 b4) (gen-white-noise 10 :seed seed))) ) SB
  18. 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.
  19. new piece inspired by my new location in Austria: Vienna SB.
  20. 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.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy