Updates from March, 2017 Toggle Comment Threads | Keyboard Shortcuts

  • Daniel Ross 14:52 on March 28, 2017 Permalink | Reply  

    I hope I’m wrong but I don’t think event-list-to-midi-file let’s you use chords.

    I can’t get the following to run:

    (let ((events (list (make-event 'a4'e :start-time 0)
    (make-event '(a4 b4 c5) 'e :start-time 0.1))))
    (event-list-to-midi-file events :start-tempo 120
    :auto-open nil))
     
  • Michael Edwards 15:53 on March 27, 2017 Permalink | Reply
    Tags: musicxml,   

    Music XML output on its way. Been working really hard on this in my spare time for the past couple of weeks. Coupled with lilypond editing fatigue and a prod from Charles Gaskell I bit the bullet and wrote the code for this after looking at it again and deciding that it’s probably now worth it. Each bit of software seems to fail in its own way when importing XML, but finale seems to be pretty good. Just imported 90k+ lines of xml without error for the first time 🙂 (that’s about 100 times more code than Lilypond)

     
  • Michael Edwards 14:31 on February 13, 2017 Permalink | Reply
    Tags: wiki   

    If you haven’t seen it already I’m increasingly using a wiki to share code snippets and bits of knowledge in the form of a HOWTO: http://michael-edwards.org/sc/dw/

     
  • Michael Edwards 11:27 on November 10, 2016 Permalink | Reply
    Tags: MaxMSP, PD, PD Vanilla, Pure Data, qlist,   

    With the demise of the extended version of Pure Data, we’ve lost the seq object for reading/playing MIDI files. I know there are alternative libraries out there but I would like to play a MIDI file in PD for teaching purposes. Sequencing in PD vanilla is really done with the qlist object, which I love, though I do find it a little frustrating that PD can’t handle reading that most standard of files, the MIDI file. On a more positive note, qlist is also available in Max so it’s a really handy object/format in both environments.

    Anyway, I’ve just added a new function (midi2qlist) to slippery chicken that converts from a MIDI file to a qlist text file format. I’ve tried it with a few different MIDI files and it seems to be working fine, but it wouldn’t hurt if other people took a poke. You can get the code via (update-app-src …) or from the svn-latest tag on the svn server.

     
    • Dan 11:42 on November 10, 2016 Permalink | Reply

      What’s the function called?

      • Michael Edwards 18:27 on January 27, 2017 Permalink | Reply

        Sorry i missed this dan as I always love to send you an RTFM: first line of 2nd para: midi2qlist

  • Michael Edwards 15:45 on October 28, 2016 Permalink | Reply
    Tags: graphics, , marks   

    For those of you interested in creating Lilypond scores via slippery chicken that use your own graphics files as marks, see the latest addition to the wiki: http://michael-edwards.org/sc/dw/doku.php?id=examples:graphics_files_as_marks

     
  • Michael Edwards 12:47 on August 27, 2016 Permalink | Reply
    Tags: rthm-seqs,   

    When creating rthm-seq-palettes you can add empty bars with the requisite number of rests but the easiest thing to do is simply leave them blank:

    (5 ((1 ((((3 4) { 7 (28/3) - 28/3 x 6 - })
             ((2 4) (q) g e (e)) ()
             ((5 8)))))))
    

    Note that two empty bars are created there: the first by a simple empty list: (), the second by a change of time signature followed by no rhythms ((5 8))

     
  • Daniel Ross 16:07 on July 7, 2016 Permalink | Reply
    Tags: rhythm   

    I turns out you can make a rhtyhm with value ‘fq, fh, etc. What does the ‘f’ mean?

     
    • Daniel Ross 16:18 on July 7, 2016 Permalink | Reply

      O wait, ignore me

  • Michael Edwards 16:56 on May 23, 2016 Permalink | Reply
    Tags: MIDI   

    Some of you might be interested in the following bit of code to get bass notes to play louder (not at all Fletcher-Munson curve correction but that could be implemented too by using the a-weighting function).

    :force-velocity can either be a fixed number or a function. If the latter then each consecutive event is passed to the function automatically by midi-play. Below we subtract the degree (equivalent to MIDI note number when using the chromatic scale) from 127 to make lower notes louder than higher notes, but we do restrict this to between 70 and 110, so there’ll be a hard cut-off—notes above MIDI 55 will have a velocity of 70 and those < 18 will have 110. Note that we do randomise/humanise the velocities by 10% for a less mechanical feeling (assuming your synth/sampler will distinguish significantly there); also that get-degree will return an average for chords.

    (midi-play +jitterbug+ :force-velocity
               #'(lambda (event)
                   (let* ((d (get-degree event :average t))
                          (v (when d
                               (round
                                (randomise 
                                 (min 110 (max 70 (- 127 d)))
                                 10)))))
                     (format t “~&~a –> ~a” d v)
                     v)))
    
     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel