Jump to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

get-position (add for "inserting-on..."-function

Featured Replies

;;; gets the position => bar and beat where the value is
;;; => could be used in combination with "inserting-on-bar/beat*",
;;; if you are looking for a specific value to sprout a sequqnce


;;; FUNCTION

(defun get-position (seq value &key (get 'all))
  (let ((beat)
        (bar (car
              (loop for i in seq
                for bar = 1 then (incf bar)
                append (loop for j in (single-events i)
                         when (pattern-matchp j (list value))
                         collect bar)))))
    (progn
      (setf beat (loop for k in (loop for i in (single-events (nth (1- bar) seq))
                                  when (not (pattern-matchp i (list value)))
                                  append (omn :length i)
                                  else collect 'match)
                   when (numberp k)
                   collect (abs k) into bag
                   when (equal k 'match)
                   do (return (list (1+ (numerator (abs (sum bag))))
                                    (denominator (abs (sum bag))))))))
    (cond ((equal get 'all)
           (list bar beat))
          ((equal get 'bar)
           (append bar))
          ((equal get 'beat)
           (append beat)))))
          

;;; EXAMPLES:

(setf seq '((h c4 q q) (e f4 pp f4 mp f4) (-3q 3q cs5 -3q h)))

(get-position seq 'cs5 :get 'all)
(get-position seq 'cs5 :get 'bar)
(get-position seq 'cs5 :get 'beat)


(get-position seq 'pp :get 'all)

 

  • Author

hi, yes - with this two functions (get-posititon & inserting-on-bar/beat*) you will have a lot of possibilities...

 

1) post-processing an OMN without changing the global time structure

2) working with "strukturnetze" (lachenmann)

3) countrepoints

4) idea of palimpsts

....

 

...so, perhaps OPMO could code it smarter then me (that's not complicated :-))?

... i try to do an example today with something like a "strukturnetz"

Create an account or sign in to comment


Copyright © 2014-2025 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Important Information

Terms of Use Privacy Policy

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.