Jump to content
opmo

Opusmodus with sound synthesis package (CLM)

Recommended Posts

Since some time we are working on implementing Bill's Schottstaedt 'Synthesis package CLM' into Opusmodus.

As expected we make the CLM working with OMN form sequence or with single parameters - example below.

 

The score is using partials from The Bells of the Campanile: La Marangona.

Below you will find an audio file of the score which is rendered each time you make evaluation.

 

Best wishes to all,

Janusz

;; ---------------------------------------------------------
;; MARANGONA
;; ---------------------------------------------------------
;; Parameters

(defparameter count 50)

(setf partials1 (library 'marangona-partials 'partials nil :random 50))
(setf partials2 (library 'marangona-partials 'partials nil :random 50))
(setf partials3 (library 'marangona-partials 'partials nil :random 50))
(setf partials4 (library 'marangona-partials 'partials nil :random 50))

(setf par1 (rnd-sample count (partial :freq (flatten partials1))))
(setf par2 (rnd-sample count (partial :freq (flatten partials2))))
(setf par3 (rnd-sample count (partial :freq (flatten partials3))))
(setf par4 (rnd-sample count (partial :freq (flatten partials4))))

(defparameter freq1 (gen-divide (rnd-sample count '(2 3 4 5)) par1))
(defparameter freq2 (gen-divide (rnd-sample count '(1 2 3 4 5)) par2))
(defparameter freq3 (gen-divide (rnd-sample count '(1 2 3 1 4 5)) par3))
(defparameter freq4 (gen-divide (rnd-sample count '(1 2 3 1 4 5)) par3))

(defparameter len1 (list (length-span 42 (rnd-sample count '(w h q w)))))
(defparameter len2 (list (length-span 42 (rnd-sample count '(d h h)))))
(defparameter len3 (list (length-span 42 (rnd-sample count '(h. w q)))))
(defparameter len4 (list (length-span 42 (rnd-sample count '(d d h)))))

(do-timeline
 '( 
   len1 (---xxx-xx- ---xxx---- --x--xx--- ---x------ x-)
   len2 (---xxx-xx- ---xx-x--- --x--xx--- ---x------ x-)
   len3 (---xxx-xx- ---xx--x-- --x--xx--- ---x------ --)
   len4 (---xxx-xx- ---xx---x- --x--xx--- ---x------ --)
   )
 '(gen-pause x) :time '(w))

(defparameter dur1 (omn :length (flatten len1)))
(defparameter dur2 (omn :length (flatten len2)))
(defparameter dur3 (omn :length (flatten len3)))
(defparameter dur4 (omn :length (flatten len4)))

(defparameter amp1 (rnd-number count 0.05 0.43))
(defparameter amp2 (rnd-number count 0.05 0.43))
(defparameter amp3 (rnd-number count 0.05 0.43))
(defparameter amp4 (rnd-number count 0.05 0.43))

(defparameter env '((0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)
                    (0 0 60 .1000 80 .2000 90 .4000 95 1 100 0)
                    (0 0 10 1 16 0 32 .1000 50 1 56 0 60 0 90 .3000 100 0)
                    (0 0 30 1 56 0 60 0 90 .3000 100 0)
                    (0 0 50 1 80 .3000 100 0)
                    (0 0 40 .1000 60 .2000 75 .4000 82 1 90 1 100 0)
                    (0 0 10 1 32 .1000 50 1 90 .3000 100 0)
                    (0 0 60 .1000 80 .3000 95 1 100 0)
                    (0 0 80 .1000 90 1 100 0)))

;; ---------------------------------------------------------
;; Score

(with-sound (:play nil :reverb jc-reverb
                   :scaled-to .7 :statistics t
                   :channels 2 :output "marangona-series")
  
  (fmviolin-synth dur1 freq1 amp1
                  :degree (rnd-number count 45 85)
                  :fm-index (rnd-number count 0.10 1.0)
                  :reverb-amount 0.30
                  :noise-amount (rnd-number count 0.00 0.004)
                  :amp-env (rnd-sample count env)
                  :fm1-rat (rnd-number count 0.00 6.718)
                  :fm2-rat (rnd-number count 0.00 4.414)
                  :fm3-rat (rnd-number count 0.00 1.141)  
                  :glissando-amount (rnd-number count 0.00 0.8)
                  )
  
  (fmviolin-synth dur2 freq2 amp2
                  :degree (rnd-number count 45 85)
                  :fm-index (rnd-number count 0.10 1.0)
                  :reverb-amount 0.30
                  :noise-amount (rnd-number count 0.00 0.004)
                  :amp-env (rnd-sample count env)
                  :fm1-rat (rnd-number count 0.00 4.718)
                  :fm2-rat (rnd-number count 0.00 6.414)
                  :fm3-rat (rnd-number count 0.00 1.141)
                  :glissando-amount (rnd-number count 0.00 0.8)
                  )
  
  (fmviolin-synth dur3 freq3 amp3
                  :degree (rnd-number count 45 85)
                  :fm-index (rnd-number count 0.10 1.0)
                  :reverb-amount 0.30
                  :noise-amount (rnd-number count 0.00 0.004)
                  :amp-env (rnd-sample count env)
                  :fm1-rat (rnd-number count 0.00 1.718)
                  :fm2-rat (rnd-number count 0.00 4.414)
                  :fm3-rat (rnd-number count 0.00 6.141)
                  :glissando-amount (rnd-number count 0.00 0.8)
                  )
  
  (fmviolin-synth dur4 freq4 amp4
                  :degree (rnd-number count 45 85)
                  :fm-index (rnd-number count 0.10 1.0)
                  :reverb-amount 0.30
                  :noise-amount (rnd-number count 0.00 0.004)
                  :amp-env (rnd-sample count env)
                  :fm1-rat (rnd-number count 0.00 4.718)
                  :fm2-rat (rnd-number count 0.00 6.414)
                  :fm3-rat (rnd-number count 0.00 1.141)
                  :glissando-amount (rnd-number count 0.00 0.8)
                  )
  )

 

Score with omn-form sequence:

(with-sound (:play nil :channels 2 :reverb jc-reverb
             :scaled-to .6 :statistics t :output "quartet")

  (fmviolin-omn vn1 :reverb-amount 0.20 :bpm 44)
  (fmviolin-omn vn2 :reverb-amount 0.20 :bpm 44)
  (fmviolin-omn va :reverb-amount 0.20 :bpm 44)
  (fmviolin-omn vc :reverb-amount 0.20 :bpm 44)
  )

 

 

Share this post


Link to post
Share on other sites

I'am strongly interested in a C-Sound-like environment in OM!

The example above is not working yet, right?

Is it possible to load the CLM package myself into OM (to follow the tutorial on the CLM Page)? If yes, how, can you give a brief instruction?

 

Thanks!

Share this post


Link to post
Share on other sites

There are too many errors especially with .dynlib path and there are lines of code that are unsafe in CCL.

We now have solved all of this. CLM will be part of version 1.3

Share this post


Link to post
Share on other sites

Thanks for the answer! I'am not asking for a release date, practising paitience in the mean time :–)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×