Jump to content

JulioHerrlein

Members
  • Posts

    806
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    JulioHerrlein reacted to Stephane Boussuge in 2 videos on orchestral sections   
    The opmo file is a variant of one of the templates given with my video lesson pack:
    Designing generative orchestral templates with Opusmodus (level 2) - Composer Workshop
    WWW.COMPOSERWORKSHOP.COM Welcome to the course on "Designing Generative Orchestral Templates with Opusmodus"! In this course, we will explore the fascinating world of computer-assisted composition, specifically focusing on the powerful music composition environment known as Opusmodus. Opusmodus is a cutting-edge software tool that empowers composers, music theorists, and researchers to create... but I will share another one soon 🙂
    S.
  2. Thanks
    JulioHerrlein reacted to TimotheeBoussuge in Texture 1   
    Hello everyone !
     
    Here is a small ambient piece i made using Opusmodus and VCVRack.
     
    Enjoy !
     
     
    Texture1.mp3
  3. Like
    JulioHerrlein got a reaction from Stephane Boussuge in 2 videos on orchestral sections   
    Really cool, Stephane ! Any chance to get the opmo files ? All the best !
  4. Thanks
    JulioHerrlein reacted to jesele in Get-Time-Signature to Length-Span   
    Hi Julio.
    Maybe something like this will work.
     
    Jesper
     
    (setf tst '((2 4 2) (4 4 1) (2 4 3) (4 4 1) (2 4 3) (4 4 1) (2 4 3) (4 4 1) (2 4 1)))
    (defun foo (lst)
      (flatten (loop for x in lst collect (make-list (caddr x) :initial-element (/ (car x) (cadr x)))))
      )
    (foo tst)
     
    ->(1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2)
  5. Thanks
    JulioHerrlein reacted to erka in append item to all sublists   
    Thank you AM.
    That would work.
     
    I found this in the opusmodus functions. 
    (setf alist '((s -s s== -s -s== s== -s s -s s -s s -s==) (s== -s s -s s== -s s -s== s== -s s -s s -s==) (s -s== s -s s -s s== -s s -s==)))
     
    (mapcar #'(lambda (x) (append x '(q) )) alist).  
    => ((s -s s== -s -s== s== -s s -s s -s s -s== q) (s== -s s -s s== -s s -s== s== -s s -s s -s== q) (s -s== s -s s -s s== -s s -s== q))
  6. Thanks
    JulioHerrlein reacted to jesele in Get-Time-Signature to Length-Span   
    Or 
    (mapcar (lambda (x) (sum (mapcar 'abs x))) ritmos)
     
    Jesper
  7. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Get-Time-Signature to Length-Span   
    Hi Julio,
     
    you can use get-span function:
    (setf ritmos (gen-repeat 4 (gen-length '((1 2 1 2 1 1) (1 1 1 1 1 2 1) (1 -3 1 -3 2 -2 4) (-3 1 -1 1 1 1)) '(16)))) (get-span ritmos) => (1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2) S.
     
  8. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Pedal on Piano   
    musicxml-to-ly but if you use the great Lilypond Editor Frescobaldi, it is included in the menu and works very very well.

  9. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Pedal on Piano   
    Lilypond works also very well with Opmo.
     
     
  10. Like
    JulioHerrlein got a reaction from Stephane Boussuge in Pedal on Piano   
    (dictum '(:butlast ped) mat)
    Worked great !
    Thanks !
  11. Thanks
    JulioHerrlein reacted to opmo in Pedal on Piano   
    Not all publishing softwares are up to scratch with Music XML conversion, sadly.
  12. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Pedal on Piano   
    You may use :butlast
  13. Thanks
    JulioHerrlein 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))  
      
  14. Thanks
    JulioHerrlein reacted to Stephane Boussuge 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
  15. Like
    JulioHerrlein reacted to Stephane Boussuge 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))) |# ;;;====================================================================================  
  16. Like
    JulioHerrlein got a reaction from Stephane Boussuge in Tablature (guitar) in Opusmodus ?   
    Great ! I´m going to check this. Thanks !
  17. Thanks
    JulioHerrlein reacted to opmo in Tablature (guitar) in Opusmodus ?   
    I never tried but the TAB clef is part of the system.
  18. Thanks
    JulioHerrlein 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. Thanks
    JulioHerrlein reacted to opmo in Opusmodus Update 3.0.29173   
    A new Update 3.0.29173 with 4 new functions are now available for download.
    They include SPECTRAL, CHORD-DICTUM, MAKE-CHORD-DICTUM and GEN-CHORD-DICTUM.
  20. Thanks
    JulioHerrlein reacted to david in Timeline for upcoming books   
    personally I think book 1 is great! but really too complex for me. I give up quite quickly because it's too far from what I do in music.
    I will wait patiently for your book and I'm sure I will like it!
    Best!
  21. Like
    JulioHerrlein got a reaction from david in Timeline for upcoming books   
    I think it will be the next one, David.
    Hope you like it !
    Best !
  22. Thanks
    JulioHerrlein reacted to Stephane Boussuge in After The Club for Piano   
    Here's the code.
    The original material was play by myself on piano and imported to OM as midi file then processed by OM.
     
    AfterTheClub.opmo
  23. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Duet Flute / Electronic OM + VCVRack   
    The flute is VSL Flute hosted in VCV (paying option in vcv...)
     
    S.
  24. Thanks
    JulioHerrlein reacted to Stephane Boussuge in Score182_729472 Spectral test   
    Hi Julio, i made a fonction to add rehearsal marks (reh attribute) even on empty bars. Here it is:
     
    (defun rea-mark (omn-exp) "Ajoute un repere de repetition meme sur les mesures vides" (if (event-restp (nth-event 0 omn-exp)) (position-insert 1 'reh omn-exp :section '(0)) (edit-events '((1 1 'reh :articulation)) omn-exp)))  
    Stephane
  25. Thanks
    JulioHerrlein got a reaction from Stephane Boussuge in Score182_729472 Spectral test   
    beautiful, Stephane !
    How do you make that section numbers (1, 2, 3, ) in the score sections ?
     
    Best !
    Julio
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy