Jump to content

TomTolleson

Members
  • Posts

    77
  • Joined

  • Last visited

Contact Methods

Profile Information

  • Gender
    Male
  • Location
    New York City
  • Interests
    Music, Travel, Art, Sailing, Diving, Surfing

Recent Profile Visitors

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

  1. I've heard of this before but haven't used it. I'll check it out thanks!
  2. Hello! I'm working in Albion Neo which has tracks for individual articulations like pizz, stacc, and a wonderful bunch of extended techniques. However, the articulations are each in a different track. For example: STRA_LongTremolo STRA_ShortSpiccatoCSBrushed STRA_ShortPizzicato STRB_LegatoLow STRB_Long5thBendDown STRB_LongColLegnoTratto STRB_Long STRB_LongCS STRB_LongFlautandoPulses STRB_LongFlautando STRB_LongHarmonics STRB_LongOctaveBlended STRB_LongSeagulls STRB_LongSulTasto It's tempting me to work with my keyboard (which is fun) but I'd like to see if I can somehow bend OpusModus to use the tracks as articulations. I have OpusModus controlling Cubase which has Albion Neo loaded so that part is working fine. Now I'm trying to figure out how to map articulations from Opus Modus to instrument or track switches. It seems like I could just have all the STR_A instruments play the same thing and use "do-timeline" to only play one track at a time. Another options is just map articulations to midi ports and have those play as a sequence along with the OMN (if that's possible). Any other ideas are appreciated as I begin a quiet, rainy weekend of composing. Regards, THT
  3. That's much more clean. Thanks Stephane!
  4. Hello! If there are no empty layouts, how would we work with custom instruments using def-score if there are no empty layouts? For example if I want to send midi to a DAW to use VST instruments and functionality but keep the instruments legible and clear in my OM score, which layout would I use? Bracket-group? Let's say I want to use a pad, polysynth, monosynth, kick, snare, modularsynth. I'm assuming bracket group is best but I'm not sure how to resolve 'right-hand 'left-hand with an instrument name like monosynth or polysynth. Perhaps (piano-layout 'polysynthl 'polysynthr)? This works and I'm happy with it but if there's any caveats in what I'm doing please let me know. (def-score electronic (:title "electronic music score" :composer "THT" :copyright "Copyright ©2023 " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :layout (list (piano-layout 'polysynthl 'polysynthr) (treble-layout 'monosynth) (treble-layout 'modularsynth) (piano-layout 'padl 'padr) (bracket-group (snare-drum-layout 'kick) (bass-drum-layout 'snare)))) (polysynthl :omn polysynth :channel 2 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (polysynthr :omn polysynth :channel 2 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (monosynth :omn monosynth :channel 3 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (modularsynth :omn modularsynth :channel 4 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (padl :omn pad :channel 5 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (padr :omn pad :channel 5 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (kick :omn kick :channel 1 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) (snare :omn snare :channel 2 :sound 'gm :program 0 :volume 100 :pan 64 :port 1 :controllers (91 '(72)) ) )
  5. One additional technique I'm trying (using the above code). If I wanted to double the length of the notes by a number, but divide the length of the rests by a number, it seems that the below might get me part of the way there. However, I'm ending up with nil values. I'm sure there's a more elegant way to do this (like length-divide function) but I want to make sure that the score maintains the correct order of notes and rests in combination. That is, I don't want to randomly re-insert rests into the list of pitches. (setf mat (flatten '((s d3 ffff -e. s f3 mf -q.. s f3 ffff -e.) (s g3 -e. s f3 -e. q.. g3 -s)))) (setf aug-rest-length (loop for i in (omn :length mat) collect (if (length-restp i) (* 1/2 i)) collect (if (length-notep i) (* 2 i)))) (setf augmat (make-omn :length aug-rest-length :pitch (omn :pitch mat) :velocity (omn :velocity mat) :articulation (omn :articulation mat)))
  6. Thank you @Stephane Boussuge! A huge help as always. I made a slight modification (for anyone reading this thread) to collect the rests (rather than the notes); essentially the inverse of what Stephane's code accomplishes. Mine is as follows (using "length-notep" in place of "length-restp"): (setf len '(1/8 1/8 -1/4 1/16 1/16 1/16 1/16 1/4 -1/8 1/16 1/16 1/2)) (setf rest-only (remove-nils (loop for l in len :collect (if (length-notep l) nil l ))))
  7. I'm getting an unexpected result when trying out my function (below). I ran that on my source material's lengths (in their own list) and the error I'm seeing is "Error: In oddp arguments should be of type integer." I assumed the fractional format of the lengths was the problem. However, when I tried the below I got the same type of error "Error: In oddp of ((1 2 3 4 5 6 7 -8 -7 -6 -5 -4)) arguments should be of type integer." (defun split-rests (list &optional (rests '())) (if (oddp list) ((delete-if #'plusp list)))) (setf source '(1 2 3 4 5 6 7 -8 -7 -6 -5 -4)) (setf rests (split-rests source)) I can post this in stack overflow but I thought that any additional snags might be found better by posting it here. Thanks!
  8. That makes sense. I'm guessing there's no existing function to separate notes from rests is there? I can build a lisp function if not. Thanks! Tom
  9. Hello, I'm working with a plainchant as source material and I'd like to augment the lengths of the notes without augmenting the rest size. For example in this example, I'm able to increase the source material sourcemat with the length-augmentation. (setf augmat (length-augmentation 4 sourcemat)) I'm wondering if the exception parameter is the key here? Unfortunately the documentation doesn't include much for the use of exception. To better illustrate the issue I'm including an example below using a single instrument (tuba). Thanks. ;;;--------------------------------------------------------- ;;; Parameters (setf size 8) (setf bars (gen-repeat size '(4/4))) (setf pause (length-span bars '(-q))) (setf sourcemat '((s d3 ffff -e. s f3 mf -q.. s f3 ffff -e.) (s g3 -e. s f3 -e. q.. g3 -s) (s a3 -e. s f3 -e. s e3 -e. q f3 tie) (e. f3 - s as3 -e. s a3 -e. s as3 -) (-e s g3 -e. s f3 -e. s g3 -e. e g3 tie) (qs g3 -s d3 -e. s g3 -e. s as3 -) (-e s a3 -e. s as3 -e. s c4 -e. s a3 -) (-q. q.. g3 -e.) (-e s g3 -e. s g3 -e. s as3 -e. s a3 -) (-e s as3 -e. s c4 -e. s c4 -e. s g3 -) (-e s c4 -e. s a3 -e. s as3 -e. s a3 -) (-e s as3 -e. s g3 -e. q. g3 tie) (s g3 - e3 -e. s f3 -e. s g3 -e. s f3 -) (-e s g3 -e. s d3 -q.. e c3 tie) (qs c3 -q.. s c3 -e.) (s d3 -e. s f3 -e. s f3 -e. s d3 -e.) (s f3 -e. s d3 -e. s f3 -e. s e3 -e.) (s f3 -e. s g3 -e. s g3 -q..) (s f3 -e. s g3 -e. s d3 -e. s e3 -e.) (s f3 -e. s g3 -e. s f3 -e. s g3 -e.) (q.. f3 -s q.. e3 -s) (-q s g3 -e. s as3 -e. s a3 -e.) (s c4 -e. s a3 -q.. s g3 -e.) (-q s e3 -e. q.. f3 -s) (s d3 -e. s f3 -e. s e3 -e. s c3 -e.) (s d3 -e. s c3 -e. s c3 -e. q e3 tie) (e. e3 -s c3g3 q e3g3 tie) (z^e. e3 h.^z g3 q^s f3) (q^s d3 q^s c3 q^s e3 q^s d3) (q^s e3 h^s d3 q c3 tie) (e. c3 -hs q^s c3) (q^s g3 z^q.. h.^s f3) (q^s g3 q^s a3 q^s f3 q^s d3) (q^s g3 q^s f3 q^s e3 q^s c3) (q^s d3 h^s f3 q^s d3) (q^s e3 q^s d3 q^s c3 q^s d3) (q^s c3 q^s as2 z^h f3 tie q.. c3 -s) (h f3 tie e^z q^s e tie) (e^z f3 q^s q^s c3 q^s d3 e f3 tie) (e^z f3 q^s d3 q^s as2 q^s d3 e f3 tie) (e^z f3 q^s d3 q^s as2 q. c3f3 tie) (z^s c3 h.^z f3 q^s g3) (q^s as3 q^s q^s q^s g3) (q^s f3 z^s g3 q.. e3 -qs) (q^s a3 q^s g3 q^s f3 q^s e3) (z^q.. f3 h.^s g3 q g3a3 tie) (z a3 e. g3 -hs q as3c4 tie) (z^e. as3 h^z c4 q^s q^s as3) (z^s a3 q.. as3 -qs q a3as3 tie) (z^e. as3 h^z a3 q^s as3 q^s d4) (q^s c4 q^s h^s as3) (q^s g3 g3 tie s^5s q^s as3 e. g3 tie) (s^z g3 z^s as3 q - q^s g3 e. f3 tie) (s^z f3 z^q.. g3 h.^s a3 e. a3as3 tie) (z^h a3 tie q as3 - s^z a3 q^s as3 e. tie) (s^z as3 q^s q^s a3 q^s g3 e. a3 tie) (s^z a3 q^s f3 q^s g3 q^s f3 e. e3 tie) (s^z e3 q.. e3f3 -h) (-s h^s c3 q.. f3 tie) (s^z f3 q^s d3 q^s c3 q^s g3 e. f3 tie) (s^z f3 q^s g3 h^s e. e3 tie) (s^z e3 q^s f3 q^s g3 q^s f3 e. g3 tie) (s^z g3 h^s d3 q.. c3 tie) (h c3 tie s^z q^s d3 e. f3 tie) (s^z f3 q^s g3 q^s f3 q^s d3 e. g3 tie) (s^z g3 q^s f3 q^s g3 q^s a3 e. c3g3 tie) (z^q g3 h c3 tie e^z q^s d3 e f3 tie) (e^z f3 q^s g3 q^s f3 q^s d3 e g3 tie) (e^z g3 q^s f3 q^s g3 q^s a3 e c3g3 tie) (z c3 qs g3 -hs e g3 tie) (e^z g3 q^s as3 z^q.. g3 he a3 tie) (e^z a3 z^s g3 q.. as3 -qs e as3 tie) (q.^z as3 q^s g3 q. f3 tie) (e^z f3 q^s d3 q^s c3 q^s e3 e d3 tie) (e^z d3 he. c3))) (setf augmat (length-augmentation 4 sourcemat)) (setf mat (pitch-transpose -12 augmat)) (setf tuba (flatten mat)) ;;;--------------------------------------------------------- ;;; Score and Layout (def-score tuba (:title "Title" :composer "Composer Name" :copyright "Copyright © " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :layout (tuba-layout 'tuba)) (tuba :omn tuba :channel 1 :sound 'gm :program 'tuba :volume 95 :pan 64 :controllers (91 '(57)) ) )
  10. Hello, I have a synthdef for a sampler that plays from a buffer based on the list of all files in a folder. It's working fine in SuperCollider: ( SynthDef(\play, { var sig, buf, e; e = PathName.new("/directory_path/*").files.scramble.copyFromStart(20); buf = \buf.ir(0); sig = PlayBuf.ar(1!2, buf, BufRateScale.ir(buf) * \rate.ir(1), doneAction: 2); sig = sig * \amp.ir(0.5); Out.ar(\out.ir(0), sig); }).add; ) Synth(\play, [buf: b, rate: 0.midiratio]); I'm not sure how to build this in OM's sc:synthdef as the examples seem to be focused on oscillator-based sound sources. My first attempt at an OpusModus sc:synthdef sampler (based on the above example) is: (sc:defsynth sampler ((freq 200) (dur 2.0)) (let* (e = PathName.new("/directory_path/*").files.scramble.copyFromStart(20)) (buf = \buf.ir(0)) (sig = PlayBuf.ar(1!2, buf, BufRateScale.ir(buf) * \rate.ir(1), doneAction: 2)) (sig = sig * \amp.ir(0.5)) (sc:out.ar 0 out))) Which evaluates with a bug. I'm sure there are syntax problems but I'm also wondering if there are conceptual switches I could make to understand synthbuilding in OM rather than supercollider. Thanks! THT
  11. Ah, so you're just routing it out of OM. OK, that works. Thanks!
  12. Hello, Working with SC in OM and wondering how I can route my audio on a mac? In SC there are settings like: Server.default.options.inDevice_("Built-in Microph"); Server.default.options.outDevice_("Built-in Output"); Not sure how to make these device specifications in the OM SC library. Thanks, THT
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy