Jump to content

opmo

Administrators
  • Posts

    2,903
  • Joined

  • Last visited

Everything posted by opmo

  1. Opusmodus musicxml file is very much to the spec (standard), many other programs are not, this is why you will get an occasional error or missing parameter in programs like Musescore or Dorico.
  2. Yes, 1/2 equal 1/2 second. Yes, after the last thread pair is send the thread will destroy by itself. Yes, this function will display all running threads: (bt:all-threads) The function: (stop-osc-threads a-thread) will destroy the given OSC thread. The function: (stop-all-osc-threads) will destroy all OSC threads. No, In order to restart a thread again you need to evaluate the expression again, example: (sets thread1 (osc-thread reaktor "osc1" '((0.18450676 5/2))) No, but you could create a loop with repeat function for a given count. Best wishes, Janusz
  3. Will save the result in pdf file format in ~/Opusmodus/Graphs folder. (circle-rhythm-plot '(0 3 6 10 11) :points 16 :file "crp1") or Click the mouse on the graph-view to copy it to the clipboard (PNG format). This allow you to past the image to any other document - works with display-midi view as well.
  4. Snippet or PS (preview score): (ps 'gm :p (list '((s a4 leg d5 leg fs4 leg d5 leg g4 leg d5) (s a4 leg d5 leg fs4 leg d5 leg g4 leg d5) (s a4 leg d5 leg cs5 leg b4 leg a4 leg g4 leg) (s fs4 leg d4 leg e4 leg cs4 leg e d4)) '((e fs3 d3 e3) (e fs3 d3 e3) (e fs3 g3 a3) (e d3 a2 d2))) :key-signature '(d maj) :time-signature '(3 8 1) :tempo 112)
  5. 1.3.24711 – Function name changes: hexachord-complement to: GET-HEXACHORD-COMPLEMENT gen-ac-hexachord to: GET-AC-HEXACHORD ac-hexachord-complement-form-set to: GET-AC-HEXACHORD-COMPLEMENT-FORM-SET – New functions: GET-DENSITY FILTER-DENSITY – New directory in System Library: Analysis. Fixed: VELOCITY-TO-DYNAMIC GET-DENSITY The function GET-DENSITY returns a density value (between 0.0 and 1.0) derived from quantitative measurements in a given sequence. There are four density types: :length, :pitch, :velocity and nil. The density information can be used in an analytical and compositional manner. Length density: (get-density '(s s s s s s s s)) => 1.0 (get-density '(s s -s s -s s -s s)) => 0.62 (get-density '(-q e -e q. s)) => 0.33555558 (get-density '(e.. s s s q s s s t -t s t)) => 0.8336364 (get-density '(-q -e -t t t t t t -q -s. t t t)) => 0.25 (get-density '((-w) (-w) (-w) (-w) (-h -e -t = -s. t -s. t -s) (-t = -s. e s = = = = = = = = = -s.) (-w) (-w) (-w) (-h -e -t = = = = = -s. =) (e.. s = = q s = = t - s t) (-t s t - s t - s t - s t - s t - s t - s t - = -s) (-t = -q -s. e t -s. s -e. t = =) (t = = = = = = = = = = = = s -e. s -e. t = =))) => (0.0 0.0 0.0 0.0 0.089999974 0.74833333 0.0 0.0 0.0 0.22666669 0.8336364 0.69 0.3185714 0.62) Pitch density: (get-density 'c4e4g4) => 0.38888893 (get-density 'c4ds4fs4a4) => 0.41666666 (get-density '((bb3 e3 bb2 a4 b4 d5) (b2 bb2 b3 b4 c7 c5) (eb3 gs3 gs2 a5 cs7 cs4))) => (0.48333335 0.8166667 0.8833334) Velocity density: (get-density '(pp pp p p mp mp mf mf f f)) => 0.30833334 (get-density '((pp< < < ff> > > > >) (p< < < < mf< < < <) (f> > > > > p p p))) => (0.4010417 0.38020834 0.30729166) OMN: (setf p00 '(-h.) p01 '(q d4 pp s eb4 < leg g4 < leg bb4 < leg a4 q. cs5 mf -e 3q gs5 > leg fs5 > leg c5 > b4 > leg f4 leg e4) p02 '(t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg eb5 3q bb5 > a4 > bb5 > e a4 pp stacc -e) p03 '(q d5 leg eb5 3q g4 stacc bb4 stacc a4 stacc e. cs4 marc s gs4 leg q gs4 -q) p04 '(q. fs5 pp 3e c5 < leg b4 < leg f4 e d5 mf s eb5 leg g5 leg bb5 leg a5 e fs5 leg fs5 3e gs4 > stacc c5 > stacc b5 > stacc t f5 pp e.. e5) p05 '(-q. e d4 pp q. eb5 mf e g4 q bb4 a4) p06 '(q cs4 pp -q t gs4 marc e.. fs4 mf leg e c4 -e t b4 leg f4 q.. e4 pp) p07 '(-q e d4 leg eb4 h g4 mf leg q. g4 > -e) p08 '(s bb4 pp leg a4 h. db4 t gs4 mp fs4 < c5 < b4 q f5 marc e5) ) (setf pattern (assemble-seq p00 p01 p02 p03 p04 p05 p06 p07 p08)) Type nil returns a mean value derived from the three main types: (get-density pattern) => (0.0 0.3716961 0.47591507 0.343125 0.49027777 0.36222222 0.41116783 0.2487963 0.45833334) Length density: (get-density pattern :type :length) => (0.0 0.5680555 0.7047059 0.36791664 0.8072916 0.25333333 0.44183674 0.24291666 0.73148143) Pitch density: (get-density pattern :type :pitch) => (0.0 0.27272728 0.375 0.33333334 0.36666667 0.5 0.45833334 0.1388889 0.3333333) Velocity density: (get-density pattern :type :velocity) => (0.0 0.27430555 0.34803924 0.32812503 0.296875 0.33333334 0.33333334 0.36458337 0.3101852) FILTER-DENSITY The function FILTER-DENSITY analyses all bars in a given sequence and returns a new sequence based on the list of density values and their order. A short demonstration on how the density information, taken from a number of patterns can be used in a compositional manner. (setf p00 '(-w.) p01 '(q d4 pp s eb4 < leg g4 < leg bb4 < leg a4 q. cs5 mf -e 3q gs5 > leg fs5 > leg c5 > b4 pp leg f4 leg e4) p02 '(t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg eb5 3q bb5 > a4 > bb5 > e a4 pp stacc -e) p03 '(q d5 leg eb5 3q g4 stacc bb4 stacc a4 stacc e. cs4 marc s gs4 leg q gs4 -q) p04 '(q. fs5 pp 3e c5 < leg b4 < leg f4 e d5 mf s eb5 leg g5 leg bb5 leg a5 e fs5 leg fs5 3e gs4 > stacc c5 > stacc b5 > stacc t f5 pp e.. e5) p05 '(-q. e d4 pp q. eb5 mf e g4 q bb4 a4) p06 '(q cs4 pp -q t gs4 marc e.. fs4 mf leg e c4 -e t b4 leg f4 q.. e4 pp) p07 '(-q e d4 leg eb4 h g4 mf leg q. g4 > -e) p08 '(s bb4 pp leg a4 h. db4 t gs4 mp fs4 < c5 < b4 q f5 f marc e5) p09 '(h. eb4 pp q g3 -e q gs4 mf -s a5 p tie) p10 '(e. a5 -e q bb4 mf -s q cs5 p -s q. e5 mf -e.) p11 '(q cs5 p h. d5 mf -q c5 pp tie) p12 '(h c5 pp h. gs3 -e a4 p) p13 '(h. fs5 mp q bb3 c5 p e4 mf tie) p14 '(h e4 -e q cs4 mp h d5 p e f4) mat (assemble-seq p00 p01 p02 p03 p04 p05 p06 p07 p08 p09 p10 p11 p12 p13 p14) ) (progn (setf ;bars 1 2 3 4 5 6 7 8 9 10 11 12 13 14 p1 '(0.2 0.0 0.2 0.0 0.2 0.3 0.8 0.2 0.3 0.0 0.2 0.2 0.0 0.1) p2 '(0.0 0.2 0.6 0.3 0.0 0.5 0.2 0.7 0.0 0.2 0.0 0.2 0.3 0.2) p3 '(0.2 0.7 0.0 0.0 0.2 0.3 0.2 0.0 0.7 0.0 0.3 0.2 0.5 0.1) p4 '(0.1 0.0 0.0 0.2 0.8 0.2 0.0 0.2 0.2 0.0 0.2 0.2 0.3 0.2) p5 '(0.0 0.0 0.2 0.0 0.2 0.0 0.1 0.0 0.0 0.8 0.2 0.2 0.2 0.1) ) (setf v1 (filter-density p1 mat :type :length :seed 253) v2 (filter-density p2 mat :type :length :seed 743) v3 (filter-density p3 mat :type :length :seed 545) v4 (filter-density p4 mat :type :length :seed 987) v5 (filter-density p5 mat :type :length :seed 234) ) (setf fl (unfold 'eg '(t7 v? (a0-12 1) dyn fl) v1) ob (unfold 'eg '(t7 i (a0-12 (3 6 8)) dyn ob) v2) cl (unfold 'eg '(t7 v? (a0-12 (2 9 14)) (ra 9) dyn cl) v3) hn (unfold 'eg '(t-5 t-12 ra rol dyn hn) v4) bn (unfold 'eg '(t-5 t-12 i rol dyn bn) v5) ) (ps 'gm :w5 (list fl ob cl hn bn) :tempo 68) ) Best wishes, JP
  6. I will comeback on that in a few days.
  7. 1.3.24692 – Function name changes: DEF-UNFOLD to DEF-UNFOLD-SET DEF-INSTRUMENT-SETS to DEF-INSTRUMENT-SET – New functions: DEF-UNFOLD-SET UNFOLD-SET-NAMES GET-UNFOLD-SET GET-UNFOLD-SET-GROUPS GET-UNFOLD-SET-GROUP UNFOLD SOUND-SET-NAMES GET-SOUND-SET-PROGRAM-GROUPS GET-SOUND-SET-PROGRAM-GROUP GET-SOUND-SET-PROGRAM GET-SOUND-SET-CONTROLLER-GROUPS GET-SOUND-SET-CONTROLLER-GROUP GET-SOUND-SET-CONTROLLER DEF-INSTRUMENT-SET INSTRUMENT-SET-NAMES GET-INSTRUMENT-SET GET-INSTRUMENT-SET-GROUPS GET-INSTRUMENT-SET-GROUP – New directory in System Library: Libraries. – New directory in Def-Libraries: Def-Unfold-Sets. – New Extension file: 'OSC Remote Setup.lisp'. Fixed: – Documents errors. Examples: SOUND-SET (sound-set-names) => (xce-solo-woodwinds-generic vsl-clarinet-bb vsl-cello sgmo-acoustic-grand-piano k2500r s80 se-1 sgmo-bassoon sgmo-strings-1 zr vsl-altoflute vsl-prepared-piano supernova-ii sy55 reaktor sgmo-vibraphone vsl-imperial vsl-cello-solo trinity ms2000 pr micro-q k1 vsl-cembalo-ks sgmo-piccolo pianoteq vsl-cembalo vsl-violin vsl-viola-solo micro-piano gm2 vsl-contrabass trinity-rack sgmo-celesta sgmo-trombone nord-lead-3 gm sgmo-harp sgmo-glock karma sgmo-trumpet xv-5080 sgmo-flute sgmo-oboe vsl-violin-solo sgmo-horn sgmo-timpani k2600 sgmo-marimba vsl-hornvienna vsl-prepared-piano-ks sgmo-tuba jv-1080 vsl-harmonium-ks vsl-harmonium sgmo jv-2080 sy22 k2500 sgmo-violin virus-b sgmo-cello sgmo-clarinet k2000r k2000 vsl-bassclarinet vsl-upright xce-solo-strings-generic motif sgmo-viola) (get-sound-set-program-groups 'gm) => (piano percussion organ guitar bass strings ensemble brass reed pipe synth-lead synth-pad synth-effects ethnic percussive sound-effects) (get-sound-set-program-group 'gm 'Brass) => (trumpet trombone tuba muted-trumpet french-horn brass-section synth-brass-1 synth-brass-2) (get-sound-set-program 'gm 'trombone) => 57 (get-sound-set-controller-groups 'gm) => (general lsb pedal) (get-sound-set-controller-group 'gm 'general) => (bank-select modulation breath-control foot-control portamento-time data-entry volume balance pan expression effects-controller1 effects-controller2 gen-purpose1 gen-purpose2 gen-purpose3 gen-purpose4) (get-sound-set-controller 'gm 'expression) => 11 UNFOLD (unfold-set-names) => (m1 eg) (get-unfold-set-groups 'eg) => (transp basic ambitus) (get-unfold-set-group 'eg 'ambitus) => (ob bn hn) (get-unfold-set 'eg 'ld) => (:length (length-divide 2 2 x)) Unfold Set Example: (def-unfold-set eg :methods (:group transp t7 (:pitch (pitch-transpose 7 x)) t-12 (:pitch (pitch-transpose -12 x)) :group basic ret (:all (gen-retrograde x :flatten t)) var (:pitch (pitch-variant x :variant '?)) gf (nil (gen-fragment '(3) '(3) x)) ld (:length (length-divide 2 2 x)) lrq (:length (length-rational-quantize x)) dyn (:velocity (velocity-to-dynamic x)) ls (nil (length-span '(6/4 6/4) x)) :group ambitus ob (:pitch (ambitus 'oboe x)) bn (:pitch (ambitus 'bassoon x)) hn (:pitch (ambitus 'french-horn x)) )) INSTRUMENT-SET (instrument-set-names) => (vsl gm) (get-instrument-set-groups 'gm) => (clefs grand wind brass strings wind-ensemble brass-ensemble piano string-ensemble choir) (get-instrument-set-group 'gm 'wind) => (:pic :fl :afl :bfl :ob :eh :oda :cl :acl :bcl :bn :cbn :ssax :asax :tsax :bsax) (get-instrument-set-group 'gm 'string-ensemble) => (:s3 :sq) (get-instrument-set 'gm :p) => (:layout piano-layout :port nil :channel 1 :sound 'gm :program 0 :controllers nil :pan (pan 0) :volume 92) (get-instrument-set 'gm :sq) => (:layout string-quartet-layout :port nil :channel '(13 14 15 16) :sound 'gm :program '(violin violin viola cello) :controllers nil :pan (pan '(-30 -10 10 30)) :volume 92) Instrument Set Example: (def-instrument-set my-inst :instruments (:group wind :oboe (:layout oboe-layout :port nil :channel 1 :sound 'gm :program '(oboe) :controllers nil :pan (pan 0) :volume 92) :bassoon (:layout bassoon-layout :port nil :channel 2 :sound 'gm :program '(bassoon) :controllers nil :pan (pan -10) :volume 92) )) Note: Please create a new directory 'Def-Unfold-Sets' in your '~/Opusmodus/Def-Libraries' directory. This is where you will store your Unfold sets. The 'OSC Remote Setup.lisp' file needs to be dragged into your '~/Opusmodus/Extensions' directory. OSC Remote Setup.lisp Best wishes, Janusz
  8. Thank you Lasse for your report. Anyway, this file will fix it:
  9. If you use OSC in Opusmodus you need to drop the 'OSC Remote Setup.opmo' file into your '~/Opusmodus/Extensions' folder and restart OM. This file will fix the OSC problem. OSC Remote Setup.lisp Best wishes, Janusz
  10. The ID is the address. The form like "/a" is made internally. All you need to do is to give the id (address) "a" only. The data has two values one for the controller and the second one is the time (interval). I have explained this in my previous post (see above).
  11. I am on Mojave and all works fine here. You need to set the correct remote-host and remote-port for your Reaktor: (defparameter reaktor '(127.0.0.1 10000)) Make sure the OSC is Active: Do you see the Control IDs and Targets in your Reaktor-Drive.ens file: Please drop this file into your '~/Opusmodus/Extensions' folder and restart OM, without it the OSC will not work. OSC Remote Setup.opmo This should fix the problem. Best, Janusz
  12. PLEASE NOTE! The changes to OSC implementation - see below - are thanks to Rangarajan Krishnamoorthy. If you use OSC threads please revise your OSC files and make the necessary adjustments.
  13. Dear Rangarajan, Here it is. OSC threads and Reaktor 6: 1. Expand the Reaktor-Drive.ens.zip file first. Reaktor-Drive.ens.zip 2. Move the Reaktor-Drive.ens file into the '~/Opusmodus/Instruments' directory, this will allow you to star the Reaktor form the Opusmodus app. 3. Add the 'OSC Threads.opmo' file into the Opusmodus Navigator. OSC Threads.opmo 4. Evaluate the DATA parameters. 5. Evaluate the SCORE. 6. Press START button in the Live Coding Instrument - you should hear a sound coming from your Reaktor instrument. 7. Now you are ready to run the OSC threads. You can end any thread at any time with END-OSC-THREADS or all threads with END-ALL-OSC-THREADS. Yes, the OSC-THREAD send the data to the given controller at the other end. Each message has two values, example: (0.04198588 4). The first value is the controller value, the second value is the time (interval - second or ratio). Best wishes, Janusz
  14. New function: STOP-ALL-OSC-THREADS Fixed: Live Coding Instrument hanging note at Stop. Few document errors. Note: Select 'Check for Updates..." from Opusmodus menu.
  15. First you need to define and link the thread IDs with the Reaktor controllers. Each Drive.ens controller (button or slider) should receive one ID thread message. In the Reaktor you can assign a OSC thread ID with a right mouse click on the controller selecting "MIDi & OSC Learn": You should send only one thread at a time. Stop the thread and trigger next one etc... The new function END-ALL-OSC-THREADS will destroy all OSC threads. Please note, you need to update your app first (1.3.24667) before you can use the new function. To do that simply select 'Check for Updates..." from Opusmodus menu. Tomorrow I will create a Drive.ens - for Reaktor 6 - with ID controllers already linked, as well a simple score for LCI to play with.
  16. Good to see Rangarajan. This example should help. In this example I use the Reaktor "Drive.ens" from the Reaktor Blocks. OSC Threads.opmo To hear the OSC messages in action you need to create a score and send the midi messages to the Reaktor possibly on :port 0 and :channel 1. Best wishes, Janusz
  17. Just replace the old "Load CLM Instruments.lisp" file with this one: Load CLM Instruments.lisp
  18. To make the direct access to your own Instrument-Sets programs from the Libraries pane you need to create a new folder with the name 'Def-Instrument-Sets' in the '~/Opusmodus/Def-Libraries' directory. This will be the place where you store your Def-Instrument-Sets instances and the files will be loaded at startup.
  19. Display in the window instead in the Assistant panel. Example: Display in the Assistant pane: (ps 'gm :fl (list '((t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg eb5 3q bb5 > a4 > bb5 > e a4 pp stacc -e)))) Display in the window: (ps 'gm :fl (list '((t d4 < leg eb4 < leg g4 < leg bb4 q. a4 marc t fs4 mf leg gs4 leg e. c5 e b4 t f5 leg e5 leg d5 leg eb5 3q bb5 > a4 > bb5 > e a4 pp stacc -e))) :display :window) To open the last compiled score file in the window: (display-midi *last-score* :display :window) To display the last compiled score file in the window: (display-musicxml *last-score* :display :window) Check the Tools menu for the shout cuts and the contextual menu.
  20. Looks like you are not using CLM therefore remove the 'Load CLM Instruments.lisp' form the Extensions folder, otherwise follow the instruction how to make the CLM work here:
  21. Opusmodus version 1.3.24622 - support for second monitor and window for MIDI player and MusicXML display.
  22. Function name: BIND-TO-INTERVAL in Opusmodus version 1.3.24622
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy