We played in the studio this weekend:
(
youtube link)
(that was fun)
I've been pondering a post about how you should be judged for things. The basic premise is a two-dimensional graph, where the X axis is from worst to best, and the Y axis is "how much it matters". Some initial thoughts:
- Recording music: highly focused on best
- Painting/drawing: highly focused on best
- Live music/performance arts: distributed among the whole graph
- Being nice to people: somewhat focused on worst
Anyway too lazy to actually make these images...
Recordings:Yes, Exactly, Yes! - 1 - Reaching out to a Higher Place! -- [10:19]
Yes, Exactly, Yes! - 2 -- [7:28]
Yes, Exactly, Yes! - 3 -- [3:56]
Yes, Exactly, Yes! - 4 - Private Life -- [5:23]
Yes, Exactly, Yes! - 5 - The River -- [6:21]
Yes, Exactly, Yes! - 6 - Put Behind Me -- [9:19]
Yes, Exactly, Yes! - 7 - May 29 Track 6 (with Peter Riggs) -- [7:17]
Yes, Exactly, Yes! - 8 - Something Odd (with Peter Riggs) -- [5:43]
Yes, Exactly, Yes! - 9 - (death) (with Peter Riggs) -- [7:06]
Yes, Exactly, Yes! - 10 - Dogs Will Rule the World (with Peter Riggs) -- [4:44]
Yes, Exactly, Yes! - 11 - Hindenburg (with Peter Riggs) -- [7:30]
Yes, Exactly, Yes! - 12 - (tbd) (with The Rungs) -- [9:08]
Yes, Exactly, Yes! - 13 - Legacy (with The Rungs) -- [7:18]
2 Comments
Five years ago, in the year of our lord 2014, I wrote about
the difficulties of drawing bitmapped graphics to screen in macOS, and I
revisited that issue again in the winter of 2017.
Now, I bring you what is hopefully the final installment (posted here for usefulness to the internet-at-large).
To recap: drawing bitmapped graphics to screen was relatively fast in macOS 10.6 using the obvious APIs (CoreGraphics/Quartz/etc), and when drawing to non-retina, normal displays in newer macOS versions. Drawing bitmapped graphics to (the now dominating) Retina displays, however, got slow. In the case of a Retina Macbook Pro, it was a little slow. The 5k iMacs display updates are excruciatingly slow when using the classic APIs (due to high pixel count, and expensive conversion to 30-bit colors which these displays support).
The first thing I looked at was the wantsLayer attribute of
NSView:
- If you use "mynsview.wantsLayer = YES", things get better. On normal displays, slightly, on a Retina Macbook Pro's display, quite a bit better. On a 5k iMac's display, maybe slightly better. Not much.
- Using the wantsLayer attribute seems to be supported on 10.6-current.
- For views that use layers, you can no longer [NSView lockFocus] the view and draw into it out of a paint cycle (which makes sense), which prevents us from implementing GetDC()/ReleaseDC() emulation.
After seeing that enabling layers wasn't going to help the 5k iMacs (the ones that needed help the most!), I looked into Metal, which is supported on 10.11+ (provided you have sufficient GPU, which it turns out not all macs that 10.11 supports do). After a few hours of cutting and pasting example code in different combinations and making a huge mess, I did manage to get it to work. I made a very hackish build of the LICE test app, and had some people (who actually have 5k iMacs) test the performance, to see if would improve things.
It did (substantially), so it was followed by a longer process of polishing the mess of a turd into something usable, which is not interesting, though I should note:
- If you want to update the entire view every time, you can configure a CAMetalLayer properly and just shove your bits into the CAMetalLayer's texture and tell it to present and avoid having to create another texture and a render pipeline and all of that nonsense.
- If you want to do partial window updates (partial-invalidates, or a GetDC()-like draw), then you have to create a whole render pipeline, a texture, compile shaders, blah blah blah ugh.
- There's a bunch more work that needs to get done to make it all work (and adapt to changing GPUs, blah blah blah)...
This stuff is now in the "metal" branch of swell in
WDL, and will go to master when it makes sense. This is what is in the latest +dev REAPER builds, and it will end up in 6.0. I'm waiting for it to completely bite me in the ass (little things do keep coming up, hopefully they will be minor).
As one final note, I'd just like to admonish Apple for not doing a reasonable implementation of all of this inside CoreGraphics. The fact that you can't update the 5k iMac's screen via traditional APIs at an even-halfway-decent rate is really stupid.
P.S. It does seem if you want to have your application support Dark Mode, you can't use [NSView lockFocus] anymore either, so if you wish to draw-out-of-context, you'll have to use Metal...
Recordings:Decanted Youth - 1 - Supposed to Be -- [8:14]
Decanted Youth - 2 - (Vaguely Instrumental) Legacy -- [16:11]
Decanted Youth - 3 - (Vaguely) Round and Round -- [5:15]
Decanted Youth - 4 - The Squeeze -- [6:31]
Decanted Youth - 5 -- [3:16]
Decanted Youth - 6 - (mini cover medley) -- [10:03]
Decanted Youth - 7 -- [9:15]
Decanted Youth - 8 -- [8:26]
Decanted Youth - 9 - Trees and Mold -- [9:37]
Decanted Youth - 10 -- [4:53]
Decanted Youth - 11 -- [9:05]
Decanted Youth - 12 -- [7:02]
6 Comments
Decanted Youth played a little after 9pm:
(
youtube link)
And then we grew into
Yes, Exactly, Yes! at around 10:30:
(
youtube link)
(Thank you Red Hook Roxx!)
3 Comments
This was the second marathon road course I've run (after NY) -- while the course was nearly flat, it was challenging because of:
- Lots of people going through many narrow sections,
- Curbs you could step off of wrong if you were not watching your feet (I partially rolled my left ankle in the first mile, rude awakening. Felt it for the next 10 or so)
- The warm weather (mid 60s and sunny, the sections in the shade were pretty pleasant but in the sun you cooked!)
I wasn't prepared for this race in general (signed up for it a week or so ago), and wasn't optimistic about even finishing (the last month had seen no runs over about 5 miles). I positioned myself between the 3:40 and 3:50 pace group balloons, figuring I'd start by running 9s.
For the first half (and after my ankle rollover especially) I just hung out with the majority of the runners I was near, running 9s as planned. I didn't see too much passing, but maybe it was subtle? The first half went in just about 2 hours, and a bit after I stopped to stretch a little, massage my right calf (which had been getting tight on longer runs causing tendonitis in my ankle, which is why I hadn't done any long runs in ages), and my left ankle seemed to be fine, so I kept on. Around mile 20 I realized that a) I was going to finish, and b) I was actually feeling pretty good considering (my HR had been 130-140 or so the whole time), so I decided I'd run some 8s when the crowded course allowed and get some of those newfangled negative splits, which was successful.
Other notes:
- Seeing Al and friends on the course was awesome.
- Swimming in the harbor after was incredibly cold and perfect and 10/10 would do again.
- Aid stations have signs ahead of them that say "OPEN BAR 100 meters ahead" which I find hilarious.
- Aid stations use a ton of plastic cups.
- I carried a backpack with me which turned out to be handy (extra water, ended up having a liter or so -- the aid stations were few and far between and as a result crowded and difficult.. but even if I stopped and had 2 waters + 1 energy drink at each, I would've still finished very dehydrated).
- If you (like me) are not too familiar with Copenhagen, you don't really notice the loop in the course, because by the time the second time comes around you're in full "make this shit happen" mode.
- The dry-bag backpack that they gave everybody is a fantastic perk, especially given how affordable this race is (compared to NY at least!).
- Copenhagen is really lovely. <3
Video from my sunglasses:
(youtube link)
1 Comment

(for notvampires.com. spent more time playing with it in gimp than actually drawing it)
6 Comments
HAPPY NEW YEAR, READERS!
My super8 live looping setup got put away for the Red Hook Open Studios shows in November, and I forgot about it. Then I went out of town for a bit (finding some trails to run and warmer weather). Today, I set it back up. Oh, how I missed you, super8 and instruments.
(
youtube link)
Recordings:
live solo improv: super8
Comment...
I've been recording 1-3 hour (occasionally longer) sessions of music and posting them to the
internet as bigass .mp3 files for about 15 years now. As the quality of the music has steadily
icnreased, I've also been looking at ways of making it more accessible (very few people can
commit to listening to 2 hours of a single mp3). So after the last session, I thought it would
be nice to mix it into individual tracks, naming them as I edit the session.
What I determined was that individual tracks were great! I thought about it some more and
decided I could have both, generating the bigass mp3 files and indexing them (much as
brainal.org does, but more intelligently. And then I
realized I could parse the .RPP (REAPER project file) projects from the last 12 years or so,
and generate a list of songs (from places where it was clear everything was edited) for each
session. It doesn't work totally reliably, as there are plenty of places where two or three
songs flow into eachother. But that's OK.
Anyway, so you might have noticed on this page the full jam links have been replaced with
individual song/supersong links. We've been going through naming them as appropriate.
The other nice thing about this is that we can pull these feeds into our band websites...
13 Comments
This is from last Friday night:
(
youtube link)
Comment...
OK so this has been a lot of fun. Two things -- one: I'm really happy with how this song came out a few weeks ago. It's about 2/3 improvised but a theme we've played a few times:
(
youtube link)
Second, we had a very enjoyable session Friday night:
(
youtube link)
Recordings:i drank what
3 Comments