Sratom 0.6.0

sratom 0.6.0 has been released. Sratom is a library for serialising LV2 atoms to/from RDF, particularly the Turtle syntax. For more information, see http://drobilla.net/software/sratom.

Changes:

  • Add sratom_set_env() for setting prefixes
  • Fix padding of constructed vectors (thanks Hanspeter Portner)
  • Support round-trip serialisation of relative paths
  • Support sequences with beat time stamps
  • Fix warnings when building with ISO C++ compilers
  • Upgrade to waf 1.8.14

Lilv 0.24.0

lilv 0.24.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 new hand-crafted Pythonic bindings with full test coverage
  • Add lv2apply utility for applying plugins to audio files
  • Add lilv_world_get_symbol()
  • Add lilv_state_set_metadata() for adding state banks/comments/etc (based on patch from Hanspeter Portner)
  • Fix crash when state contains non-POD properties
  • Fix crash when NULL predicate is passed to lilv_world_find_nodes()
  • Fix state file versioning
  • Unload contained resources when bundle is unloaded
  • Do not instantiate plugin when data fails to parse
  • Support re-loading plugins
  • Replace bundles if bundle with newer plugin version is loaded (based on patch from Robin Gareus)
  • Fix loading dyn-manifest from bundles with spaces in their path
  • Check lv2:binary predicate for UIs
  • Add LILV_URI_ATOM_PORT and LILV_URI_CV_PORT defines
  • Fix documentation installation
  • Fix outdated comment references to lilv_uri_to_path()

Sord 0.16.0

sord 0.16.0 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 construction and comparison of URIs with UTF-8 characters
  • Fix documentation generation
  • Return error from sord_inserter_write_statement() if a node can not be written (e.g. undefined prefix)
  • Make sord_node_get_counted return byte count, and clarify documentation
  • Safely return NULL from sord_iter_get() for end iterators
  • Add sord_node_get_string_measured() to get both byte and character counts
  • sord_validate: Do proper numeric comparison for propery bounds checking
  • sord_validate: Tolerate xsd:decimal literals for double and float properties if literals match pattern

Serd 0.24.0

serd 0.24.0 has been released. Serd is a lightweight C library for RDF syntax which supports reading and writing Turtle and NTriples. For more information, see http://drobilla.net/software/serd.

Changes:

  • Add serd_node_new_relative_uri()
  • Fix construction and comparison of URIs with UTF-8 characters
  • Report I/O errors with message and return appropriate status code
  • Report missing statement separator errors
  • Fix potential out of bounds read
  • Fix unaligned memory access, undefined behaviour which breaks on ARM
  • Fix documentation generation
  • Update serdi man page

Git migration

I have finally migrated all of my software to git. This was not a very fun process due to the nested nature of my "drobillad" repository, but now all projects live in their own git repositories with history and tags from SVN preserved.

It is still possible to build all my audio software in one step, the top-level repository http://git.drobilla.net/drobillad.git is now a skeleton with git submodules for each project. Anyone using SVN should switch immediately, the SVN repositories will remain in their current state for the foreseeable future but all development activity will move to git.

All the repositories are available in cgit, but changes and tickets and so on are in Trac as always. Happy hacking.


Lilv 0.22.0

lilv 0.22.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:

  • Fix loading files with spaces in their path
  • Add lilv_file_uri_parse() for correct URI to path conversion
  • Add lilv_node_get_path() for convenient file URI path access
  • Add lilv_state_emit_port_values() for special port value handling
  • Add lilv_state_get_uri()
  • Add lilv_state_delete() for deleting user saved presets
  • Add lilv_free() for systems picky about such things
  • Fix lilv_world_ask() to work with wildcards
  • Fix creation of duplicate manifest entries when saving state
  • Fix bindings for Python 3
  • Load discovered owl ontologies as specifications
  • Expose lilv_world_load_specifications() and lilv_world_load_plugin_classes()
  • Tolerate passing NULL to lilv_state_restore()
  • Preserve absolute paths in state if no link directory is given
  • Fix a few minor/unlikely memory errors
  • Configure based on compiler target OS for cross-compilation
  • Fix lilv_realpath() on pre-POSIX-2008 systems
  • Fix directory walking on some systems (thanks Matt Fischer)
  • Windows fixes (thanks John Emmas)
  • Minor documentation improvements
  • Upgrade to waf 1.8.14

Sord 0.14.0

sord 0.14.0 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:

  • Reduce memory usage and increase performance with a better data structure
  • Add sord_erase() for erasing statements via an iterator
  • Fix bugs with stores that contain both graphs and default graph statements
  • Fix crash caused by multiple deletion of datatype nodes
  • Fix compilation on compilers that do not support -pthread flag
  • Fix minor memory leak in sordi
  • Fix using sordi with stdin
  • Show sordi errors in standard format
  • sord_validate: More extensive validation, including cardinality, PlainLiteral, and someValuesFrom restrictions.
  • This release does not break the ABI, but the semantics of iterators has changed: any modification to a model invalidates iterators on that model
  • Improve test coverage
  • Upgrade to waf 1.8.14

Serd 0.22.0

serd 0.22.0 has been released. Serd is a lightweight C library for RDF syntax which supports reading and writing Turtle and NTriples. For more information, see http://drobilla.net/software/serd.

Changes:

  • Remove dependence on fmax() to avoid portability issues
  • Fix serd_reader_read_file() for URIs with escaped characters (spaces)
  • Add serd_reader_set_strict() and -l (lax) option to serdi to tolerate parsing URIs with escaped characters
  • Fix reading statements ending with a blank then dot with no space
  • Fix clash resolution when a blank node ID prefix is set
  • Fix serializing fractional decimals that would round up
  • Add support for Turtle named inline nodes extension
  • Report errors for invalid IRI characters and missing terminators
  • Show serdi errors in standard format
  • Fix warnings when building with ISO C++ compilers
  • Upgrade to waf 1.8.14

LV2 Plugin Control Units in Ardour

LV2 has had a "units" extension since the beginning, which allows plugins to specify units like Hz or dB for their controls. To date this information has not been used very widely by hosts, so I've done some work in Ardour to use this information for better UI generation and intelligent plugin control.

Units can specify a format string which describes how to print a value in that unit. This is now used to draw the text on control sliders:

An Ardour control dialog for an LV2 plugin.

The same controls are used in automation lane headers. If the control is a note number, then right-clicking will present a menu with an option to pop up a note selector dialog where the value can be chosen on a piano keyboard:

The select note menu on a note number port.

The Ardour note selector dialog.

Similarly, numeric frequency controls have a context menu which can set the value to a specific number of beats in the current tempo, if the frequency range is low:

Setting a low frequency port in beats.

If the frequency range is high, then numeric frequency ports can be set with the note selector dialog just like note numbers:

Setting an audible frequency port by note.

In the future, it would be nice to have this idea applied more extensively so automation lanes can "pretend" a port is in the desired unit, for example allowing the user to automate an LFO frequency in beats, or a cutoff frequency in notes. Until then, being able to at least easily set controls to musically sensible values makes many production tasks easier, particularly in electronic music where it's often desirable to set plugin controls based on key or tempo.

Up next is setting time ports based on tempo, for cases like setting delay lines to a certain number of beats, but many plugins are missing the unit information required to make this possible. Hopefully better and more widespread host support will provide some incentive for plugin authors to specify the units of their ports. It is very simple to do so, see the LV2 units documentation for examples.


Jalv 1.4.6

jalv 1.4.6 has been released. Jalv is a simple but fully featured LV2 host for Jack which exposes plugin ports to Jack, essentially making any LV2 plugin function as a Jack application. For more information, see http://drobilla.net/software/jalv.

Changes:

  • Show newly saved presets in the preset menu
  • Generate Qt moc nonsense at build time for broader compatibility
  • Update for latest LV2 Atom Object simplifications
  • Set port pretty names via new Jack metadata API
  • Add support for data-access extension (based on patch by Filipe Coelho)
  • Support new UI show/hide interface in console version
  • Add option to print control output changes to stdout
  • Support saving the same preset several times
  • Update man pages and console jalv help output for new options
  • Upgrade to waf 1.7.16

Page 1 / 11 »