ThinkMeta Software releases part of its own work as open-source libraries and tools for .NET and C++.

ThinkMeta.Devices.Bluetooth

A .NET library for discovering, connecting to and controlling Bluetooth Low Energy fitness equipment and heart-rate sensors. It implements the Bluetooth SIG Fitness Machine Service (FTMS) – the open GATT profile that treadmills, indoor bikes, rowers, cross trainers and stair climbers use to report live data (speed, incline, cadence, power, distance …) and to accept remote-control commands (set speed, incline or resistance; start and stop). Heart-rate monitors are supported through the standard Heart Rate GATT profile.

The library is split into platform-neutral packages – shared scanners, data models and byte-level parsers – with concrete implementations for Windows (native WinRT BLE) and .NET MAUI. The parsers can also decode raw GATT characteristic bytes without a device connection. A native Android implementation is in progress. Requires .NET 10.

ThinkMeta.Music.Notation.Smufl

Reader and code generator for SMuFL (Standard Music Font Layout) – the W3C Music Notation Community Group specification that maps the several thousand symbols of Western music notation onto Unicode Private Use Area code points, so a single font such as Bravura covers clefs, noteheads, accidentals, articulations and more.

The metadata package parses SMuFL's classes.json, glyphnames.json and ranges.json as well as per-font metadata (glyph bounding boxes, anchor points, engraving defaults). A companion package exposes the same data as generated .NET types – glyph enums, descriptions, code points and alternates – and a separate reader loads SMuFL SVG fonts. A basis for score renderers, font tooling and notation editors on .NET.

ThinkMeta.CodeAnalysis

A Roslyn analyzer package for C# that flags a small set of high-signal issues and fixes them automatically in the IDE or on build (targets .NET Standard 2.0, so it works across project types):

  • TM0001== null / != null rewritten to is null / is not null, aware of expression trees, LINQ query syntax and Razor-generated code.
  • TM0002 – a Clone() method that forgets to copy a settable property; the code fix inserts every missing assignment in one edit.
  • TM0003 – a Clone() method that shallow-copies a reference-type property, catching the silent aliasing bug.

A companion Annotations package provides [CloneIgnore] to exclude specific properties per method or per assembly.

… and many more at github.com/ThinkMeta-com.

An unhandled error has occurred. Reload