Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,059
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    Stephane Boussuge got a reaction from JulioHerrlein in Pedal on Piano   
    Lilypond works also very well with Opmo.
     
     
  2. Like
    Stephane Boussuge reacted to JulioHerrlein in Pedal on Piano   
    (dictum '(:butlast ped) mat)
    Worked great !
    Thanks !
  3. Thanks
    Stephane Boussuge got a reaction from JulioHerrlein in Pedal on Piano   
    You may use :butlast
  4. Like
    Stephane Boussuge got a reaction from david in Miniature I from "Quatre miniatures en duo pour Violon et Piano"   
    Hi folks,
     
    a work in progress, a first short piece from a series of four called "Quatre miniatures en duo" for Violin and Piano.
     
    S.
     
     
    Score1V4B.mp3 Quatre miniatures en duo.pdf
  5. Like
    Stephane Boussuge reacted to opmo in Opusmodus Update 3.0.29206   
    Additional DICTUM types: :grace-note and :previous
     
    Executes a specified function applied exclusively to grace note events.
     
    (:do (pitch-transpose 12 x) :grace-note t)  
    Executes a specified function within the specified bar(s) exclusively to grace note events.
     
    (:do (pitch-transpose 12 x) :grace-note t :bar 2)  
    This operation alters elements meeting certain predefined conditions from the preceding event, replacing them in the current event with a new element. Such conditional manipulation facilitates intricate, criteria-driven modifications.
     
    (:previous ff :do p) (:previous (h c4 f) :do (pp tr))  
    Example:
     
    (setf omn7 '((s fs3 mf d4 a4 c5 b4 f4 bb3 cs3)              ((acc e f2 cs2) q c2 f stacc)              (s e2 b2 gs3 e4 bb4 c5 bb4 e4)              ((acc e gs3 b2) q e2 f stacc)              (s c2 cs2 f2 cs3 bb3 f4 b4 c5))) (dictum '(:previous c5 :do (cs6 tr1+fermata)) omn7) => ((s fs3 mf d4 a4 c5 cs6 tr1+fermata f4 bb3 cs3) ((acc e f2 mf cs2) q c2 f stacc) (s e2 mf b2 gs3 e4 bb4 c5 cs6 tr1+fermata e4) ((acc e gs3 mf b2) q e2 f stacc) (s c2 mf cs2 f2 cs3 bb3 f4 b4 c5))  
      
  6. Like
    Stephane Boussuge got a reaction from jesele in Miniature I from "Quatre miniatures en duo pour Violon et Piano"   
    Hi folks,
     
    a work in progress, a first short piece from a series of four called "Quatre miniatures en duo" for Violin and Piano.
     
    S.
     
     
    Score1V4B.mp3 Quatre miniatures en duo.pdf
  7. Thanks
    Stephane Boussuge got a reaction from JulioHerrlein in Miniature I from "Quatre miniatures en duo pour Violon et Piano"   
    Hi folks,
     
    a work in progress, a first short piece from a series of four called "Quatre miniatures en duo" for Violin and Piano.
     
    S.
     
     
    Score1V4B.mp3 Quatre miniatures en duo.pdf
  8. Like
    Stephane Boussuge reacted to opmo in rnd-pick doesn't seem to work with subsets of omn   
    (gen-loop 4 (list (rnd-pick (list bird1 bird2 bird3)) (rnd-pick (list rest1 rest2 rest3))))  
  9. Like
    Stephane Boussuge reacted to jesele in Tension level according to Hindemith Chord Classification   
    Was missing the last chord:
     
    ((q b3eb4gs4bb4cs5fs5 mf d3c4e4g4b4d5 g2a3cs4e4fs4b4 e. bb2eb3gs3c4d4g4 s eb3g3c4d4f4bb4 tie) (h eb3g3c4d4f4bb4 mf q a2g3c4d4fs4b4 d3g3c4e4fs4a4) (q g3b3e4fs4a4d5 mf bb2gs3c4eb4g4bb4 eb2f3a3c4d4g4 e. gs2cs3fs3bb3c4eb4 s b2eb3gs3bb3cs4fs4 tie) (h b2eb3gs3bb3cs4fs4 mf q f2eb3gs3bb3d4g4 e. bb2eb3gs3c4d4f4 s eb3g3c4d4f4bb4 tie) (h eb3g3c4d4f4bb4 mf q a2g3c4d4fs4b4 e. d3g3c4e4fs4a4 s g3b3e4fs4a4d5 tie) (h g3b3e4fs4a4d5 mf q cs3b3e4fs4bb4eb5 e. fs3b3e4gs4bb4cs5 s b3eb4gs4bb4cs5fs5 tie) (h b3eb4gs4bb4cs5fs5 mf q f3eb4gs4bb4d5g5 e. bb3eb4gs4c5d5f5 s eb4g4c5d5f5bb5 tie) (h eb4g4c5d5f5bb5 mf e. cs4e4bb4b4eb5fs5 s fs3e4gs4b4eb5fs5 -q))
     
    This is what the optional print argument shows:
     
    major:Bmaj13                      Root: B4  - Topnote: FS5 - Tension: 3  - Test-type: 4 - First try.
    unaltered-dominant:D13sus4        Root: D4  - Topnote: D5  - Tension: 4  - Test-type: 4 - First try.
    major:Gmaj13#11                   Root: G4  - Topnote: B4  - Tension: 13 - Test-type: 4 - First try.
    unaltered-dominant:Bb13add11      Root: BB4 - Topnote: G4  - Tension: 5  - Test-type: 4 - First try.
    major:Ebmaj13                     Root: EB4 - Topnote: BB4 - Tension: 3  - Test-type: 4 - First try.
    dorian-minor:Am13                 Root: A4  - Topnote: B4  - Tension: 9  - Test-type: 4 - First try.
    unaltered-dominant:D13add11       Root: D4  - Topnote: A4  - Tension: 5  - Test-type: 4 - First try.
    major:Gmaj13                      Root: G4  - Topnote: D5  - Tension: 3  - Test-type: 4 - First try.
    unaltered-dominant:Bb13sus4       Root: BB4 - Topnote: BB4 - Tension: 4  - Test-type: 4 - First try.
    major:Ebmaj13#11                  Root: EB4 - Topnote: G4  - Tension: 13 - Test-type: 4 - First try.
    unaltered-dominant:Gs13add11      Root: GS4 - Topnote: EB4 - Tension: 5  - Test-type: 4 - First try.
    major:Bmaj13                      Root: B4  - Topnote: FS4 - Tension: 3  - Test-type: 4 - First try.
    dorian-minor:Fm13                 Root: F4  - Topnote: G4  - Tension: 9  - Test-type: 4 - First try.
    unaltered-dominant:Bb13add11      Root: BB4 - Topnote: F4  - Tension: 5  - Test-type: 4 - First try.
    major:Ebmaj13                     Root: EB4 - Topnote: BB4 - Tension: 3  - Test-type: 4 - First try.
    dorian-minor:Am13                 Root: A4  - Topnote: B4  - Tension: 9  - Test-type: 4 - First try.
    unaltered-dominant:D13add11       Root: D4  - Topnote: A4  - Tension: 5  - Test-type: 4 - First try.
    major:Gmaj13                      Root: G4  - Topnote: D5  - Tension: 3  - Test-type: 4 - First try.
    dorian-minor:Csm13                Root: CS4 - Topnote: EB5 - Tension: 9  - Test-type: 4 - First try.
    unaltered-dominant:Fs13add11      Root: FS4 - Topnote: CS5 - Tension: 5  - Test-type: 4 - First try.
    major:Bmaj13                      Root: B4  - Topnote: FS5 - Tension: 3  - Test-type: 4 - First try.
    dorian-minor:Fm13                 Root: F4  - Topnote: G5  - Tension: 9  - Test-type: 4 - First try.
    unaltered-dominant:Bb13add11      Root: BB4 - Topnote: F5  - Tension: 5  - Test-type: 4 - First try.
    major:Ebmaj13                     Root: EB4 - Topnote: BB5 - Tension: 3  - Test-type: 4 - First try.
    dorian-minor:Csm13                Root: CS4 - Topnote: FS5 - Tension: 9  - Test-type: 4 - First try.
    unaltered-dominant:Fs13sus4       Root: FS4 - Topnote: FS5 - Tension: 4  - Test-type: 4 - First try.
  10. Like
    Stephane Boussuge got a reaction from JulioHerrlein in Tension level according to Hindemith Chord Classification   
    Hi,
     
    I've made a function long long time ago around this idea not following strictly Hindemith if I remember it correctly but it was based on the same idea/concept.
     
    Here's my function, you can probably tweak it to your needs.
     
    Please, if you improve it in anyway, share your improvement so it could be useful for me and community as well.
     
    Stephane
     
    ;;;=============================================================== ;;; sort chords by tension ;;;=============================================================== ;;Idée: classer des accords generés de maniere X par tension avec une courbe de tensions. ;;Analyser un accord ;;1. extraire un vecteur d'intervalles ;;2. Analyser le vecteur ;;3. retourner le resultat (defun ana-tens (ivect) "renvoie le taux de tension harmonique d'un vecteur d'intervalles. utilitaire pour h-tens" (let* ((v1 (*(nth 0 ivect) 6)) (v2 (*(nth 1 ivect) 4)) (v3 (*(nth 2 ivect) 3)) (v4 (*(nth 3 ivect) 2)) (v5 (*(nth 4 ivect) 1)) (v6 (*(nth 5 ivect) 5)) (r (+ v1 v2 v3 v4 v5 v6))) r)) (defun h-tens (chord) (do-verbose ("h-tens") "renvoie le taux de tension harmonique relatif d'un accord." (let* ( (r0 (if (equal chord '(nil)) '(c4) chord)) ; Si nil, remplace par une valeur simple (c4) (r1 (melodize r0)) ;extraction du vecteur d'intervalles (r2 (pitch-to-integer r1)) (r3 (find-unique (modus r2))) (r4 (if (> (length r3) 1) (pcs-prime-form r3 :vector) '(0 0 0 0 0 0))) (r5 (ana-tens r4)) ;analyse du vecteur d'intervalles ;il faut ensuite diviser le resultat obtenu par le nombre de pcs (cardinal-number) du set et on obtient le niveau relatif de tension harmonique. ; on s'assure d'abord de ne pas avoir un accord à 1 seul accord (r6 (float (/ r5 (length r1)) 1.0))) r6 ;retourne le resultat ))) ;;;creation d'une fonction qui prend en entrée une suite d'accords et qui renvoie cette suite triée ;;;par ordre de tension harmonique croissant ou decroissant. (defun extraitcar (lst) (loop for i in lst collect (car i))) (defun extraitcdr (lst) (loop for i in lst collect (cdr i))) (defun sort-chords-tens-up (chords) "ordonne une suite d'accords par ordre croissant de tension harmonique" (do-verbose ("sort-chords-tens-up") (let* ((tens (mapcar 'h-tens chords)) (a-list (pairlis chords tens)) (sorted (stable-sort a-list #'< :key #'cdr)) (chordprog (extraitcar sorted))) chordprog))) (defun sort-chords-tens-down (chords) "ordonne une suite d'accords par ordre decroissant de tension harmonique" (do-verbose ("sort-chords-tens-down") (let* ((tens (mapcar 'h-tens chords)) (a-list (pairlis chords tens)) (sorted (stable-sort a-list #'> :key #'cdr)) (chordprog (extraitcar sorted))) chordprog))) #| ;;;Usage ;;we generate some chords (setf chords (chordize (gen-loop 12 (rnd-unique 4 (integer-to-pitch (gen-integer 12)))))) ;;we sort chords by up tension (setf chords-up (flatten (sort-chords-tens-up chords))) ;;we sort chords by down tension (setf chords-down (flatten (sort-chords-tens-down chords))) |# ;;;====================================================================================  
  11. Like
    Stephane Boussuge reacted to Cliff in Tension level according to Hindemith Chord Classification   
    Dear @Stephane Boussuge: thank you.
  12. Like
    Stephane Boussuge reacted to jesele in Tension level according to Hindemith Chord Classification   
    I also made one for Symbolic Composer some 25 years ago. If I can find it, I might try to translate it to OM.
    Might take a while since I'm fully into a jazz-voicings function at the moment.
     
     
    Jesper
  13. Like
    Stephane Boussuge got a reaction from Cliff in Tension level according to Hindemith Chord Classification   
    Hi,
     
    I've made a function long long time ago around this idea not following strictly Hindemith if I remember it correctly but it was based on the same idea/concept.
     
    Here's my function, you can probably tweak it to your needs.
     
    Please, if you improve it in anyway, share your improvement so it could be useful for me and community as well.
     
    Stephane
     
    ;;;=============================================================== ;;; sort chords by tension ;;;=============================================================== ;;Idée: classer des accords generés de maniere X par tension avec une courbe de tensions. ;;Analyser un accord ;;1. extraire un vecteur d'intervalles ;;2. Analyser le vecteur ;;3. retourner le resultat (defun ana-tens (ivect) "renvoie le taux de tension harmonique d'un vecteur d'intervalles. utilitaire pour h-tens" (let* ((v1 (*(nth 0 ivect) 6)) (v2 (*(nth 1 ivect) 4)) (v3 (*(nth 2 ivect) 3)) (v4 (*(nth 3 ivect) 2)) (v5 (*(nth 4 ivect) 1)) (v6 (*(nth 5 ivect) 5)) (r (+ v1 v2 v3 v4 v5 v6))) r)) (defun h-tens (chord) (do-verbose ("h-tens") "renvoie le taux de tension harmonique relatif d'un accord." (let* ( (r0 (if (equal chord '(nil)) '(c4) chord)) ; Si nil, remplace par une valeur simple (c4) (r1 (melodize r0)) ;extraction du vecteur d'intervalles (r2 (pitch-to-integer r1)) (r3 (find-unique (modus r2))) (r4 (if (> (length r3) 1) (pcs-prime-form r3 :vector) '(0 0 0 0 0 0))) (r5 (ana-tens r4)) ;analyse du vecteur d'intervalles ;il faut ensuite diviser le resultat obtenu par le nombre de pcs (cardinal-number) du set et on obtient le niveau relatif de tension harmonique. ; on s'assure d'abord de ne pas avoir un accord à 1 seul accord (r6 (float (/ r5 (length r1)) 1.0))) r6 ;retourne le resultat ))) ;;;creation d'une fonction qui prend en entrée une suite d'accords et qui renvoie cette suite triée ;;;par ordre de tension harmonique croissant ou decroissant. (defun extraitcar (lst) (loop for i in lst collect (car i))) (defun extraitcdr (lst) (loop for i in lst collect (cdr i))) (defun sort-chords-tens-up (chords) "ordonne une suite d'accords par ordre croissant de tension harmonique" (do-verbose ("sort-chords-tens-up") (let* ((tens (mapcar 'h-tens chords)) (a-list (pairlis chords tens)) (sorted (stable-sort a-list #'< :key #'cdr)) (chordprog (extraitcar sorted))) chordprog))) (defun sort-chords-tens-down (chords) "ordonne une suite d'accords par ordre decroissant de tension harmonique" (do-verbose ("sort-chords-tens-down") (let* ((tens (mapcar 'h-tens chords)) (a-list (pairlis chords tens)) (sorted (stable-sort a-list #'> :key #'cdr)) (chordprog (extraitcar sorted))) chordprog))) #| ;;;Usage ;;we generate some chords (setf chords (chordize (gen-loop 12 (rnd-unique 4 (integer-to-pitch (gen-integer 12)))))) ;;we sort chords by up tension (setf chords-up (flatten (sort-chords-tens-up chords))) ;;we sort chords by down tension (setf chords-down (flatten (sort-chords-tens-down chords))) |# ;;;====================================================================================  
  14. Like
    Stephane Boussuge reacted to opmo in Tablature (guitar) in Opusmodus ?   
    I never tried but the TAB clef is part of the system.
  15. Like
    Stephane Boussuge reacted to JulioHerrlein in Tablature (guitar) in Opusmodus ?   
    Great ! I´m going to check this. Thanks !
  16. Thanks
    Stephane Boussuge got a reaction from lviklund in New Zoom into OM - Chord-dictum function   
    New video exploring the fabulous new Opusmodus function "chord-dictum".
     
  17. Thanks
    Stephane Boussuge got a reaction from TomTolleson in Chord-Dictum Score   
    I've shared a video here on CHORD-DICTUM function and you will find here the code from the video.
    Enjoy !
     
     
    The Score:
     
    ;;;-------------------------------------------------------- ;;; SCORE 186 ;;; VARIATIONS POUR PIANO ;;; Etude de la fonction "chord-dictum" ;;; S.BOUSSUGE ;;; WIEN - 27.01.2024 ;;;-------------------------------------------------------- ;;; LEARN OPUSMODUS: WWW.COMPOSERWORKSHOP.COM ;;;-------------------------------------------------------- ;;; To view the score press the Cmd-Option-1 keys. ;;;-------------------------------------------------------- ;;; UTILITY ;;; REA-MARK (defun rea-mark (omn-exp) "Add rehearsal marks even on empty bars." (if (event-restp (nth-event 0 omn-exp)) (position-insert 1 'reh omn-exp :section '(0)) (edit-events '((1 1 'reh :articulation)) omn-exp))) ;;;-------------------------------------------------------- ;;; PARAMETERS (setf seed (rnd-round 1 1000000)) (init-seed seed) (setf chords.p '(h. cs3fs3b3d4fs4bb4 q bb2eb3g3b3eb4gs4 h. cs3fs3b3d4fs4bb4 q fs3bb3d4f4bb4eb5 h b2c3eb3a3c4eb4gs4 q gs2cs3f3g3bb3eb4 h fs2bb2d3e3gs3cs4 q eb2gs2c3d3fs3bb3 h. c3eb3fs3b3d4fs4bb4c5 q d3fs3bb3d4f4bb4f5 b2eb3fs3b3d4fs4bb4c5 g2bb2eb3g3b3cs4fs4a4 e2gs2cs3e3g3bb3eb4f4 a2cs3fs3a3c4eb4gs4b4 f2bb2eb3g3bb3eb4f4 h. c3eb3gs3c4e4fs4bb4d5 q a2fs3a3cs4fs4a4 d3fs3bb3d4f4bb4eb5f5 h f3gs3cs4f4g4bb4eb5g5 f3gs3cs4f4g4bb4eb5g5 w f3gs3cs4f4g4bb4eb5g5)) (setf rvel (rnd-sample (length (omn :pitch chords.p)) '((pp)(p)(mp)(mf)(f)(ff)))) (setf chords.d (omn-replace :velocity rvel chords.p)) (setf dictum1 '( (:len w :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|2|# (:len w :chd 6 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|3|# (:len w :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|4|# (:len w :chd 4 :div 4 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|5|# (:len h. :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|6|# (:len h. :chd 6 :div 3 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|7|# (:len h. :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|8|# (:len h. :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|9|# (:len h :chd 7 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|10|# (:len h :chd 6 :div 6 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|11|# (:len h :chd 5 :div 3 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|12|# (:len h :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|13|# (:len q :chd 7 :div 4 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|14|# (:len q :chd 6 :div 6 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|15|# (:len q :chd 5 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|16|# (:len q :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) ) ) (setf dictum-temp `(list (rnd-sample 8 '(w h. h q)) ; Length map (rnd-number 8 4 8) ; Chord-size map (rnd-number 8 3 7) ; Length division nil ; Velocity map nil ; Attribute map (rnd-sample 8 '((3 4) (3 4) nil)) ; Chord group (rnd-sample 8 '((0 13 1 11) nil (0 6 -6 11) nil)) ; Intervals '? ; Variant (rnd-sample 8 '(m r nil)) ; Methods (rnd-sample 8 '(nil t t nil)) ; Rhythm series )) (setf dictum2 (gen-chord-dictum (eval dictum-temp))) (setf dictum3 (gen-chord-dictum (eval dictum-temp))) (setf out1 (chord-dictum dictum1 chords.d)) (setf out2 (chord-dictum dictum2 chords.d)) (setf out3 (chord-dictum dictum3 chords.d)) (setf out4 (chord-dictum dictum1 chords.d)) (setf piano (assemble-seq chords.d out1 out2 out3 out4)) (setf split1 (ambitus-filter '(c4 c8) piano)) (setf split2 (ambitus-filter '(a0 b3) piano)) (setf piano-rh split1) (setf piano-rh.rea (assemble-seq (loop for i in piano-rh :collect (rea-mark (list i))))) (setf piano-lh split2) (setf titre (concatenate 'string "Score186-Variation-Piano-" (stringify seed) )) ;;;-------------------------------------------------------- ;;; SCORE AND LAYOUT (def-score Score186 (:title titre :subtitle "pour Piano" :composer "Stephane Boussuge" :copyright "Copyright © 2024" :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 108 :layout (piano-solo-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-rh.rea ;:port "bus 6" :channel 1 :sound 'gm :program 'acoustic-grand-piano ) (piano-lh :omn piano-lh ;:port "bus 6" :channel 1 ) ) (init-seed nil)  
     
  18. Like
    Stephane Boussuge reacted to opmo in Opusmodus Update 3.0.29191   
    To streamline the process of importing SPEAR spectral data into the Opusmodus Library, the three-step procedure has been consolidated into a singular operation. Consequently, the IMPORT-SPECTRAL-SPEAR function has been deprecated and superseded by the newly introduced SPEAR-DATA-TO-LIBRARY function. This enhancement simplifies the importation of SPEAR data in the form of .txt files into Opusmodus, making it more straightforward.
    ----- SPEAR-DATA-TO-LIBRARY &key data name section index note
     
    This function processes and imports spectral data from the SPEAR (Sinusoidal Partial Editing Analysis and Resynthesis) application, developed by Michael Klingbeil. SPEAR is a sophisticated tool for audio analysis, editing, and synthesis, based on the McAulay-Quatieri technique. It represents sounds using sinusoidal tracks or 'partials', each track depicting a sinusoidal wave with time-varying frequency and amplitude.
     
    The resynthesis process in SPEAR, which involves computing and summing all sinusoidal waves, can closely approximate the original sound. The sinusoidal model used in SPEAR provides extensive analytical detail about time-varying frequency content and allows for significant flexibility in sound editing and manipulation. SPEAR supports real-time synthesis of numerous partials, extensive editing features like cut, paste, undo/redo, and handles various standard file formats for data import/export.
     
    SPEAR, available at http://www.klingbeil.com/spear/, is free software. It exports two types of spectral data: two-point data (frequency and amplitude, referred to as 'frames') and three-point data (time, frequency, and amplitude, referred to as 'partials').
     
    The initial step in using this function is to place the SPEAR-generated data file in the ~/Opusmodus/Spectrum Data/Data/ directory. SPEAR-DATA-TO-LIBRARY will locate the data file in this directory, convert it, and save a new file in the ~/Opusmodus/Spectrum Data/Partials/ folder. Ultimately, the resultant ‘library’ file will be stored in the ~/Opusmodus/User Source/Libraries/Def-Library/ directory.
     
    Examples:
     
    Generate a library with frames (two-point data):
     
    (spear-data-to-library :data "mar-frames"    ; Original SPEAR file name (.txt). :name 'mar-frames     ; Name for the generated library. :section 'frames     ; Name of the library section. :index 'p            ; Index name for each partial. )  
    The structure of the frames library file is envisioned as follows:
     
    (in-package :Opusmodus) ;;; ----------------------------------------------------------- ;;; Library | Opusmodus Version 3.0.29183 | 2024-01-31 13:00:37 ;;; ----------------------------------------------------------- (def-library mar-frames (:section frames   p0 '(13.312057 0.007893 77.37494 0.003534 118.87299 0.027961 . . .  
    Generate a library with partials (three-point data):
     
    (spear-data-to-library :data "mar-partials" ; Original SPEAR file name (.txt). :name 'mar-partials  ; Name for the generated library. :section 'partials   ; Name of the library section. :index 'p            ; Index name for each partial. )  
    The structure of the partials library file is envisioned as follows:
     
    (in-package :Opusmodus) ;;; ----------------------------------------------------------- ;;; Library | Opusmodus Version 3.0.29183 | 2024-01-31 13:02:10 ;;; ----------------------------------------------------------- (def-library mar-partials (:section partials   p0 '(0.0 15731.577 3.0E-4 0.012495 15730.756 2.9E-4 0.024989 . . .  
    Best wishes,
    Janusz
  19. Like
    Stephane Boussuge got a reaction from david in Chord-Dictum Score   
    I've shared a video here on CHORD-DICTUM function and you will find here the code from the video.
    Enjoy !
     
     
    The Score:
     
    ;;;-------------------------------------------------------- ;;; SCORE 186 ;;; VARIATIONS POUR PIANO ;;; Etude de la fonction "chord-dictum" ;;; S.BOUSSUGE ;;; WIEN - 27.01.2024 ;;;-------------------------------------------------------- ;;; LEARN OPUSMODUS: WWW.COMPOSERWORKSHOP.COM ;;;-------------------------------------------------------- ;;; To view the score press the Cmd-Option-1 keys. ;;;-------------------------------------------------------- ;;; UTILITY ;;; REA-MARK (defun rea-mark (omn-exp) "Add rehearsal marks even on empty bars." (if (event-restp (nth-event 0 omn-exp)) (position-insert 1 'reh omn-exp :section '(0)) (edit-events '((1 1 'reh :articulation)) omn-exp))) ;;;-------------------------------------------------------- ;;; PARAMETERS (setf seed (rnd-round 1 1000000)) (init-seed seed) (setf chords.p '(h. cs3fs3b3d4fs4bb4 q bb2eb3g3b3eb4gs4 h. cs3fs3b3d4fs4bb4 q fs3bb3d4f4bb4eb5 h b2c3eb3a3c4eb4gs4 q gs2cs3f3g3bb3eb4 h fs2bb2d3e3gs3cs4 q eb2gs2c3d3fs3bb3 h. c3eb3fs3b3d4fs4bb4c5 q d3fs3bb3d4f4bb4f5 b2eb3fs3b3d4fs4bb4c5 g2bb2eb3g3b3cs4fs4a4 e2gs2cs3e3g3bb3eb4f4 a2cs3fs3a3c4eb4gs4b4 f2bb2eb3g3bb3eb4f4 h. c3eb3gs3c4e4fs4bb4d5 q a2fs3a3cs4fs4a4 d3fs3bb3d4f4bb4eb5f5 h f3gs3cs4f4g4bb4eb5g5 f3gs3cs4f4g4bb4eb5g5 w f3gs3cs4f4g4bb4eb5g5)) (setf rvel (rnd-sample (length (omn :pitch chords.p)) '((pp)(p)(mp)(mf)(f)(ff)))) (setf chords.d (omn-replace :velocity rvel chords.p)) (setf dictum1 '( (:len w :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|2|# (:len w :chd 6 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|3|# (:len w :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|4|# (:len w :chd 4 :div 4 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|5|# (:len h. :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|6|# (:len h. :chd 6 :div 3 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|7|# (:len h. :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|8|# (:len h. :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|9|# (:len h :chd 7 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|10|# (:len h :chd 6 :div 6 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|11|# (:len h :chd 5 :div 3 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|12|# (:len h :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|13|# (:len q :chd 7 :div 4 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|14|# (:len q :chd 6 :div 6 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|15|# (:len q :chd 5 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|16|# (:len q :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) ) ) (setf dictum-temp `(list (rnd-sample 8 '(w h. h q)) ; Length map (rnd-number 8 4 8) ; Chord-size map (rnd-number 8 3 7) ; Length division nil ; Velocity map nil ; Attribute map (rnd-sample 8 '((3 4) (3 4) nil)) ; Chord group (rnd-sample 8 '((0 13 1 11) nil (0 6 -6 11) nil)) ; Intervals '? ; Variant (rnd-sample 8 '(m r nil)) ; Methods (rnd-sample 8 '(nil t t nil)) ; Rhythm series )) (setf dictum2 (gen-chord-dictum (eval dictum-temp))) (setf dictum3 (gen-chord-dictum (eval dictum-temp))) (setf out1 (chord-dictum dictum1 chords.d)) (setf out2 (chord-dictum dictum2 chords.d)) (setf out3 (chord-dictum dictum3 chords.d)) (setf out4 (chord-dictum dictum1 chords.d)) (setf piano (assemble-seq chords.d out1 out2 out3 out4)) (setf split1 (ambitus-filter '(c4 c8) piano)) (setf split2 (ambitus-filter '(a0 b3) piano)) (setf piano-rh split1) (setf piano-rh.rea (assemble-seq (loop for i in piano-rh :collect (rea-mark (list i))))) (setf piano-lh split2) (setf titre (concatenate 'string "Score186-Variation-Piano-" (stringify seed) )) ;;;-------------------------------------------------------- ;;; SCORE AND LAYOUT (def-score Score186 (:title titre :subtitle "pour Piano" :composer "Stephane Boussuge" :copyright "Copyright © 2024" :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 108 :layout (piano-solo-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-rh.rea ;:port "bus 6" :channel 1 :sound 'gm :program 'acoustic-grand-piano ) (piano-lh :omn piano-lh ;:port "bus 6" :channel 1 ) ) (init-seed nil)  
     
  20. Like
    Stephane Boussuge got a reaction from david in New Zoom into OM - Chord-dictum function   
    New video exploring the fabulous new Opusmodus function "chord-dictum".
     
  21. Thanks
    Stephane Boussuge got a reaction from sockmonkey72 in variable scope   
    When you bind a variables with setf somewhere in lisp and evaluate it, it becomes available for the whole system until you close it and in any workspace.
  22. Thanks
    Stephane Boussuge got a reaction from lviklund in Chord-Dictum Score   
    I've shared a video here on CHORD-DICTUM function and you will find here the code from the video.
    Enjoy !
     
     
    The Score:
     
    ;;;-------------------------------------------------------- ;;; SCORE 186 ;;; VARIATIONS POUR PIANO ;;; Etude de la fonction "chord-dictum" ;;; S.BOUSSUGE ;;; WIEN - 27.01.2024 ;;;-------------------------------------------------------- ;;; LEARN OPUSMODUS: WWW.COMPOSERWORKSHOP.COM ;;;-------------------------------------------------------- ;;; To view the score press the Cmd-Option-1 keys. ;;;-------------------------------------------------------- ;;; UTILITY ;;; REA-MARK (defun rea-mark (omn-exp) "Add rehearsal marks even on empty bars." (if (event-restp (nth-event 0 omn-exp)) (position-insert 1 'reh omn-exp :section '(0)) (edit-events '((1 1 'reh :articulation)) omn-exp))) ;;;-------------------------------------------------------- ;;; PARAMETERS (setf seed (rnd-round 1 1000000)) (init-seed seed) (setf chords.p '(h. cs3fs3b3d4fs4bb4 q bb2eb3g3b3eb4gs4 h. cs3fs3b3d4fs4bb4 q fs3bb3d4f4bb4eb5 h b2c3eb3a3c4eb4gs4 q gs2cs3f3g3bb3eb4 h fs2bb2d3e3gs3cs4 q eb2gs2c3d3fs3bb3 h. c3eb3fs3b3d4fs4bb4c5 q d3fs3bb3d4f4bb4f5 b2eb3fs3b3d4fs4bb4c5 g2bb2eb3g3b3cs4fs4a4 e2gs2cs3e3g3bb3eb4f4 a2cs3fs3a3c4eb4gs4b4 f2bb2eb3g3bb3eb4f4 h. c3eb3gs3c4e4fs4bb4d5 q a2fs3a3cs4fs4a4 d3fs3bb3d4f4bb4eb5f5 h f3gs3cs4f4g4bb4eb5g5 f3gs3cs4f4g4bb4eb5g5 w f3gs3cs4f4g4bb4eb5g5)) (setf rvel (rnd-sample (length (omn :pitch chords.p)) '((pp)(p)(mp)(mf)(f)(ff)))) (setf chords.d (omn-replace :velocity rvel chords.p)) (setf dictum1 '( (:len w :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|2|# (:len w :chd 6 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|3|# (:len w :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|4|# (:len w :chd 4 :div 4 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|5|# (:len h. :chd 7 :div 7 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|6|# (:len h. :chd 6 :div 3 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|7|# (:len h. :chd 5 :div 5 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|8|# (:len h. :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|9|# (:len h :chd 7 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|10|# (:len h :chd 6 :div 6 :vel nil :att nil :grp 3 :int nil :var ? :mtd nil :rhy t) #|11|# (:len h :chd 5 :div 3 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|12|# (:len h :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|13|# (:len q :chd 7 :div 4 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|14|# (:len q :chd 6 :div 6 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) #|15|# (:len q :chd 5 :div 2 :vel nil :att nil :grp 2 :int nil :var ? :mtd nil :rhy t) #|16|# (:len q :chd 4 :div 4 :vel nil :att nil :grp nil :int nil :var ? :mtd m :rhy t) ) ) (setf dictum-temp `(list (rnd-sample 8 '(w h. h q)) ; Length map (rnd-number 8 4 8) ; Chord-size map (rnd-number 8 3 7) ; Length division nil ; Velocity map nil ; Attribute map (rnd-sample 8 '((3 4) (3 4) nil)) ; Chord group (rnd-sample 8 '((0 13 1 11) nil (0 6 -6 11) nil)) ; Intervals '? ; Variant (rnd-sample 8 '(m r nil)) ; Methods (rnd-sample 8 '(nil t t nil)) ; Rhythm series )) (setf dictum2 (gen-chord-dictum (eval dictum-temp))) (setf dictum3 (gen-chord-dictum (eval dictum-temp))) (setf out1 (chord-dictum dictum1 chords.d)) (setf out2 (chord-dictum dictum2 chords.d)) (setf out3 (chord-dictum dictum3 chords.d)) (setf out4 (chord-dictum dictum1 chords.d)) (setf piano (assemble-seq chords.d out1 out2 out3 out4)) (setf split1 (ambitus-filter '(c4 c8) piano)) (setf split2 (ambitus-filter '(a0 b3) piano)) (setf piano-rh split1) (setf piano-rh.rea (assemble-seq (loop for i in piano-rh :collect (rea-mark (list i))))) (setf piano-lh split2) (setf titre (concatenate 'string "Score186-Variation-Piano-" (stringify seed) )) ;;;-------------------------------------------------------- ;;; SCORE AND LAYOUT (def-score Score186 (:title titre :subtitle "pour Piano" :composer "Stephane Boussuge" :copyright "Copyright © 2024" :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 108 :layout (piano-solo-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-rh.rea ;:port "bus 6" :channel 1 :sound 'gm :program 'acoustic-grand-piano ) (piano-lh :omn piano-lh ;:port "bus 6" :channel 1 ) ) (init-seed nil)  
     
  23. Like
    Stephane Boussuge reacted to opmo in New Zoom into OM - Chord-dictum function   
    Wonderful demonstration of the power of the CHORD-DICTUM. Thank you.
  24. Like
    Stephane Boussuge reacted to opmo in Chord-Dictum Score   
    You find the score in the How-to/Chord Dictum directory in v. 3.0.29177
  25. Thanks
    Stephane Boussuge got a reaction from opmo in New Zoom into OM - Chord-dictum function   
    New video exploring the fabulous new Opusmodus function "chord-dictum".
     
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy