ThinkMeta Software veröffentlicht einen Teil der eigenen Arbeit als quelloffene
Bibliotheken und Werkzeuge für .NET und C++.
ThinkMeta.Devices.Bluetooth
Eine .NET-Bibliothek zum Auffinden, Verbinden und Steuern von
Bluetooth-Low-Energy-Fitnessgeräten und Herzfrequenz-Sensoren. Sie
implementiert den Fitness Machine Service (FTMS) der
Bluetooth SIG – das offene GATT-Profil, über das Laufbänder,
Indoor-Bikes, Ruder-, Crosstrainer- und Steppergeräte Live-Daten
(Geschwindigkeit, Steigung, Trittfrequenz, Leistung,
Distanz …) melden und Steuerbefehle (Geschwindigkeit, Steigung
oder Widerstand setzen; Start und Stopp) entgegennehmen. Herzfrequenzgeräte
werden über das Standard-Heart-Rate-GATT-Profil unterstützt.
Die Bibliothek ist in plattformneutrale Pakete aufgeteilt –
gemeinsame Scanner, Datenmodelle und Byte-Parser – mit konkreten
Implementierungen für Windows (natives WinRT-BLE) und
.NET MAUI. Die Parser können rohe
GATT-Characteristic-Bytes auch ohne Geräteverbindung dekodieren. Eine
native Android-Implementierung ist in Arbeit. Benötigt
.NET 10.
GitHub
ThinkMeta.Music.Notation.Smufl
Reader und Code-Generator für SMuFL (Standard Music Font
Layout) – die Spezifikation der W3C Music Notation Community Group,
die die mehreren tausend Symbole der westlichen Notenschrift auf
Unicode-Codepunkte im Private Use Area abbildet, sodass eine einzige
Schrift wie Bravura Schlüssel, Notenköpfe, Vorzeichen, Artikulationen und
mehr abdeckt.
Das Metadaten-Paket liest SMuFLs classes.json,
glyphnames.json und ranges.json sowie
schriftspezifische Metadaten (Glyph-Begrenzungsrahmen, Ankerpunkte,
Stich-Vorgaben). Ein Begleitpaket stellt dieselben Daten als generierte
.NET-Typen bereit – Glyph-Enums, Beschreibungen, Codepunkte und
Alternativen – und ein separater Reader lädt SMuFL-SVG-Schriften.
Grundlage für Notensatz-Renderer, Font-Werkzeuge und Notationseditoren auf
.NET-Basis.
GitHub
ThinkMeta.CodeAnalysis
Ein Roslyn-Analyzer-Paket für C#, das eine kleine,
aussagekräftige Menge von Problemen meldet und in der IDE oder beim Build
automatisch behebt (Ziel .NET Standard 2.0, projektübergreifend
einsetzbar):
- TM0001 –
== null /
!= null wird zu is null /
is not null umgeschrieben; berücksichtigt Expression
Trees, LINQ-Query-Syntax und Razor-generierten Code.
- TM0002 – eine
Clone()-Methode, die
eine setzbare Eigenschaft vergisst; der Code-Fix ergänzt alle
fehlenden Zuweisungen in einem Schritt.
- TM0003 – eine
Clone()-Methode, die
eine Referenztyp-Eigenschaft flach kopiert, und deckt so den stillen
Aliasing-Fehler auf.
Ein Begleitpaket Annotations bietet [CloneIgnore],
um einzelne Eigenschaften pro Methode oder pro Assembly auszunehmen.
GitHub