Jump to content


  • Content Count

  • Joined

  • Last visited

About Jorvd

  • Rank
    Advance Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Thanks a lot, some great resources! I've started with just the very basics and working my way through
  2. Thanks Stephane, I see what I was doing wrong now. I was specifying the bar number in the :method, which of course isn't necessary for the Counterpoint function.
  3. Thanks André, this is still on my list, I definitely see the benefits in learning LISP. If you have specific sources (books/links/videos) that you think are good places to start, please feel free to share - Jor
  4. Hi everyone, Today I've been learning about the Counterpoint function in v2, I decided to start simple: (setf p01 '((-e e4 stacc g4 stacc b4 stacc s e4 fs4 leg e g4 leg fs4 b3 leg))) (setf p02 '(((leg -e b5 b5 a5 a5 eb5 q eb5 leg)))) (setf voices (counterpoint (list p01 p02) '( ((1 -) :methods (- -) :polyphony (7 o)) ((2 1) :methods (t-12 -) :polyphony (7 o)) ((2 1) :methods (t-5 r) :polyphony (7 ?)) ))) (ps 'gm :fl (list (assemble-voices 1 voices)) :cl (list (assemble-voices 2 voices)) :tempo '(80) :time-signature '(4 4) :start 1) In this example I would really like to change the "as4" in bar 3 but I haven't been able to figure out how to do so. I know that with the Unfold function I can process specific events, like so: ;;Transpose second bar and 3th and 7th note in bar 4 (unfold 'om '( (t12 2 ) (t-7 4 (3 7)) ) mat) However, that doesn't seem to work within the :methods for the counterpoint function. This then brought my attention to the build-in polyphony function, but so far it's taking a lot of time to understand how to use this function. Thanks in advance for the help! - Jor
  5. Wow that's amazing, I've looked at this for 15 minutes now and I think I gained a few braincells. Learning a lot from these examples, exactly what I needed as well, thanks so much!
  6. Hi Everyone, I'm looking for a method/function which changes the velocity only for notes that are repeating. In other words, if I have a sequence like this: '(c4 eb4 g4 ab4 ab4 ab4 d4 eb4) I would like to be able to create a crescendo/decrescendo or set a custom velocity for just the Ab notes. In the past I've customised a Pattern Matching function from Stephane to change the velocity for specific note lengths: (defun velocity-map-omn (map omn &key (otherwise '-)) (do-verbose ("velocity-map-omn") (let ((plist (disassemble-omn omn))) (setf (getf plist :velocity) (pattern-map map (getf plist :length) :otherwise otherwise :swallow t)) (apply 'make-omn plist)))) And I think this should be very close to what I want, however, I have no idea how to tell OM to process repeating notes only. Is there anyone who already has a function like this or can steer me in the right direction? Hope this makes sense, any help is very welcome! - Jor
  7. Parametric Composition allows you to interact with musical parameters derived from a near infinite amount of sources, process them, and combine them together in a full score. This score can be outputted to any DAW or plugin, which then serves as a playback device.
  8. Those examples are very helpful, thank you! Right now my output (SC input) is this: [ [ /thread1, 3, 1 ], 666.1542108, a NetAddr(, 57796), 57120 ] Which I believe is, [[ ThreadName, Note Number, Gate], Time, Address, Port] Ideally what I want to be able to do is to send the Pitch/Gate and some other values (Filter Modulation, Pitchbend, etc.) to the same thread. So for example [[/thread1, NoteNumber, 1, val1, val2, val3] etc.]] In a perfect world they would also have independent Time values, they just should end up at the same Thread in SC. Probably this is very simple, I would just need to combine the lists in OM before sending it with send-osc-data , I just can't really figure out how to do this. Hope the example is clear enough Thanks again!
  9. Yes but for this project I would love to use native SC language, and not write everything in Lisp. CL-Collider only uses the server side (synths & FX)of SC but not the language side, which has a lot of good stuff as well. Following up on my previous question: Is there a way to send multiple messages to one Thread? In SC it's great to be able to filter out messages like so [1], [2]. Wich will get the first and the second message send to a specific thread. Is this possible with the current OSC implementation? I tried sending multiple messages with send-osc-data but I can't figure out how to format the messages in that case.
  10. Hi everyone, For the past two days I've been messing around with SuperCollider and OM. I want to be able to write my score in OMN format and send it via OSC to SuperCollider. So far I have this in OM: (defparameter to-sc '( 57120)) (setf thd1 (create-osc-thread "thread1" to-sc)) (send-osc-data thd1 '( (12 1/2) (2 1/2) (0 1/2) (3 1/2) (14 1/2) (2 1/2) (0 1/2) (3 1/2) (8 1/2) (2 1/2) (0 1/2) (3 1/2) (7 1/2) (2 1/2) (0 1/2) (3 1/2) )) And this in SuperCollider (OSCdef.new( \toggle, { arg msg, time, addr, port; [msg, time, addr, port].postln; Synth(\synth1, [pitch:msg[1]+60]); }, '/thread1' ); ) ( SynthDef('synth1', { arg pitch=60, amp=0.2, ffreq=15000; var linen, env, sig1, sig2; linen = Env.linen(0.01, sustainTime:0, releaseTime:1); env = EnvGen.kr(linen, doneAction:2); sig1 = Mix(VarSaw.ar([pitch.midicps], 0, 0.5)); sig2 = LPF.ar(sig1, ffreq); Out.ar(0, sig2* env * amp); }).add; ) And this works great! However I would like to write my OM script in regular OMN format and then convert it to integers, which SuperCollider understands. I've tried to do this like so: (setf convert-test '( (q a3 e4 c4 f4) (q e3 b4 a3 c4))) (setf data (gen-osc-data 16 (pitch-to-midi (omn :pitch convert-test)) :time (flatten (omn :length convert-test)) :min 0 :max 127)) However, it seems like "gen-osc-data" really wants to use floating values, adding the Min and Max does seem to convert these values in the range 0-127 but still I end up having the wrong notes: (setf data (gen-osc-data 16 (pitch-to-midi (omn :pitch convert-test)) :time '(1/2 1/4 1/12 1/12 1/12) :min 0 :max 127)) >> (((0 91 127) 1/2) ((27 127 0) 1/4) ((0 106 127) 1/12) ((0 127 64) 1/12) ((0 91 127) 1/12) ((27 127 0) 1/2) ((0 106 127) 1/4) ((0 127 118) 1/12) ((0 127 118) 1/12) ((0 127 118) 1/12).... Any ideas on a straightforward method to deal with this? I hope my question is understandable, this is by far the most challenging project I've tried in OM, any help would be very appreciated! NOTE: I know that I can just send MIDI notes to SC however I would like to control my Synth Parameters via OSC and I'm a big fan of consistency, therefor it would be great if the Pitch and Length information also could be converted and send via OSC messages. Thanks very much in advance! - Jor
  11. Hi Everyone, This should be an easy one, yet I can't seem to figure it out: How do I remove double notes from a chord? I'm starting with this: (setf chords '(gs3gs4ds5ds5 ab3ab3ab3gs4)) And I would like the output to be this: '(gs3gs4ds5 ab3gs4) Thanks!
  12. Since the tempo slot in DefScore only takes integers, what would be the best way to get a more natural playback tempo? I'm using this method now but it doesn't sound very smooth. (setf tempo-4 (make-tempo (vector-round 58 61 (gen-white-noise 12)) left :type :length)) ;Left is the output of an assemble-seq I've also tried things like this: (setf tempo-2 '(("Mixed Tempi" q :accel 60 62 1/32 2) ("Mixed Tempi" q :accel 62 60 1/32 2) (:rit 60 64 1/32 12))) But most of it sounds either too intentional or too clunky, I just want the tempo to very slightly meander. Thanks in advance for the advice!
  13. Sorry I didn't realise I needed to do that again, that was an easy fix, thanks!
  14. Hi Janusz, thank you for implementing this, very cool stuff! I followed the instructions carefully but I am getting this warning now on startup or when trying to compile setup-ins directly from the "Load CLM Instruments" file. > Error: Undefined function SETUP-INS called with arguments ("add" "addflt" "addsnd" "anoi" "arith" "arith1" "arith2" "autoc" "backandforth" "badd" "bandedwg" "bell" "bigbird" "bird" "bowl" "btest" "canter" "cellon" "circular-scanned" "cnv" ...) . > While executing: CCL::TOPLEVEL-EVAL, in process Listener-2(22). > Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts. > If continued: Retry applying SETUP-INS to ("add" "addflt" "addsnd" "anoi" "arith" "arith1" "arith2" "autoc" "backandforth" "badd" "bandedwg" "bell" "bigbird" "bird" "bowl" "btest" "canter" "cellon" "circular-scanned" "cnv" ...). > Type :? for other options. 1 > This happened after upgrading to 1.3.24662, any ideas as to what causes this?
  15. Jorvd

    OM OSC Setup

    Dear Janusz, today I tried to get OSC working (I'm on 1.3 now) but I couldn't get any messages to send out of OM. I've tried a lot of different methods, ports, receivers etc. but nothing seems to work so far, this is the basic layout I'm using: (defparameter reaktor '( 10000)) (setf data (gen-osc-data 4 (gen-sine 40 4 1) :time '(1/2 1/4 1/12 1/12 1/12))) (setf test1 (osc-thread reaktor "param1" data)) I do have a fair amount of experience with OSC but the OMN side of things is a bit confusing to me. I'm also trying to understand the Reaktor OSC video which uses an osc-thread-trigger function, would I need that as well? On a separate note, I noticed a few inconsistencies in the OSC documentation, including a mixture of "OSC-STOP-THREADS" and "STOP-OSC-THREADS" Also, n the osc-threads help file it gives an example: (self thread1 (osc-thread '( 10000) '((1/2 0.5) (1/4 0.3) (1/2 0.0)))) I assume "self" should be "setf" but even then the example gives me an error: > Error: Too few arguments in call to #<Compiled-function osc-thread #x3000013E4A5F>: Lastly, is the osc-examples.lisp file something I should look into, or is that not necessary to get this working? Thanks very much in advance! - Jor
  • Create New...