Posts

Ganv 1.4.2

Ganv 1.4.2 has been released. Ganv is an interactive Gtk canvas widget for graph-based interfaces (patchers, modular synthesizers, finite state automata, interactive graphs, etc). For more information, see http://drobilla.net/software/ganv.

Changes:

  • Fix bug where edges would not update when nodes are moved after the canvas is cleared (fix stuck connections in Patchage after refresh).
  • Upgrade to waf 1.7.16

Lilv 0.20.0

Lilv 0.20.0 has been released. Lilv is a C library to make the use of LV2 plugins as simple as possible for applications. For more information, see http://drobilla.net/software/lilv.

Changes:

  • Add convenient lilv_new_file_uri for creating file URIs
  • Add lilv_world_unload_bundle() and lilv_world_unload_resource()
  • Call lv2_lib_descriptor separately for different bundle paths (fix loading several dynamic plugins like Ingen at once)
  • Don't load files multiple times if they are listed as rdfs:seeAlso for several plugins
  • Fix issues with lilv_plugin_get_author_name and friends (thanks Filipe Coelho)
  • Fix several minor memory leaks
  • Fix use of lv2info -m and -p options to write plugin data (useful for porting plugins bridges with NASPRO)
  • Improve test coverage
  • Improved/working lv2_apply.py to apply plugin to a .wav (thanks Joe Button)
  • Tolerate calling lilv_node_as_uri or lilv_node_as_blank on NULL
  • Upgrade to waf 1.7.16

Suil 0.8.2

Suil 0.8.2 has been released. Suil is a library for loading and wrapping LV2 plugin UIs. For more information, see http://drobilla.net/software/suil.

Changes:

  • Add configure options to disable all Gtk or Qt support
  • Fix embedding several Qt UIs in Gtk
  • Upgrade to waf 1.7.16

Sratom 0.4.6

Sratom 0.4.6 has been released. Sratom is a small library for serialising LV2 atoms to and from RDF, for converting between binary and text or storing in a model. For more information, see http://drobilla.net/software/sratom.

Changes:

  • Don't set eg prefix in sratom_to_turtle
  • Update for latest LV2 Atom Object simplification
  • Upgrade to waf 1.7.16

Sord 0.12.2

Sord 0.12.2 has been released. Sord is a lightweight C library for storing RDF statements in memory. For more information, see http://drobilla.net/software/sord.

Changes:

  • Fix iteration over an entire graph (* * * graph)
  • Update to waf 1.7.16
  • sordmm.hpp: Remove unused members

Serd 0.20.0

Serd 0.20.0 has been released. Serd is a lightweight C library for RDF syntax which supports reading and writing [Turtle][], [TriG][], [NTriples][], and [NQuads][]. Serd is suitable for performance-critical or resource-limited applications, such as serialising very large data sets or embedded systems.

Changes:

  • Add -lm to pkg-config libs
  • Correctly handle posix_memalign failure
  • Don't write xsd:decimal literals to Turtle bare if they would not be read back with the same type
  • Fix const-correctness violation for reader input string
  • Fix possible crash in serd_writer_end_anon() when writing invalid lists
  • Generate blank names like :b1 and :B2 not :genid1 :docid2
  • Support new RDF 1.1 Turtle
  • Update to waf 1.7.14

Patchage 1.0.0

Patchage 1.0.0 has been released. Patchage is a modular patch bay for Jack and ALSA based audio/MIDI systems.

Changes:

  • Allow removing connections by selecting their handle and pressing delete
  • Fix font configuration on OSX
  • Integrate with Mac menu bar on OSX
  • Make port colours configurable
  • Remove LASH support and simplify UI
  • Remove Raul dependency
  • Support for DOT export for rendering with GraphViz
  • Support port pretty names via new Jack metadata API
  • Switch from FlowCanvas to Ganv (much improved looks and performance)
  • Use Mac style key bindings on OSX
  • Use XDG_CONFIG_HOME instead of ~/.patchagerc

Ganv 1.4.0

Ganv 1.4.0 has been released. Ganv is an interactive Gtk canvas widget for graph-based interfaces (patchers, modular synthesizers, finite state automata, interactive graphs, etc). For more information, see http://drobilla.net/software/ganv.

Changes:

  • Add Connection::set_curved()
  • Add ability to select connections by their handles, either individually or in groups with rect select.
  • Add ability to select connections directly
  • Add font size API
  • Adjust padding and placement to precisely fit text
  • Begin using library and pkg-config names suitable for parallel installation. This version of flowcanvas is flowcanvas-1 and is NOT compatible with previous versions
  • Clean up API and improve documentation.
  • Clean up API/ABI by hiding private implementations.
  • Dramatically increase performance by rendering text manually rather than using the truly awful Gnome::Canvas::Text.
  • Fix lingering handle when deleting connections
  • Further slight improvements in memory consumption and alignment.
  • Improve scalability to graphs with many connections (eliminate linear connection searches and redundant connection collections).
  • Remove use of boost smart pointers. Adding and removing from containers (e.g. Canvas, Module) is now done automatically.
  • Size empty ports in font based units so they look right when zoomed
  • Switch to GPLv3+
  • Use system theme font size by default

Disabling the obnoxious lights on the Evoluent Vertical Mouse 4

I've been a fan of the Vertical Mouse for a while now, since the extreme wrist pronation of a conventional horizontal mouse aggravates my wrist. Unfortunately, however, Evoluent saw fit to put a blindingly bright blue lit-up logo on the back of the latest version (much to the delight of absolutely nobody in their target market). This is particularly problematic if you work late or sleep in the same room as your computer (blue light messes with your sleep cycle, hence tools like Redshift).

The offending logo (unlit).

After unplugging my mouse every night for so long, I finally decided to tear the thing apart and see how easy it would be to disable those lights. It turns out this is very easy, you don't even need to desolder anything. There are four screw holes hidden under the label and front pad on the bottom. You don't need to remove the other two pads like I did in the process of figuring this out.

Screw hole locations.

Remove all four screws and the top should come off easily. There are ribbon cables connecting the buttons, though, so don't pull too hard. Now you can see the battery of LEDS.

The seven (!) offending LEDs. When Evoluent shoots for annoying they go full out.

Luckily, this pointless board is connected with a header, so you can simply unplug it, and reassemble the mouse.

Disconnected LED board connector.

Much better.

Edit 2020-08-16: Several people have let me know that there is a less destructive way to do this. Apparently, if you hold the pointer speed "-" button while plugging the mouse in, the light will be disabled. I am not sure if this works for all revisions, though, and have not tested it myself.

Pretty names in Patchage via Jack Metadata

The much-awaited (by me, at least) Jack metadata API has arrived. This will allow us to easily achieve many new things with minimal/nonexistent API friction. One of the simplest and most obvious is pretty names for Jack clients and ports, so I've chosen this as the first thing to tackle (as part of a drive to get Patchage polished up for a much overdue release).

Unfortunately, as far as I can tell, there is a chicken & egg scenario here since nothing is setting this metadata yet. So, I've made Jalv and Ingen both set pretty names for their ports. In the case of Jalv, the "pretty name" is the label given in the plugin data (distinct from the LV2 "symbol" which is restricted and unique).

Firing up Jalv with the Tal Dub III plugin (LV2 port courtesy KXStudio), we can see the port symbols, which are a bit awkward for end users with their prefixes and underscores. Conflating strong identifiers with human-readable labels is a serious design error I learned of the hard way, but that's a discussion for another time...

Enable "Human Names" in the view menu, or press C-h, and voilĂ , we see the pretty names set in Jack metadata (if present) instead.

Tal Dub III in Jalv as shown by Patchage with human names off.

Tal Dub III in Jalv as shown by Patchage with human names enabled.

The metadata API is very simple to use for ports, though there seems to be a hole in the API which makes it difficult to get the UUID for your client to set metadata (I want a simple jack_client_uuid, like jack_port_uuid, but it seems you have to get a string UUID and parse it to a jack_uuid_t, clunky enough that I just didn't bother). In any case, I am happy to see a low-friction mechanism in Jack which apps can use to share metadata towards making a better user experience.

It will be interesting to see what sort of information proves useful and becomes established/standard. For those of us of a mad scientist bent who live in a nest of patch cables, a CV tag seems like another obvious simple step, but for everyone, a big step is finally having meaningful port grouping and channel roles. I have always liked to joke that Jack (like LADSPA) doesn't really even do stereo, but with metadata, we can mark up stereo, 5.1, Ambisonics, etc., and other clients will be able to make sense of the channel assignments without resorting to dirty kludges based on guessing from names. All without changing the ABI one bit. Good stuff.

« Page 11 / 20 »