Jump to content

Stephane Boussuge

  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by Stephane Boussuge

  1. 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.
  2. Complementary Rhythms

    May be the function time-point-system could be also interesting for you. It is in the section Lengths/Time point system in the Opusmodus toolbox. Happy Opusmodus ! Cheers S.
  3. Complementary Rhythms

    Hi Julio, About sets, you can also have a look to the numerous Pitch-class sets functions in Opusmodus. For example, you can start to look at the doc of pcs-analysis function, and continue with all the other pcs-... functions from opmo. All the best ! S.
  4. How to span different time signatures ?

    for example if you need 3 bars of 3/4 and 2 of 6/8 you can write: :time-signature '((3 4 3)(6 8 2)) you can also separate your length material with gen-divide and get the time signature. Example here: (setf some-pitches (integer-to-pitch (gen-integer-step 0 64 '(2 1 2 3 -2 -1 -2 -1 -2)))) (setf some-lengths (rnd-sample (length some-pitches) '(e e -e e))) (setf some-division '(8 12 8 6 9)) (setf length-div (gen-divide some-division some-lengths)) (setf time-sig (get-time-signature length-div)) (def-score time ( :key-signature 'chromatic :time-signature time-sig :tempo 112 :layout (clarinet-layout 'clarinet) ) (clarinet :length length-div :pitch some-pitches :channel 1 :sound 'gm :program 'clarinet )) SB.
  5. Pattern streams from Common Music in Opusmodus

    Wonderful !! Thx a lot Torsten ! S.
  6. Name: adding articulations with pattern matching Category: Howto Date Added: 2017-08-29 Submitter: Stephane Boussuge Video example for my function articulation-map-omn. Function available here: adding articulations with pattern matching
  7. adding articulations with pattern matching

    Video example for my function articulation-map-omn. Function available here:
  8. articulation-map-omn

    Here's a small function from my toolbox i use very often for adding articulation on already generated OMN material. Also useful for adding legato slurs. Link to video example: ;;; ============================================= ;;; ARTICULATION-MAP-OMN ;;; AJOUTE DES ARTICULATIONS SUR DES LISTES OMN ;;; BASÉES SUR DU PATTERN MATCHING. ;;; ============================================= (defun articulation-map-omn (map omn &key (otherwise '-)) (do-verbose ("articulation-map-omn") (let ((plist (disassemble-omn omn))) (setf (getf plist :articulation) (pattern-map map (getf plist :length) :otherwise otherwise :swallow t)) (apply 'make-omn plist)))) #| USAGE (setf mat '((q c4 p d4 e e4 f4 s g4 f a4 g4 f4 q e4)(e d4 mp c4 s d4 e4 f4 e4 q d4 e c4 b3)(h a3 f -h))) (setf prules '( ((s s s) (leg leg leg)) ((s s)(leg leg)) ((s e)(- -)) ((s q)(- stacc)) ((q) (stacc)) ((e) (-)) )) (setf out (articulation-map-omn prules mat)) |# SB.
  9. Composing various polyphonic textures concisely

    Hi Torsten, i get a: Error: There is no package named "TU" i like the metric-shift function (not only), i will add it to my toolbox. Thx S.
  10. Parsimounious Voice Leading between collections of notes

    CHORD-RELATIVE-PATH is also interesting for voice leading, you can try it also. S.
  11. merge-rests-with-preceeding-note

    Hi Torsten, very good and very interesting !! thank you for sharing this, i enjoy it greatly ! All the best S.
  12. merge-rests-with-preceeding-note

    Sorry, it is length-legato function. S.
  13. Members Map

    All fine here on Opera Browser.
  14. merge-rests-with-preceeding-note

    filter-tie do the same , no ?
  15. Malta Fantasy

    Hi, Here's a small Woodwinds quartet: SB
  16. Stephane Boussuge

  17. La fonction GEN-CHORD2 d'Opusmodus peut se révéler très utile pour la génération de structures harmoniques. En voici un petit exemple. Nous commençons par générer une série qui nous servira de base pour la génération de nos accords. (setf row (rnd-row :type :pitch)) Voici pour commencer l'utilisation la plus simple de gen-chord2. Quand le paramètre :offset n'est pas précisé la fonction déplace la fenêtre dans la série du nombre de pas correspondant au parametre taille (size) de l'accord. (setf chords1 (gen-chord2 8 4 row)) Voici maintenant un exemple avec l'utilisation de :offset pour garder des notes communes entre les accords. Un offset de '(2 3) aura pour effet de conserver sur des accords de 4 sons, 1 et 2 notes commune alternativement, permettant ainsi une transition plus douce d'accord en accord. La fonction commence par effectuer un offset (déplacement de la fenetre) de 2 dans la série et génère un accord de 4 sons puis se déplace de 1 dans la série, ressort l'accord de 4 sons correspondant à sa position et ainsi de suite. (setf chords2 (gen-chord2 8 4 row :offset '(2 3))) Utilisation des transpositions. Même chose que précédement mais avec des transposition aléatoire des accords entre -6 et +6 demi-tons. Tout d'abord, création d'une liste de valeurs de transpositions: (setf transpo-val (rnd-sample 8 (gen-integer -6 6))) Puis utilisation de la liste dans la fonction: (setf chords3 (gen-chord2 8 4 row :offset '(2 3) :transpose transpo-val)) Ajout d'une contrainte de tessiture avec :ambitus (setf chords4 (gen-chord2 8 4 row :offset '(2 3) :transpose transpo-val :ambitus '(c4 c5))) Voici maintenant une partition utilisant la structure que nous venons de créer. Utilisation des accords comme base de mapping pour une application sur un contour mélodique: Contour basé sur un vecteur. (setf vecteur (gen-white-noise 200)) (setf smooth-vect (vector-smooth 0.63 vecteur)) Contour mélodique (on transforme le vecteur en notes) (setf contour (vector-to-pitch '(g3 c6) smooth-vect)) Longueurs Choix aléatoire de 24 mesures dans une liste de mesures pré-définies: (setf len (rnd-sample 24 '((s s s s q -q) (e e q s s s s s s s s) (h) (s s q s s s s) (q q e e q -q) ))) Assemblage OMN (setf melo (make-omn :pitch contour :length len )) Application de la progression d'accords (setf melo.map (tonality-map (mclist chords4) melo)) Contrainte de tessiture: (setf melo.amb (ambitus '(g3 c6) melo.map)) Accompagnement piano Création d'une liste de figures possibles: (setf fig '((h c2 e3c4g4)(q c2 e3c4 g3e4 e3c4)(e c4 e3 g3 c3 h c2))) Choix aléatoire de 24 figures parmi cette liste (setf rchoice (rnd-sample 24 fig)) Récupération de la structure des mesures de la mélodie: (setf mspan (get-span melo.amb)) Application de la structure de mesures sur l'accompagnement (setf acc (length-span mspan rchoice)) Application de la structure harmonique sur l'accompagnement (setf accmp.map (tonality-map (mclist chords4) accmp)) Définition du score: (def-score etude (:key-signature 'atonal :time-signature (get-time-signature melo.map) :tempo 123 :layout (violin-layout 'violin)) (violin :omn melo.amb :channel 1 ;:port 0 :sound 'gm :program 'violin) (piano :omn accmp.map :channel 2 ;:port 0 :sound 'gm :program 'acoustic-grand-piano)) Voila, en espérant que ce petit exemple vous a donné des idées. Vous trouverez en pièce jointe à ce post ce fichier au format .opmo SB.
  18. A simple example based on an All Interval Row for pitch material and euclidean rhythm for Flute rhythmic generation. ;; All interval row generation (setf row (air 16 :prime :type :pitch)) ;;; Strings chords ;; Chords gen from Air (setf chords1 (harmonic-progression '(0 0 0 0 2 2 2 2) row :size 4 :step '(1 2 2 1) ;; step throught row :relative t ;; chords relative path voice leading :seed 8392 )) ;; Strings chords assembly with pitches from chords1 ;; and length generation (whole notes '(w) repeated 32 times) ;; dynamic = pp (setf chords1.omn (filter-tie ;; tie repeated notes (make-omn :length (gen-repeat 32 '((w))) :pitch chords1 :velocity '((pp)) ))) ;;; Melody generation for Flute ;; Get the length (size) of chords1.omn (setf size (length chords1.omn)) ;; Pitch material (setf melo1.pmat (rnd-order (melodize (gen-trim size (mclist (harmonic-progression '(0 0 0 0 2 2 2 2) row :size 5 :step '(1 2 2 1) )))))) ;; Melodic generation with euclidean rhythm (setf melo1.omn (pitch-transpose 12 (make-omn :pitch melo1.pmat :length (euclidean-rhythm (gen-repeat size '(16)) 1 12 's :type 2 ) :velocity '((mf)) ))) (def-score temp ( :key-signature 'chromatic :time-signature '(4 4) :composer "Stéphane Boussuge" :copyright "Copyright © 2017 s.boussuge" :tempo 64 ) (strings1 :omn chords1.omn :channel 1 :port 0 :sound 'gm :program 'acoustic-grand-piano :controllers (1 (gen-dynamic-controller chords1.omn)) ) (flute1 :omn melo1.omn :channel 2 :port 0 :sound 'gm :program 'acoustic-grand-piano :controllers (1 (gen-dynamic-controller melo1.omn)) ) ) SB. AudioOutput.mp3
  19. Prelude for Piano

    Hi, for study purpose only, you will find attached to this post the score script of this Prelude for Piano. SB. PreludeForNicolai.opmo
  20. Prelude for Piano

    Dear Wim, thank you for your kind words. the transposition was chosen by hear. About the harmonic path, it come from my original idea mat1: (setf mat1 '(#|1|# (ped e a2 p ds3 a3 d4 q c5 fs4 ped+tie) #|2|# (ped w fs4) #|3|# (ped e a2 ds3 a3 d4 q c5 fs4 ped) #|4|# (ped q d5 h. c5) #|5|# (ped e a2 ds3 a3 d4 q c5 fs4) #|6|# (w fs4 ped1) #|7|# (ped e a2 ds3 a3 d4 q d5 c5 ped) #|8|# (w fs4 ped) )) ;;; get the harmonic content from basic material mat1 (setf hmat1 (get-harmonic-path mat1 :chord t :unique t :time '(ww))) After this extraction, i apply some transposition to this material (extended by gen-trim): ;;; Transpose list to apply to harmonic path (setf trsp2 '(-2 4 -2 2 8 -1 8 3 -3 2 6 0 1 0 -1 -1 4 4 9 7)) (setf path2 (pitch-transpose trsp2 (gen-trim 20 (mclist hmat1)))) And finally, i use chord-closest-path function for the voice leading: ;; chord closest path generation to use as harmonic material for variation 3 ;(setf closest-hpath2 (chord-closest-path (car path2) path2)) And i've added the output of this function directly in a variable because the computation time for chord-closest-path is a bit long and i like to be able to run my scripts very often when composing (for reading the score and hearing) and need fast evaluation: (setf closest-hpath2 '((g2cs3g3c4bb4e4) (g2cs3fs3cs4bb4e4fs5) (g2cs3g3c4bb4e4) (gs2d3f3b3b4e4e5) (gs2d3f3b3bb4f4) (gs2cs3gs3b3cs5f4d3) (gs2d3f3b3bb4f4) (fs2c3a3c4f4eb4f5) (fs2c3fs3b3a4eb4) (gs2d3f3b3b4e4e5) (gs2c3fs3eb4a4eb4) (fs2d3a3c4a4eb4d5) (g2cs3bb3bb3eb5e4) (fs2c3a3d4a4eb4d5) (gs2cs3gs3b3d5f4) (gs2cs3gs3b3cs5f4d3) (g2cs3fs3cs4bb4e4) (g2cs3fs3cs4bb4e4fs5) (fs2c3fs3b3a4eb4) (g2cs3a3bb3a4e4e4))) SB.
  21. Name: Composing a piano prelude example Category: Howto Date Added: 2017-07-11 Submitter: Stephane Boussuge Here's a video (in French) i made for a friend to show her how i've used Opusmodus to compose my Piano prelude. SB. And the Link to the score script and full piece: Composing a piano prelude example
  22. Composing a piano prelude example

    Here's a video (in French) i made for a friend to show her how i've used Opusmodus to compose my Piano prelude. SB.
  23. La Vieille Abbaye

    Atmospheric Orchestral Miniature. SB.
  24. La Vieille Abbaye

    Merci :-) Metropolis Ark 2 S.
  25. You just have to create your folders and subfolder to create structure in Utility. S.