Jump to content

opmo

Administrators
  • Posts

    2,869
  • Joined

  • Last visited

Reputation Activity

  1. Thanks
    opmo reacted to Stephane Boussuge in Forme étrange pour piano   
    Basic row definition 
    (setf row '(c4 e4 g4 bb4 d5 fs5 a5 gs5 f5 eb4 cs4 b4))  
    Extract some subsets from the row.
    (setf set1 (subseq row 0 6)) (setf set2 (subseq row 3 9)) (setf set3 (subseq row 6 12))  
    Chords generation from sets
    (setf couleur1 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set1))) (setf couleur2 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set2))) (setf couleur3 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set3)))  
    Preparing tonality-series for futur mapping (create harmonics paths)
    (setf path1 (tonality-series couleur1)) (setf path2 (tonality-series couleur2)) (setf path3 (tonality-series couleur3))
    Section1
    Define ch1, a repeated generative process with GEN-LOOP
    (setf ch1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((q h -q) (h =) (e = = = h) (w) (q =) (q e = q) (q -))) :pitch (rnd-sample 6 couleur1) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Define un1, a repeated generative process with GEN-LOOP
    (setf un1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((h -q) (w) (q -h))) :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur1)))) :velocity '((ffff))))))))  
    Define ar1, a repeated generative process with GEN-LOOP
    (setf ar1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path1) (rnd-sample 1 '((c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Define ar1b, a repeated generative process with GEN-LOOP
    (setf ar1b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path1) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Assembly section1.
    (setf s1 (rnd-sample 24 (append ch1 un1 ar1 ar1b)))  
    Score FormeEtrange-s1
    (def-score FormeEtrange-s1 (:title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature atonal :time-signature (get-time-signature s1) :tempo 108 :layout (piano-grand-layout 'piano)) (piano :omn s1 :channel 1 :sound 'gm :program 'acoustic-grand-piano))
    Section2
    (setf ch2 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((q h -q) (h =) (e = = = h) (w) (q =) (q e = q) (q -))) :pitch (rnd-sample 6 couleur2) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf un2 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((h -q) (w) (q -h))) :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur2)))) :velocity '((ffff))))))))  
    (setf ar2 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path2) (rnd-sample 1 '((c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf ar2b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path2) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Assembly section2.
    (setf s2 (rnd-sample 24 (append ch2 un2 ar2 ar2b)))  
    Score FormeEtrange-s2
    (def-score FormeEtrange-s2 (:title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature atonal :time-signature (get-time-signature s2) :tempo 108 :layout (piano-grand-layout 'piano)) (piano :omn s2 :channel 1 :sound 'gm :program 'acoustic-grand-piano))  
    Section3
    (setf ch3 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((q h -) (h =) (e = = = h) (w) (q =) (q e = q) (q -))) :pitch (rnd-sample 6 couleur3) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf un3 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((h -q) (w) (q -h))) :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur3)))) :velocity '((ffff))))))))  
    (setf ar3 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path3) (rnd-sample 1 '((c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    (setf ar3b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :length (rnd-sample 1 '((t = = = = q -) (t = = = = = = = = = = =) (s = = = = = = =) (t = = = = = e = q -))) :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path3) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :velocity (rnd-sample 1 '((f) (ff) (fff) (mf) (mp) (p) (pp)))))))))  
    Assembly Section 3
    (setf s3 (rnd-sample 24 (append ch3 un3 ar3 ar3b)))  
    Score FormeEtrange-s3
    (def-score FormeEtrange-s3 (:title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature atonal :time-signature (get-time-signature s3) :tempo 108 :layout (piano-grand-layout 'piano)) (piano :omn s3 :channel 1 :sound 'gm :program 'acoustic-grand-piano))   Final score (compile-score '(FormeEtrange-s1 FormeEtrange-s2 FormeEtrange-s3)) SB.
    FormeEtrange.opmo
  2. Like
    opmo 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
    opmo reacted to torstenanders in ADSF support for Opusmodus 3: could you please set :keep-modules to T when creating the Opusmodus delivery?   
    Oh, thanks for clarifying that for loading modules is still possible to use asdf:load-system as a workaround. Nice. I can confirm that this is working!
     
    I still get errors, e.g., when loading cluster-engine, but it is now up to me trying to get that fixed. 😉
  4. Thanks
  5. Thanks
  6. Thanks
    opmo reacted to Stephane Boussuge in Pillars Of Creation   
    Hi folks,
    a short electronic track in honor of Hubble telescope discovery...
    I've used the template shared here as starting point:
    Attached the Audio file, Opmo score and VCVRack.
    Best
    S.
    PillarsOfCreation.wav PillarsOfCreation.vcv PillarsOfCreation.opmo
  7. Like
    opmo got a reaction from marqrdt in Fuction for sequence polarity   
    Is this what you are looking for:
     
    (defun polarity (seq &key sum)   (do-verbose ("polarity")     (flet ((polarity-i (in-seq)              (let ((integers (if (omn-pitchp (car in-seq)) (pitch-to-midi in-seq) in-seq)))                (when (equal (length integers) 0)                  return 0                  )                (let ((accum 0) (int-pairs (interval-class integers)))                  (mapcar (lambda (x) (when (evenp x) (incf accum) )) int-pairs)                  (/ (* accum 1.0) (- (length integers) 1))                  ))))       (let ((result (loop for i in (lists! seq)                           collect (polarity-i i))))         (if sum (/ (find-sum (flatten result)) (length result)) result))))) (polarity '(1 3 6 4 2)) => (0.75) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4))) => (0.75 0.25) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4)) :sum t) => 0.5  
  8. Like
    opmo got a reaction from Stephane Boussuge in Fuction for sequence polarity   
    Is this what you are looking for:
     
    (defun polarity (seq &key sum)   (do-verbose ("polarity")     (flet ((polarity-i (in-seq)              (let ((integers (if (omn-pitchp (car in-seq)) (pitch-to-midi in-seq) in-seq)))                (when (equal (length integers) 0)                  return 0                  )                (let ((accum 0) (int-pairs (interval-class integers)))                  (mapcar (lambda (x) (when (evenp x) (incf accum) )) int-pairs)                  (/ (* accum 1.0) (- (length integers) 1))                  ))))       (let ((result (loop for i in (lists! seq)                           collect (polarity-i i))))         (if sum (/ (find-sum (flatten result)) (length result)) result))))) (polarity '(1 3 6 4 2)) => (0.75) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4))) => (0.75 0.25) (polarity '((c4 e4 c3 ds4 b5) (c4 cs4 d4 ds4 f4)) :sum t) => 0.5  
  9. Like
    opmo reacted to marqrdt in Fuction for sequence polarity   
    OMers,
    I wrote this function and use it in my composition work. Please feel free to steal use it. It returns the "polarity" of a sequence, defined as the ratio of consecutive uneven and even interval classes (IC) in a sequence. I use this as a way of testing if a generated sequence contains a balanced mix of even or uneven ICs.
     
    (defun polarity (in-seq)     (when (equal (length in-seq) 0)       return 0       )     (let((accum 0) (int-pairs (interval-class in-seq)))       (mapcar (lambda (x) (when (evenp x) (incf accum) )) int-pairs)       (/ (* accum 1.0) (- (length in-seq) 1))       )     )  
    Some examples:
    ;; The polarity of a chromatic scale is 0.0, as there are no even interval classes.
    OM 9 > (polarity '(0 1 2 3 4 5 6 7 8 9 10)) 0.0  
    ;; The polarity of a whole-tone scale is 1.0, as there are no uneven interval classes.
    OM 10 > (polarity '(0 4 8 2 6 10)) 1.0  
    ;; The polarity of a chromatic scale is 0.0, as there are no even interval classes.
    OM 9 > (polarity '(0 1 2 3 4 5 6 7 8 9 10)) 0.0  
    ;; The polarity of a sequence of alternating even and uneven ICs is 0.5.
    OM 14 > (polarity `(0 6 11 5 10 4 9 3 8 2 7 1 6)) interval-class  
    Right now it only works on sequences of numbers and there's no error handling. I would appreciate very much any advice on a concise and OM-ian way to extend it to accepts either integers or pitch symbols like '(c4 fs4 b4 f5 bb5).
     
    Thanks!
    Paul Marquardt
     
  10. Like
    opmo reacted to strumm in Auto-save problems   
    I concur with the original poster.   It is happening every time I use Opusmodus, and the pop up dialog doesn't work, so you are stuck.  My new workflow before I ever start Opusmodus is to go to Finder, and delete all autosave files.
     
    Strange, this seems to be working now properly for me.  I guess I can stop that workflow of deleting the autosave files.
  11. Thanks
    opmo got a reaction from Pricto in Activation on Mac and PC   
    Yes, it is. Your license permits you to activate Opusmodus on two personal computers that you own, under the condition that the program is used on only one computer at a time.
  12. Like
    opmo reacted to Stephane Boussuge in Non linear abstraction I   
    New composition :
     
  13. Thanks
    opmo got a reaction from JulioHerrlein in Pedal on Piano   
    Not all publishing softwares are up to scratch with Music XML conversion, sadly.
  14. Like
    opmo got a reaction from Stephane Boussuge 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))  
      
  15. Thanks
    opmo got a reaction from JulioHerrlein 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))  
      
  16. Thanks
    opmo 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
  17. Like
    opmo got a reaction from Stephane Boussuge 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))))  
  18. Like
    opmo got a reaction from LeopoldMozart 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))))  
  19. Like
    opmo got a reaction from Cliff in Mapping 'Alle meine Entchen'   
    Algorithmic 'play' with the song "Alle meine Entchen" (All my little ducklings) popular german children song.
    An example with TONALITY-MAP and GEN-PAUSE functions. A fun exercise for four voices in five parts.   The original song     Global seed. (init-seed 35)  
    Song in OMN script.
    (setf song '((e c4 d4 e4 f4) (q g4 =) (e a4 = = =) (q g4 -) (e a4 = = =) (q g4 -) (e f4 = = =) (q e4 =) (e g4 = = =) (q c4 -)))   Creating four voices based on the original song. Processing three voices, each with its own random order of its bars. (setf s-rnd (rnd-order song :list t)) (setf a-rnd (rnd-order song :list t)) (setf t-rnd (rnd-order song :list t))  
    The fourth voice is 10 repetitions of the first bar of the original song.
    (setf b-rep (gen-repeat 10 (list (first song))))   Transposition of each bar to start pitch. (setf s-trs (pitch-transpose-start '(0 1 2 3 4 5 6 7 8 9 10) s-rnd)) (setf t-trs (pitch-transpose-start '(0 7) t-rnd)) (setf b-trs (pitch-transpose-start '(0 -1 2 -3 4 -5 6 -7 8 -9) b-rep))   Adding accents to the bass voice. (setf b-dyn (subseq (gen-accent 0.2 '(2 3) b-trs) 0 4))   Three voices of the 2nd part are mapped to dorico-flamenco scale. (setf s-2 (tonality-map '(dorico-flamenco :root f3 :ambitus soprano :shift t) s-trs)) (setf t-2 (tonality-map '(dorico-flamenco :root f3 :ambitus tenor :shift t) t-trs)) (setf b-2 (tonality-map '(dorico-flamenco :root f3 :ambitus bass :shift t) b-trs))   The 'bass' voice in the 3rd part is mapped to prometheus-liszt scale. (setf b-3 (tonality-map '(prometheus-liszt :root f3 :ambitus bass :shift t) b-dyn))   All four voices of the 4th part are mapped to minor tonality.  (setf s-4 (tonality-map '(minor :root gs4 :ambitus soprano :shift t) s-rnd)) (setf a-4 (tonality-map '(minor :root gs4 :ambitus alto :shift t) a-rnd)) (setf t-4 (tonality-map '(minor :root gs4 :ambitus tenor :shift t) t-rnd)) (setf b-4 (tonality-map '(minor :root gs4 :ambitus bass :shift t) b-rep))   End bar with fermata. (setf end-bar '(e gs3 b3 eb4 e4 fermata))   10, 4 and 1 bar pause. (setf pause10 (gen-pause song)) (setf pause4 (gen-pause b-dyn)) (setf pause1 (gen-pause end-bar))   Assembling voices. (setf soprano (assemble-seq song s-2 pause4 s-4 pause1)) (setf alto (assemble-seq pause10 pause10 pause4 a-4 pause1)) (setf tenor (assemble-seq pause10 t-2 pause4 t-4 pause1)) (setf bass (assemble-seq pause10 b-2 b-3 b-4 end-bar))   Defining the score and the layout. (def-score Alle-meine-Entchen (:title "Alle meine Entchen" :key-signature '(c maj) :time-signature '(2 4) :tempo '((120 34) (:rit 120 30 1/16 1)) :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass :ignore-velocity t)) (soprano :omn soprano :channel 1 :sound 'gm :program '0) (alto :omn alto) (tenor :omn tenor) (bass :omn bass))  
  20. Like
    opmo got a reaction from RST in Timeline for upcoming books   
    Second in the series: Book 2.
    We too planing to update the Book 1.
  21. Like
    opmo got a reaction from RST in Timeline for upcoming books   
    The second book in the series will be released in the spring.
  22. Like
    opmo got a reaction from Stephane Boussuge in Tablature (guitar) in Opusmodus ?   
    I never tried but the TAB clef is part of the system.
  23. Thanks
    opmo got a reaction from JulioHerrlein in Tablature (guitar) in Opusmodus ?   
    I never tried but the TAB clef is part of the system.
  24. Like
    opmo got a reaction from Deb76 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
  25. Like
    opmo got a reaction from jesele 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
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy