Skip 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.

jesele

Members
  • Joined

  • Last visited

  1.    jesele reacted to a post in a topic: shift-rhythm Function
  2.    jesele reacted to a post in a topic: Opusmodus 4.0.31058 Update
  3.    jesele reacted to a post in a topic: merge-rotated-sublists function
  4. How about functions with more than one argument? Jesper
  5. There's also a more generic option. Jesper (maybe-section (lambda (x) (ambitus '(c7 c8) x)) mat '(23 24 30)) (maybe-section (lambda (x) (pitch-transpose 12 x)) mat '(23 24 30))
  6. Like this, I think. Jesper (setf test (ambitus '(c7 c8) mat :section '(23 24 30)))
  7.    jesele reacted to a post in a topic: all-magic-square-lines
  8.    Stephane Boussuge reacted to a post in a topic: harmonics function
  9. Don't know if this simple function will be of use for now. Jesper ;; for single pitches (defun harmonics2 (start-pitch length &key (partial 1) quantize) (let ((sp (pitch-to-hertz start-pitch)) (part (max partial 1)) res) (setf res (loop for i from part to (+ length (1- part)) collect (* i sp))) (if quantize (pitch-to-hertz (micro-quantize (hertz-to-pitch res) :quantize quantize)) res))) (harmonics2 'a2 8) =>(110.0 220.0 330.0 440.0 550.0 660.0 770.0 880.0) (harmonics2 'a2 8 :partial 4) =>(440.0 550.0 660.0 770.0 880.0 990.0 1100.0 1210.0) (harmonics2 'a2 8 :partial 1 :quantize 1/8) =>(110.0 220.0 329.62756 440.0 546.4174 659.2551 772.751 880.0) (mapcar (lambda (x) (harmonics2 x 4)) '(a2 c3 d3)) =>((110.0 220.0 330.0 440.0) (130.81278 261.62555 392.43832 523.2511) (146.83238 293.66476 440.49713 587.3295))
  10. jesele replied to born's topic in Score and Notation
    Can't you use merge-voices? From the doc: (setf voice1 '(w c2) voice2 '(h c4 d4) voice3 '(q g5 g5 g5 g5)) (merge-voices voice1 voice2 voice3) =>(z^w c2 z^h c4 q g5 g5 z^h d4 q g5 g5) Jesper
  11. Only Janusz knows. Could it be that the default is a tempered scale? (harmonics 'a2 8 :quantize nil :type :hertz) =>(110.0 220.0 329.62756 440.0 546.4174 659.2551 772.751 880.0) (* 220 (expt 2 7/12)) ;;tempered fifth =>329.62756 Jesper
  12. (get-count omn :length :note :sum t) If you don't want to count all notes in a tie-chain, you could do this first. (setf tst (omn-merge-ties (flatten-omn omn))) (get-count tst :length :note :sum t) Jesper
  13.    jesele reacted to a post in a topic: Slonimsky Patterns
  14. Your first example doesn't quantize, and your second example quantizes to the closest semitone, I guess. Sorry, didn't read carefully enough in my deleted answer. Jesper
  15. Nothing. Jesper
  16.    jesele reacted to a post in a topic: Slonimsky Patterns
  17. Does this work for you? Jesper (omn-to-time-signature '(1/4 1/8 1/8 1/2 1/4 1/8 1/8 1/2 1/4 1/4 -1/8 1/8 1/8 1/8 1/8 1/4 1/2 1/2 ) '(4 4)) Or perhaps rather this. (setf foo (omn-to-time-signature '(1/4 1/8 1/8 1/2 1/4 1/8 1/8 1/2 1/4 1/4 -1/8 1/8 1/8 1/8 1/8 1/4 1/2 1/2) '(1 4))) (setf quux (omn-to-time-signature foo '(4 4))) Or a simple function. (defun divide-by (seq div &optional (time-sig '(4 4))) (flet ((div-by (val div) (let ((len (floor val div))) (if (> val div) (gen-repeat len (/ val len)) val)))) (omn-to-time-signature (loop for x in (omn-encode (flatten seq)) collect (div-by x div)) time-sig))) (setf mat '(1/4 1/8 1/8 1/2 1/4 1/8 1/8 1/1 1/4 1/4 -1/8 1/8 1/8 1/8 1/8 1/8 1/4 -1/2 1/2)) (divide-by mat 1/4 '(4 4)) =>((1/4 1/8 1/8 1/4 1/4) (1/4 1/8 1/8 1/4 1/4) (1/4 1/4 1/4 1/4) (-1/8 1/8 1/8 1/8 1/8 1/8 1/4) (-1/2 1/4 1/4)) (divide-by mat 1/6) =>((1/4 1/8 1/8 1/6 1/6 1/6) (1/4 1/8 1/8 1/6 1/6 1/6) (1/6 1/6 1/6 1/4 1/4) (-1/8 1/8 1/8 1/8 1/8 1/8 1/4) (-1/2 1/6 1/6 1/6))
  18.    jesele reacted to a post in a topic: Sketching with Opusmodus and Max/MSP
  19. Thanks, Janusz. Jesper
  20. Now this '(h c4 d4 e4 f4 w g4) results in this. Jesper
  21. As a function. Jesper (defun foo (pitches max &optional (div 3)) (let (res) (loop for i from 1 to max collect (gen-repeat i (cons (/ 1/4 i) (make-list (1- div) :initial-element '-))) into rhy collect (butlast pitches (- max i)) into mel finally (setf res (make-omn :length rhy :pitch mel)) (return (omn-to-time-signature (append res (reverse res)) (list div 4)))))) (foo '(e4 fs4 g4 fs4 g4 a4 g4 a4) 8 3) (foo '(e4 fs4 g4 fs4 g4 a4 g4 a4) 6 4) (foo '(e4 fs4 g4 fs4 g4 a4 g4 a4) 7 5)
  22. Same with this. Jesper (setf accent (loop for i from 1 to 8 collect (gen-repeat i (list (/ 1/4 i) (/ -1/2 i)))))

Copyright © 2014-2026 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

Account

Navigation

Search

Search

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.