SoundPusher v1.0.0

And we have a release (which is fairly untested, but it works for me). This is first time I’ve released something post-Gatekeeper, so I hope I signed all the things correctly. Also the first time I’ve attempted an installer.

I’ve redone the synchronisation between the input and output thread about 5 times now, let’s hope this variant works out. It’s easy if you don’t care about latency, but trying to get that as low as possible without glitching and staying real-time is quite hard. By default, only AC3 encoding is enabled as DTS support in libavcodec is only experimental. EAC3 seems to distribute packets over multiple SPDIF frames, and thus seems to be a bad choice due to further increased latency.

Diablo 3 sounds quite different with 5.1 sound for example, as the different screen corners map to in front or behind your character (and thus the listener) due to the isometric perspective.

Report any issues or suggestions on the GitHub page. Happy multi-channel audio-ing! 🙂

SoundPusher

I’ve been on a bit of a coding spree during my time off work, and managed to make some progress on my old attempt to provide a virtual 5.1 sound-card that does real-time AC3 encoding to a digital output connection. This time around, I didn’t actually stop a third of the way in and it actually works (and quite well at that — at least on my system — if I may say so).

The code is on GitHub. If you’re interested helping with testing, feel free to get in touch.

For some internals, I reduced the number of components to two, as I eschewed AudioUnits (and thus the separate encoder) altogether. There’s now just the user-space LoopbackAudio driver (AudioServerPlugIn) and the SoundPusher application that reads from the loopback-driver, compresses that and then sends it to the real digital output stream. Latency is reasonable from my experiments, as is CPU usage.

Puzzle Games

I really enjoy puzzle games. Here’s a list of some I’ve enjoyed:

  • 3D
    • Antichamber
    • FRACT OSC
    • Kairo
    • Portal (2)
    • The Talos Principle
  •  Platforming
    • Braid
    • FEZ
    • The Swapper
  • Pure
    • Hexcells (Plus / Infinite)
    • Picross 3D
    • Slitherlink
    • SpaceChem

All of these are well worth buying.

Things I learnt about my Synology NAS

The following points have been observed on my Synology DS414, but I would think that most of them are due to the software stack, and not hardware specific.

  • DDNS updates with FreeDNS require explicit use of username and password, instead of allowing use of the authentication token.
  • DDNS update interval seems to be hardcoded and not configurable (through the DSM UI). I’d prefer the NAS remain hibernating at night.
  • The AFP (Apple Filing Protocol) implementation is based on the old-ish version 2.2.3 of Netatalk. Netatalk requires a separate database to record file to id mappings (managed by cnid_dbd) which is purged by the NAS on every reboot. This database is created as soon as a user connects to the volume via AFP and can take multiple hours to build if the volume contains many files. This makes all other accesses quite slow while the database is rebuilt.
  • Hibernation leaves fans running.
  • If your AFP connections to the NAS reproducibly crash and disconnect (with very flaky behaviour on the Mac, no clean dismount, endless reconnect retries and replays “AFP_VFS afpfs_DoReconnect” when attempting to create a Spotlight index on the NAS volume, a likely cause is problematic extended attributes on files on the volume. These can be removed (after ssh’ing onto the NAS and going to the correct shared folder) with 
    find . -type d -name "@eaDir" -print0 | xargs -0 rm -rf

Gone Home

Gone Home peaked my interest when I saw the trailers and reviews on its release but the asking price seemed a tad high, so I put it on my wish list and forgot about it. A few days back, it popped up in a Humble Store flash-sale and I went for it. In retrospect, I would’ve been happy paying full price, but it’s not as if waiting did any harm.

I really, really enjoyed it, but I can see why people dislike it (or think very little of it — in game terms). It uses many of the usual “tricks” for evoking emotion (great voice acting coupled with musical “riffs”, strong nostalgia, …) but despite knowing these things were used on me, they worked just fine and affected me. (As an aside: I also played The Stanley Parable, which seemed like it tried too hard to be clever, then you realise it actually is cleverer than you gave it credit for, but it remains an entirely left brain experience — sort of the opposite of Gone Home.)

Gone Home is like a puzzle game where you slowly assemble pieces of the story in your head from hints scattered around the house. While the main thrust of the plot is very “in-your-face” (but still well done), you might miss entire side-stories in the puzzle, but they’re there for you if you pay attention (and they make the game better by providing a more complete, internally consistent picture). The developer commentary is also interesting, especially how they’re coming from the “1st person interactive simulation” school of game design (e.g. Looking Glass’ classics, * Shock, Deus Ex, …).

I recommend it highly, but I’m not sure how much of my enjoyment of it stems from 1990 nostalgia of my own teenage years, so buyer beware.

Eizo Foris FS2333 and display sleep with a 2010 iMac

I’ve bought a new secondary monitor to replace / supplement my (ageing but still fine) Dell WFP 2407, and settled on the Eizo Foris FS2333 (requirements were: 1080p native, 23-24″, HDMI and DVI / DisplayPort inputs, IPS panel, preferably matte).

So far I’m very happy with the Eizo, but it has one problem: It would not stay in display sleep (power saving) mode when driving it via the Mini DisplayPort output of my 27″ iMac (Mid 2010). I have it connected via an Apple Mini DisplayPort to DVI adapter. As soon as the iMac sleeps its internal display, the external Eizo would wait for its 15 second signal timeout and then enter sleep mode with backlight off for about a second, then turn the backlight on again and wait for another 15 second signal timeout, enter sleep for 1 second, and so on. This is obviously not very power saving (and probably terrible for the back-light).

It turns out the manual (Page 37) is actually helpful in this case: You can fix this by changing “the exiting method from the power saving mode” via a the following button presses:

  1. Press the POWER button to turn the monitor OFF.
  2. Press the VOL– on the monitor for 5 seconds or more (which then turns on with the setting changed).

I have no idea what this setting actually changes, but the Foris now stays in sleep mode when it should! You can verify whether the setting is active by checking for a “*” suffix in the menu title of “Information” in the Setting menu. Repeat the same procedure above to change the setting back.

There is a second, similarly hidden setting for changing the authentication method for HDMI (which also doesn’t give any information about what it actually changes). The way to set this option is similar to the above, but instead of VOL– use the SIGNAL button; see Page 31 of the manual.