The DS1881 is capable of full-range voltage input, and has zero-cross detection. Combined with the inclusion of two potentiometers per-package, it is an ideal audio control element.
This was a breakout board made in service of Viam Sonus. It has i2c address selection jumpers which allows up to eight devices to coexist on the same bus.
The driver had a tremendous amount of technical debt cleared away last night. Bus references are no longer hard-coded to "Wire", but are instead passed in as an argument to init(), and is then retained by the class. This costs an extra 4 bytes of resting memory load per-instance, but paves the way for the linux TwoWire abstraction, and makes life generally easier for anyone using the board with (suppose) "Wire1".
Additionally, the driver now supports state serialization and restore. It needs some more testing, but it should allow state restore before or after init(), allowing for "profiles" and easy management of preferred settings, default states, etc. Buffers written this way are versioned so that new driver features can be gracefully migrated in. This API is essentially finished, so it is now safe to code against. The example sketch is updated, tested, committed, and pushed.
Sloppy private boolean class variables were condensed into something more efficient and manageable (int member with flags).