Jump to content
Sign in to follow this  
AM

changing pan in every event

Recommended Posts

dear all

 

is there a possibility to change the PAN in every EVENT?

1)

like '((q c4 mp pan-30) (e c3 pp pan100))  

would be interesting for LIVE-CODING

is there something predifined? like it will come up with microtonality/tuning

 

2)

and why does it work with simple-midi-sound (a list in :pan) and not with a player like conTimbre (there is something i don't understand with midi/players/etc)?

 

thanx for a  hint

andré

 

an example:

(setf omn '((5q c4 5q 5q 5q 5q 5q 5q 5q) 
            (-q)
            (e e e e e) 
            (-q)
            (7q 7q)
            (3q 3q) 
            (-q)
            (5q 5q 5q) 
            (7q 7q) 
            (3q 3q 3q 3q) 
            (e e) 
            (-q)
            (3q 3q 3q 3q 3q) 
            (e e e e e)))

;;;

(def-score signature
           (:title "signature"
                   :key-signature 'atonal   
                   :time-signature '(4 4) 
                   :tempo 60)
  (instr
   ;:port 0 
   :omn (omn-replace :velocity (pick-norepeat 100 '(pppp ppppp ppp ppp pp p)) (length-diminution 4 (gen-repeat 10 omn)))
   :tuning (gen-white-noise 100 :scale 0.1)
   :pan '(1 1 1 1 1 1 1 1 10 30 1 1 1 100 100 80 77 15 100 100 100)
   :channel 1
   :sound 'gm-trumpet))
 

 

Share this post


Link to post
Share on other sites

The PAN is changing on every event:

(def-score pan-test
           (:key-signature 'atonal   
            :time-signature '(4 4) 
            :tempo 60)
  (instr
   :omn '(q c4 d4 e4 f4 g4 a4 b4)
   :tuning '(.5 .33 0 -.5 0 .5 0 0)
   :pan '(1 127 1 127 1 127 64)
   :channel 1
   :program 'violin
   :sound 'gm))

If the conTimbre is not changing the PAN on every event then there is a bug in conTimbre midi listener.

Share this post


Link to post
Share on other sites

"then there is a bug in conTimbre midi listener"... okay i will tell thomas hummel

 

thanks

Share this post


Link to post
Share on other sites

Example with time PAN:

(def-score pan-test2
           (:key-signature 'atonal   
            :time-signature '(4 4) 
            :tempo 60)
  (instr
   :omn '(h c4 d4 e4 f4 g4 a4 b4)
   :tuning '(.5 .33 0 -.5 0 .5 0 0)
   :pan (gen-controller 7/4 (gen-sine 12 7 1) :time '(1/8 1/4 1/8 1/16))
   :channel 1
   :program 'violin
   :sound 'gm))

or

(def-score pan-test3
           (:key-signature 'atonal   
            :time-signature '(4 4) 
            :tempo 60)
  (instr
   :omn '(h c4 d4 e4 f4 g4 a4 b4)
   :tuning '(.5 .33 0 -.5 0 .5 0 0)
   :pan '((:desc-asc 127 0 1/32 2)
          (:asc 34 127 1/32 2) (127 1) (0 1))
   :channel 1
   :program 'violin
   :sound 'gm))

 

Tell Thomas Kummel to make a Kontakt player version.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Topics

    • By Frederic
      Hello all, 
       
      I'm coming from the javascript development world. Here are few musical ideas. Is there a way to implement them thanks to Opusmodus ? 
       
      - play a sequence of notes in 30 seconds:
      in javascript, it could be pseudo-coded like this: 
       
       setTimeout(function(){ play('c4 d4 e4 f4 g4'); }, 3000);   
      - play a sequence of notes at a specific event.
      in Javascript/jQuery, it is very easy to code anonymous functions that would wait for a specific event to be triggered. Some examples I have in mind:
       
      play 'do ré mi' at bar 4
      $('4th bar').on(function() { play('c5 d5 e6');});  
      play 'do ré mi' each time note f5 is played
      $('f5').on(function() { play('c5 d5 e6');}); repeat the note + octave when f5 is played
      $('f5').on(function(this) { play(this + this.octave(1));});  
      In other words: is it possible to trigger an anonymous function with opusmodus, so that a musical phrase will be played at specific event ? 
       
       
      Thanks for clarification, best !
    • By AM
      greetings
      andré
       
      ;;; --------------------------------------------------------------------------------------------------- ;;; because i'm working with numbered-events (to have some more control) i has to code ;;; a specific tranposition-function, which is transposing on specific spans/positions ;;; --------------------------------------------------------------------------------------------------- ;;; SUB (defun and-span (n a b) (and (>= n a) (<= n b))) ;;; MAIN (defun transpose-on-event-number (omn-list &key positions/transpose-list) (loop for i in (single-events omn-list) for cnt = 0 then (incf cnt) with position-list = (loop for x in positions/transpose-list collect (car x)) with transpose-list = (loop for y in positions/transpose-list collect (rest y)) with cnt2 = 0 when (and (and-span cnt (car (nth cnt2 position-list)) (cadr (nth cnt2 position-list))) (not (length-restp (car (omn :length i))))) collect (pitch-transpose-n (nth cnt2 transpose-list) i) else collect i when (and (= cnt (cadr (nth cnt2 position-list))) (< cnt (cadar (last position-list)))) do (incf cnt2))) ;;; ZERO-based (like in lisp) (transpose-on-event-number '(q g4 -q q g4 g4 g4 g4 g4 g4 g4 g4) :positions/transpose-list '(((0 5) 1) ((6 7) -3) ((8 9) 12))) => ((q gs4 mf) (-q) (q gs4 mf) (q gs4 mf) (q gs4 mf) (q gs4 mf) (q e4 mf) (q e4 mf) (q g5 mf) (q g5 mf))  
    • By AM
      the same idea with INSERT/REPLACE
       
      (defun replace-on-event-number (omn-list &key position/list (type 'replace) (output nil)) (progn (setf omn-list (loop for i in (single-events omn-list) for cnt = 0 then (incf cnt) with position-list = (loop for x in position/list collect (car x)) with list = (loop for y in position/list collect (rest y)) with cnt2 = 0 when (= cnt (nth cnt2 position-list)) collect (cond ((equal type 'replace) (if (listp (nth cnt2 list)) (flatten (nth cnt2 list)) (nth cnt2 list))) ((equal type 'add) (list i (nth cnt2 list)))) else collect i when (and (= cnt (nth cnt2 position-list)) (< cnt (car (last position-list)))) do (incf cnt2))) (if (equal output 'flatten) (flatten omn-list) omn-list))) ;;; EXAMPLES REPLACE (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 (q g5d5)) (5 -q)) :type 'replace) => ((q g4 mf) (q g5d5) (q g4 mf) (q g4 mf) (q g4 mf) (-q) (q g4 mf) (q g4 mf) (q g4 mf) (q g4 mf)) (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 (q g5d5)) (5 -q)) :type 'replace :output 'flatten) => (q g4 mf q g5d5 q g4 mf q g4 mf q g4 mf -q q g4 mf q g4 mf q g4 mf q g4 mf) ;;; EXAMPLES ADD (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 -e.) (5 -w)) :type 'add :output nil) => ((q g4 mf) ((-q) (-e.)) (q g4 mf) (q g4 mf) (q g4 mf) ((-q) (-w)) (q g4 mf) (q g4 mf) (q g4 mf) (q g4 mf)) (replace-on-event-number '(q g4 -q q g4 g4 g4 -q g4 g4 g4 g4) :position/list '((1 (w g6 ffff)) (5 -w)) :type 'add :output 'flatten) => (q g4 mf -q w g6 ffff q g4 mf q g4 mf q g4 mf -q -w q g4 mf q g4 mf q g4 mf q g4 mf) ;;;;  
×
×
  • Create New...