Jump to content

Search the Community

Showing results for tags 'resolved'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to Opusmodus
    • Announcements
    • Pre Sales Questions
  • Support Forum
    • Support & Troubleshooting
    • OMN Lingo
    • Function Examples
    • Score and Notation
    • Live Coding Instrument
    • Library Setup
    • MIDI Setup
    • SuperCollider
  • Question & Answer
    • Suggestions & Ideas
    • Zoom into Opusmodus
  • Sharing
    • Made In Opusmodus
    • User Extensions Source Code
  • Opusmodus Workshops & Schools
    • Composer Workshop

Calendars

  • Community Calendar

Product Groups

  • Opusmodus

Categories

  • Introduction
  • How-to in 100 sec
  • Zoom into Opusmodus
  • SuperCollider
  • How-To
  • Workflow
  • Live Coding
  • Presentation
  • Analysis
  • Composer Workshop

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Gender


Location


Interests


About Me

  1. I really like how Opusmodus allows to preview monophonic snippets (and other material, like interval sequences). No need to explicitly call some function or connect to some editor, as in other composition systems -- just use a keyboard shortcut to see and hear an intermediate result. However, what I miss is notating/auditioning intermediate results of polyphonic music with a single shortcut. So, I defined the function preview-score, based on def-score. The function expects a polyphonic score in the slightly simplified format we discussed earlier. Here is a minimal example. (preview-score '(:vln ((q b4 a4 h g4)) :vlc ((h g3 b3)))) If I want to control further notation or playback parameters, preview-score provides arguments for that, but that is basically the same as using def-score directly. Instead, such parameters can be defined only once with global variables, and then used for multiple calls to preview-score. Here is some example setting. (setf *default-preview-score-instruments* '(:vln (:program 'violin :sound 'gm) :vlc (:program 'cello :sound 'gm))) (defparameter *default-preview-score-header* '(:title "Opus magnum" :tempo 80)) Janusz: How can I define a keyboard shortcut that calls the function preview-score with the score returned by a selected code region (or the Lisp expression just before the cursor)? Thanks! For completeness, the definition of preview-score is below. Best, Torsten ;;; just some dummy settings for now (defparameter *default-preview-score-instruments* '(:vln (:program 'violin :sound 'gm) :vlc (:program 'cello :sound 'gm)) "Settings for each instrument used by `preview-score'. The format is a plist where keys are the instrument labels, and values a list with the actual settings. For format of these settings are the same as instrument settings for `def-score' with keywords like :sound, :channel etc. -- except for they key :omn.") ;;; just some dummy settings for now (defparameter *default-preview-score-header* '(:title "Opus magnum" :tempo 80) "Global score settings used by `preview-score'. The format is a plist where keys are the instrument labels, and values a list with the actual settings. The format is the same as the header settings for `def-score' with keywords like :title, :key-signature etc.") (defun preview-score (score &key (name 'test-score) (instruments *default-preview-score-instruments*) (header *default-preview-score-header*)) "Notates and plays a score in a format slightly simpler than expected by def-score, i.e., without its header. Args: - score (plist): a headerless score. See below for its format. - name (symbol): The score name. - instruments (plist): Keys are instrument labels, and values a list with the actual settings. These settings have the same format as instrument settings for `def-score' with keywords like :sound, :channel etc. -- except for they key :omn. - header (plist): The format is the same as the header settings for `def-score' with keywords like :title, :composer, :key-signature etc. Score format: ;;; (<part1-name-keyword> <part1-OMN> ;;; <part2-name-keyword> <part2-OMN> ;;; ...) Example: ;;; (preview-score ;;; '(:vln ((q g4) (q. c5 e d5 q e5 f5) (h. e5)) ;;; :vlc ((q g3) (q c4 b3 a3 g3) (h. c3))) ;;; :instruments '(:vln (:program 'violin :sound 'gm) ;;; :vlc (:program 'cello :sound 'gm)) ;;; :header '(:title \"Opus magnum\" ;;; :tempo 80)) " ;; Using eval is problematic (https://stackoverflow.com/questions/2571401/why-exactly-is-eval-evil/), ;; but hard to avoid for a dynamically created def-score expression that requires splicing with ,@. ;; Possible alternative would be to define preview-score as macro, but then arguments are not evaluated. (eval `(def-score ,name ;; quote all header args, because symbol values must be quoted... ,(mapcar #'(lambda (x) `',x) (append header ;; add default vals of required header args at end -- they are overwritten by args given (list :key-signature 'atonal ;; By default, use implicit time signature of 1st part :time-signature (om:get-time-signature (second score)) :tempo 70))) ,@(mapcar #'(lambda (part) (let ((part-symbol (first part)) (part-omn (second part))) (list* part-symbol :omn `(quote ,part-omn) (getf instruments part-symbol)))) (plist->pairs score))) ) (audition-musicxml-last-score) *last-score*) #| ; mini test (preview-score '(:vln ((q g4) (q. c5 e d5 q e5 f5) (h. e5)) :vlc ((q g3) (q c4 b3 a3 g3) (h. c3))) :instruments '(:vln (:program 'violin :sound 'gm) :vlc (:program 'cello :sound 'gm)) :header '(:title "Opus magnum" :tempo 80)) |#
  2. a minor correction suggested... I know this is fairly basic, but it made a beginner like me do a double take... this is the helpfile: but further down it says... yet 'size' (which is in the type for a &key) is not a valid keyword, it refers to 'number'... thought it may help others... must be a nightmare keeping all help-files consistent, my sympathies! best, Julio
  3. Following from this question, I want to use several different Lisp packages through quicklisp, but I can't get the installation to work correctly. After doing some digging, I found out that the path to quicklisp is not defined correctly. This is the content of the ql:*quicklisp-home* global: > ql:*quicklisp-home* #P"/Users/opusmodus/quicklisp/" I realised that changing this manually doesn't fix the issue, and because of this I can't install or use quicklisp correctly. Note that I do not have a user by the name opusmodus and creating that directory with my user's permission does not fix it. I managed to do something by using SBCL as my own user to load and install quicklisp, and then in opusmodus use the following: (load #p"/Users/ajf-/quicklisp/setup.lisp") But it's actually a workaround and it's not very reliable (also gives an error sometimes). Can you please point me in the right direction? Thank you very much
  4. Hi, I get the following error warning, when I try to audition the omn and I don't get why..? With a def-score section all compiles fine > Error: The GET-SPAN output denominator is not a power of two (1, 2, 4, 8, 16, ...). Denominator: 12. > While executing: get-time-signature-l, in process Listener-1(8). > Type cmd-. to abort, cmd-\ for a list of available restarts. > Type :? for other options. (simplified) code: (setf zahlen3 '((-3/8 3/8 -1/8 -3/8) (1/2 5/8 1/4) (5/8 1/4 -3/8) (1/8 3/8 1/4 1/2) (-3/8 1/4 -1/8 1/4 1/8 -3/8) (3/8 -1/8 1/4 1/4 5/8 1/4 1/2 -3/8) (-1/8 5/8 1/8 -3/8) (-1/8 -3/8 -3/8 -3/8) (1/8 -3/8 1/8 -3/8 1/4) (1/2 1/2 1/8 1/8 -3/8) (1/8 -1/8 3/8 1/4 1/2 -3/8 1/8) (-1/8 -1/8 1/4 3/8 1/4) (-1/4 1/4 -1/12 -1/4 1/6 5/12 -1/12) (1/6 5/12 1/6 -1/4) (1/12 1/4 1/6 1/12 -1/4 1/6 -1/12) (-1/12 1/6 1/12 -1/4 1/6) (-1/12 1/6 1/6 5/12 1/6) (1/3 -1/4 -2/12) (5/12 1/12 -1/4 -1/12 -5/12 -1/4 -1/4) (1/8 -1/4 1/12 -1/4 1/6) (1/3 1/3 1/12 1/12 -1/4 1/12 -1/12) (-1/12 1/4 1/6 1/3 -1/4 1/12 -1/12) (-1/12 1/6 1/4 1/6 -1/12) (-3/8 3/8 -1/8 -3/8 1/2 5/8 1/4 5/8 1/4) (-3/8 1/8 3/8 1/4 1/2 -3/8 1/4 -1/8) (1/4 1/8 -3/8 3/8 -1/8 1/4 1/4 5/8) (1/4 1/2 -3/8 -1/8 5/8 1/8 -3/8 -1/8 -3/8) (-3/8 -3/8 1/8 -3/8 1/8 -3/8 1/4) (1/2 1/2 1/8 1/8 -3/8 1/8 -1/8 3/8) (1/4 1/2 -3/8 1/8 -1/8 -1/8 1/4 3/8 1/4))) (get-span zahlen3) => (5/4 11/8 5/4 5/4 3/2 11/4 5/4 5/4 5/4 13/8 15/8 9/8 3/2 1 13/12 3/4 1 3/4 7/4 7/8 5/4 5/4 3/4 7/2 19/8 19/8 23/8 2 9/4 19/8) (setf toene '(c4 d4 e4 f4 fs4 gs4 bb4)) (setf stimme1 (make-omn :length zahlen3 :pitch toene))
  5. Hi, I have a small suggestion concerning MAKE-SCALE: It would be a nice extension, if one can use lists in :alt would be an easy way to construct symmetric scales and more complex sieves. simple example: (make-scale 'c3 8 :alt '(1 2)) => (c3 cs3 eb3 e3 fs3 g3 a3 bb3) same as: (flatten (list (gen-mix (make-scale 'c3 4 :alt 3) (make-scale 'cs3 4 :alt 3)))) => (c3 cs3 eb3 e3 fs3 g3 a3 bb3) Happy New Y(ear)(s)! ole
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy