Jump to content

TomTolleson

Members
  • Posts

    77
  • Joined

  • Last visited

Everything posted by TomTolleson

  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
  13. This is great. Would like to have a download of the .opmo file.
  14. OK, so this seems to be working: (setf source "/Users/tomtolleson/OpusModus/Scores/The Bifurcated Fruit of a Mirror/MIDI/dominabi.mid") (setf sourcelengths (midi-to-omn source :type :length)) (setf flatlengths (mcflatten sourcelengths)) (length-augmentation 4 flatlengths) THT
  15. Thank you for the response. That's still throwing an error. Even when I'm using it as (setf lengths (length-augmentation 2 sourcelengths)) or (setf lengths (length-augmentation 2 (sourcelengths))) or (setf lengths (length-augmentation 2 '(sourcelengths))) Ah, just realized the source of the problem is my original variable "sourcelengths" When that's evaluated it's (((1/16 -3/16 1/16 -3/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (-1/4 1/4 1/16 -3/16 1/4) (3/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/16 -1/4 -1/16) (-1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 7/16 -3/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 7/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (1/16 -3/16 7/16 -1/16 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (7/16 -3/16 1/16 -3/16 1/8) (1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/16 -3/16 3/8) (1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/2 3/8) (1/16 -1/4 -1/16 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 3/8) (1/16 -1/16 1/4 1/4 1/4 1/8) (1/8 1/2 3/8) (1/8 1/4 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/4) (1/4 1/16 -3/16 1/16 -3/16 1/4) (1/4 1/4 1/2) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/2) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/16 -7/16) (1/4 1/16 -3/16 7/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/4 1/16 -7/16 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 7/16 -1/4 -1/16 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/16 -3/16 1/4 1/16 -3/16 1/16 -1/16) (-1/8 1/4 1/4 1/16 -3/16 1/8) (1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 7/16))) Applying Length augmentation to that will cause a problem no matter how I do it. I'll need to solve that issue first. Thanks! It should be (setf sourcelengths '((1/16 -3/16 1/16 -3/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (-1/4 1/4 1/16 -3/16 1/4) (3/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/16 -1/4 -1/16) (-1/8 1/16 -3/16 1/16 -3/16 1/4 1/8) (1/8 1/16 -3/16 7/16 -3/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (1/8 7/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (1/16 -3/16 7/16 -1/16 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/16 -3/16 1/4) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (7/16 -3/16 1/16 -3/16 1/8) (1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/16 -3/16 3/8) (1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/2 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/2 3/8) (1/16 -1/4 -1/16 1/4 1/4 1/8) (1/8 1/4 1/16 -3/16 3/8) (1/16 -1/16 1/4 1/4 1/4 1/8) (1/8 1/2 3/8) (1/8 1/4 1/4 1/4 1/16 -1/16) (-1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/4) (1/4 1/16 -3/16 1/16 -3/16 1/4) (1/4 1/4 1/2) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/4) (1/16 -3/16 1/2 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (1/4 1/4 1/2) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/2 1/4) (3/16 -1/2 -1/16 1/16 -3/16) (1/16 -3/16 1/4 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/16 -7/16) (1/4 1/16 -3/16 7/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/8) (1/8 1/4 1/4 1/4 1/8) (3/8 1/4 1/4 1/8) (1/8 1/4 1/16 -7/16 1/16 -1/16) (-1/8 1/16 -3/16 1/4 1/4 1/16 -1/16) (-1/8 7/16 -1/4 -1/16 1/8) (1/8 1/4 1/4 1/4 1/8) (1/8 1/16 -3/16 1/4 1/16 -3/16 1/16 -1/16) (-1/8 1/4 1/4 1/16 -3/16 1/8) (1/8 1/4 1/4 1/4 1/8) (5/16 -3/16 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/16 -3/16 1/16 -3/16) (7/16 -1/16 1/4 1/4) (1/4 1/4 1/4 1/16 -3/16) (1/16 -3/16 1/16 -3/16 1/4 1/16 -3/16) (1/2 1/4 1/4) (1/4 1/4 1/4 1/4) (1/4 1/4 1/2) (1/4 1/4 1/4 1/4) (1/2 7/16))) Not sure how to remove the extra parenthesis algorithmically though.
  16. Hello, This seems like a simple issue but I think there's some underlying lisp concept I'm missing. I'm trying to apply length-augmentation to a list rather than explicit lengths and getting an error. So to begin with I import a plainchant MIDI file: (setf source "/Users/tomtolleson/OpusModus/Scores/The Bifurcated Fruit of a Mirror/MIDI/dominabi.mid") I define the lengths from the source as "sourcelengths" (setf sourcelengths (midi-to-omn source :type :length)) This all works properly. Now, if I apply length-augmentation to a series of lengths explicitly (from the documentation): (length-augmentation 2 '(1/8 1/8 1/8 1/8 -1/8 1/8 1/8 -1/8)) That works properly. However if I try to apply length-augmentation to (length-augmentation 2 '(sourcelengths)) or (length-augmentation 2 (sourcelengths)) I receive an error. What is the correct format for applying length-augmentation (or any other function) to a list by name rather than by explication? Thanks! THT
  17. This is great Stephane! I'm trying to get aquainted with Jesper's new functions. Is there an overview of the entire suite of Per Nørgard-inspired functions?
  18. That's great! Thanks, Stephane. Having reviewed other options such as MusicXML to Musescore and then Musescore to Cubase I'm finding that much of the articulations and dynamics (e.g. expressions) don't quite translate 1:1 which makes sense and makes me wonder why I was thinking that it would. Looking at the range of complex sound design capabilities in Albion Neo, I will likely just compose in Opusmodus and then work with the Spitfire tools hands on for the best effect. Thanks! THT
  19. This is great Stephane! I'm just beginning a project with Opusmodus sending MIDI to Cubase which has an Albion Neo template. Is there an overview of the functions available in Opus Modus for connecting with an external DAW? I notice your file has the :port 1 :controllers With the function gen-dynamic-controller soecified. I'm learning about Keyswitches and Albion Neo on the Cubase side, but if there's anything on the OM side of MIDI you would recommend for learning (especially with dynamics, articulations), that would be great. Thanks, THT
  20. I suspected that was the case. I will just evaluate and us the OMN. Thanks for letting me know! THT
  21. Hello! I have a series of lists which are algorithmically generated: (setf pitch-mat (vector-to-pitch '(e3 e5) (gen-noise 64 :seed 458 :type :gaussian))) (setf pch1 (flatten (rnd-order (gen-divide 8 pitch-mat)))) (setf size 12) (setf line1 (length-legato (gen-filter-euclidean size 12 1 12 pch1 's :seed 45 :velocity '(p)))) Under the code above, Line 1 evaluates as ((e gs4 p s c5 a4 e s c5 e4 e f4 s gs3 b3) (e. g4 p f4 e4 fs3) (s b4 p e4 fs4 f4 gs4 d4 bb3 bb3 b3 bb3 gs4 c4) (e. d4 p e cs4 e. f4 e fs4 gs4) (e e3 p s b3 e e5 b3 s fs4 e a3 cs4) (s fs3 p cs4 g4 fs4 gs4 fs4 c5 a4 a4 e4 e c5) (e f4 p s gs3 b3 e g4 s eb4 f4 e d4 s e4 bb3) (e c4 p s b4 b3 b4 e4 e fs4 s gs4 d4 bb3 bb3) (e b3 p gs4 d4 c4 b4 cs5) (e fs4 p s gs4 e b3 s d5 e b3 s e s fs4) (s a3 p eb4 cs4 c5 fs3 cs4 g4 fs4 gs4 fs4 c5 a4) (e a4 p s c5 e4 f4 f4 e gs3 s g4 e4 eb4 f4)) If I use the counterpoint feature with all of the lines as evaluated OMN, I can generate my musical piece. It works fine. (rh :omn '(#|1|# ((e fs4 p s a4 e4 e c5 s gs4 e4 e f4 s s g4) (e. f4 p e4 fs3 e4) (s bb3 p e4 bb3 d4 fs4 f4 gs4 b4 c4 d4 cs4 cs4) (e. c4 p e b3 e. eb4 e cs5 a3) (e b3 p s e e3 d5 s b3 e fs3 g4) (s eb4 p fs4 cs4 cs4 fs4 a4 a4 e4 c5 c5 e gs4) (e f4 p s s g4 e f4 s b3 e4 e c4 s fs3 b4) (e e4 p s bb3 d4 bb3 e4 e bb3 s fs4 f4 gs4 b4) (e c4 p cs4 c4 bb3 b4 fs4) (e cs5 p s a3 e b3 s e5 e b3 s eb4 e d5 s b3) (s fs3 p c5 g4 a3 eb4 fs4 cs4 cs4 fs4 a4 a4 e4) (e c5 p s gs4 e4 f4 gs3 e f4 s s eb4 b3 e4)) :channel 1 :sound 'gm :program 0 :volume 90 :pan 64) This works as expected. However, if I use the list variable/name instead of the explicit OMN: (rh :omn '(#|1|# line1) :channel 1 :sound 'gm :program 0 :volume 90 :pan 64) It does not work properly. This makes sense to me because we are listing the OMN as specified by the :omn reference. My question is - will I be able to build my counterpoint without explicitly adding the OMN and merely using list names? To be clear, I'm not blocked by this issue. I can easily evaluate each list by name and add the evaluated OMN into the counterpoint function. I'm just posting this as I'm curious if there's a more elegant way to reach my goal. Using the list variable/name would be a more efficient workflow if I need to tweak the parameters of the algorithmically generated OMN. Thanks, THT
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy