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.

o_e

Members
  • Joined

  • Last visited

Posts posted by o_e

  1. Hi André

    Just investigating your function..
    Then I've tried a little cosmetic hack to make it more readable, but it did not work out and I don't understand why. What did I overlook?

    Thanks!

     

    ole

    ;;; the orginal function 
    
    (defun binary-filter (alist bin-list)
      (let ((event-list (cond ((omn-formp alist)
                               (single-events alist))
                              (t alist))))
        (flatten 
         (loop 
           for i in event-list
           for j in bin-list
           when (= j 1)
           collect i
           else append (cond ((omn-formp i)
                              (list (length-invert (car i))))
                             ((lengthp i)
                              (neg! (omn :length (list i)))))))))
    
    
    
    
    
    (binary-filter '(q c4 mf  d4 e4 e f4 ppp g4 a4 b4) '(1 0 1 1 0 1 1))
    => (q c4 mf -1/4 q e4 mf e f4 ppp -1/8 e a4 ppp e b4 ppp)
    
    
    
    
    ;;;Why is it not working??
    
    
    
    (defun foo-rep (n sequence &key omn)
      (maybe-omn-decode omn
       (binary-filter n sequence)))
    
    
    (foo-rep '(q c4 mf  d4 e4 e f4 ppp g4 a4 b4) '(1 0 1 1 0 1 1) :omn t)
    -->(q c4 mf -1/4 q e4 mf e f4 ppp -1/8 e a4 ppp e b4 ppp);??
    
    
    
    

     

  2. Hi Julio,

     

    I've found two problems. The weird one you had I think I could find and solve, but the function also does not handle tied notes properly and I have no idea how to remedy that. That goes waay above my hacking abilities :-)

    
    (length-staccato 1/16 '((e. c4 eb4 fs4 a4 tie) (s a4 e. cs4 e4 g4 e bb4 tie) (e bb4 e. d4 f4 gs4 s b4)))
    -->((s c4 -e s eb4 -e s fs4 -e s a4 -e) (s a4 cs4 -e s e4 -e s g4 -e s bb4 -) (s bb4 - d4 -e s f4 -e s gs4 -e s b4))

     

    5a343ccd0afd1_Bildschirmfoto2017-12-15um22_17_58.jpg.aac8244db0091797b20ab8e21271ef2e.jpg

     

    Nevertheless the code with the one correction, so it's not perfect but maybe somehow useful for you..

    best  ole

    
    (defun length-staccato (n alist)
      (let ((newlengths (loop for i in (omn :length (flatten alist))
                          when (> i n)
                          append (list n (* -1 (abs (- i n))))
                          else collect i)))
        (if (omn-formp alist)
          (omn-to-time-signature
           (make-omn :length newlengths
                    :pitch (omn :pitch alist)
                    :velocity (omn :velocity alist)
                    :articulation (omn :articulation alist))
           (get-time-signature alist))
          newlengths))) 

  3. Did you see my workaround in the post mentioned by André (to lock the smpte of the track and then change the overall tempo in Logic)?

    Now I'am working with Reaper (https://www.reaper.fm/ )

    which is worth to checkout, very cheap and unbelievable powerful (a bit of a learning curve I admit), no problem to change the tempo of every midi file seperatly..

     

    best  ole

     

     

  4. Hi,

     

    Just a minor improvement, the function is now also working with sublists :-)

     

    best ole

     

    
    (defun length-staccato-lists (n alist)
      (let ((newlengths (loop for i in (omn :length (flatten alist))
                          when (> i 0)
                          append (list n (* -1 (abs (- i n))))
                          else collect i)))
        (if (omn-formp alist)
          (omn-to-time-signature
           (make-omn :length newlengths
                    :pitch (omn :pitch alist)
                    :velocity (omn :velocity alist)
                    :articulation (omn :articulation alist))
           (get-time-signature alist))
          newlengths)))
    
    
    (length-staccato-lists 1/16 '((q e4 mp q tasto q -q q q)(q e4 mp q tasto q -q q q)))
    
    -->((s e4 mp -e. s e4 tasto -e. s e4 -e. -q s e4 -e. s e4 -e.) (s e4 -e. s e4 tasto -e. s e4 -e. -q s e4 -e. s e4 -e.))
    
    

  5. 2 hours ago, opmo said:

    In the velocity documents you find all the answers.

     

    Example

    All 127 velocities in float point numbers:

    
    (vector-to-velocity 0.1 1.0 (gen-integer 1 127) :type :float)
    => (0.1 0.11 0.11 0.12 0.13 0.14 0.14 0.15 0.16 0.16 0.17 0.18 0.19
            0.19 0.2 0.21 0.21 0.22 0.23 0.24 0.24 0.25 0.26 0.26 0.27
            0.28 0.29 0.29 0.3 0.31 0.31 0.32 0.33 0.34 0.34 0.35 0.36
            0.36 0.37 0.38 0.39 0.39 0.4 0.41 0.41 0.42 0.43 0.44 0.44
            0.45 0.46 0.46 0.47 0.48 0.49 0.49 0.5 0.51 0.51 0.52 0.53
            0.54 0.54 0.55 0.56 0.56 0.57 0.58 0.59 0.59 0.6 0.61 0.61
            0.62 0.63 0.64 0.64 0.65 0.66 0.66 0.67 0.68 0.69 0.69 0.7
            0.71 0.71 0.72 0.73 0.74 0.74 0.75 0.76 0.76 0.77 0.78 0.79
            0.79 0.8 0.81 0.81 0.82 0.83 0.84 0.84 0.85 0.86 0.86 0.87
            0.88 0.89 0.89 0.9 0.91 0.91 0.92 0.93 0.94 0.94 0.95 0.96
            0.96 0.97 0.98 0.99 0.99 1.0)

    Thanks!

     

  6. On 6/6/2017 at 11:32 AM, opmo said:

    What about floating point numbers velocity 🙂

    
    (make-omn :length '(e = = = = = = =)
              :pitch '(c4 cs5 b3 c4)
              :velocity '(0.1 0.2 0.21 0.32))
    => (e c4 0.1 cs5 0.2 b3 0.21 c4 0.32 0.1 cs5 0.2 b3 0.21 c4 0.32)

     

     

    thanks for the quick answer! So the floating point numbers velocity ranges from 0.1 to 0.99 or how do it relate to the 1-127 midi steps?

    I want to create an as-smooth-as-possible crescendo from the lowest possible value to the highest over x steps..

    Can you point me to some more information about 'floating point numbers velocity'?

  7. Hi,

    I have a list of 30 midi-velocities that I want to map to 30 pitches, how can I do that without converting the velocities into symbols? Is that possible in OM (it is not for human players but for virtual instruments)?

    (setf vel '(1 5 10 14 19 23 27 32 36 41 44 50 53 57 62 66 71 75 79 84 88 93 97 102 105 109 114 118 123 127))

    converted to symbols it looks like:

    (ppppp ppppp pppp pppp pppp ppp ppp pp pp pp p p mp mp mp mf mf f f f ff ff fff fff fff ffff ffff ffff fffff fffff)

    which is not as 'smooth' as I want it..but make-omn seems to handle only velocity-symbol or am I missing something?

     

    thanks for help!

  8. I think I know what the problem was, I can not copy directly from the browser. 'Text Wrangler' shows me lots of otherwise hidden signs that confuses OM and that I have to remove first. Sorry for the noise.

    That was probably the same problem with Yuichis Code..

    edit: Yes ideed!

  9. Dear Torsten,

     

    Thank you very much for your solution. It looks very promising, in a good sense simple.

    Unfortunatly, when I tried to eval your "cut-holes" function it throws an error:

    Error: ((= b 0) (* l -1) l) can't be destructured against the lambda list (ccl::test true &optional false), because it contains 5 elements, and at most 3 are expected.

    and I could not find out whats wrong. What am I missing?

     

    ole

  10. Hi Yuichi,

     

    Thanks for your efforts!

    Unfortunatly the listener gives me a 'no current expression' when I try to evaluate the 'skip-notes' function and I do not find what is wrong at first glance. Maybe you can repost your code using the  '<>' code-brackets in the posting window. Not sure if this helps though.

     

    best

     

    ole

  11. Hi,

     

    I want something rather simple, a sort of sieve, how can I achive that?

     

    Lets say I have a melody like

    (q c4 e d4  e e4  q. f4 e g4 q a4 b4)


    and I want to mute every other note, so the result would be:

    (q c4 -e e4 -q. e g4 -q b4)

    or every third note like:

    (q c4 e d4 -e q. f4 e g4 q a4 -q)

    and it would be great to have an offset..

     

    thanks!

    ole

  12. Thank you for the quick reply!

    My material is this pattern:

    (1/4 -1/4 1/4 -3/8 1/4 -1/4 1/4 -3/8)

    now I want to create  all variations of this pattern ranging from one beat:

    (-1/4 -1/4 -1/4 -3/8 1/4 -1/4 -1/4 -3/8)
          
    (0    0    0    0    1   0    0    0   )

    to four beats (orginal pattern)

     

  13. Hi, I'am looking for a method to pick more and more elements from a list (that are more or less equally distributed):

     

    (1/4 -1/4 1/4 -3/8 1/4 -1/4 1/4 -3/8)
    (1   0    1   0    1   0    1   0   )
    1.pass--> (-1/4 -1/4 -1/4 -3/8 1/4 -1/4 -1/4 -3/8)
          
              (0    0    0    0    1   0    0    0   )
    2.pass--> (-1/4 -1/4 1/4 -3/8 -1/4 -1/4 1/4 -3/8)
           
              (0    0    1   0    0   0     1   0   )
    3.pass--> (1/4 -1/4 -1/4 -3/8 1/4 -1/4 1/4 -3/8)
          
              (1   0    0    0    1   0    1   0   )
    4.--> see orginal list

    thanks for any hints

    best

    ole

  14. I've tried to import Data from Spear following the help-file of import-spectral-spear but did not succede.

    I assume I have to export the textfiles of the partial data and the frames data to the folder ~/Opusmodus/Spectral Data/Data

    and the described import action is related to OM?

     

    When I try (import-spectral-spear :frames "tbn cs3 frames"  "tbn-cs3-frames") than:

    > Error: No such file or directory : #P"om:Spectral Data;Data;tbn cs3 frames.txt.newest"

     

    So it would be really great if you can ellaborate on that spectral stuff..

     

    thanks a lot!

     

    ole


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.