How do I Integrate SingAccord into my app?#1 Contact us to arrange licensing terms. There's two licenses: a) license the patent-pending notation itself, b) license the pre-built library. You can do a and b, or just a if you want to build it all yourself.
#2 If you picked option a & b, then you write a shim in your UI framework to call into libSingAccord, which is in development. |
libSingAccordTo ease integration and promote uniformity, SingAccord can be rendered with a common library, designed to run just about anywhere and minimize the work you need to do. It's written in C++.... wait before you close the browser.. I know. I hate C++, too, with a passion. BUT, in terms of capable languages that can compile and run anywhere, almost every major platform and framework has shims that can call into C++, even the web.
|
Platform ShimsApple: Objective-C has a mode called Objective-C++ where you can write C++ directly in Obj-c files. Then Swift calls into Obj-C.
Microsoft: C# can call into C++ using C++/CLI. Android: Java has the Java Native Interface (JNI) which can call C++. Kotlin can then call into the Java. Web: C++ can be compiled into WebAssembly and run in all major browsers. This is actually a great option, since the *.singaccordsong file format uses the JSON metaformat, and libSingAccord can output SVG. Scripting: Python can call into C++ using PyBind11 or CPython, or Scala can call through Java with the JNI. |
RenderinglibSingAccord needs measurements of text in your selected font, so you give it a lambda which it calls to ask you to measure the text. Just use your existing UI framework, and it's that simple.
Then libSingAccord completes all the rest of the layout geometry calculation, and returns these layout decisions as semantically-structured geometry. You then have two choices: i. Use the included SVG renderer to convert the notation into SVG, either standalone or using classes for CSS styling. ii. Use the structured geometry to do your own UI rendering. |
INputs*.singaccordsong files are JSON, in UTF-8, so all modern platforms can open and serialize/deserialize these easily.
libSingAccord will also need details about the screen, such as width, and font such as line thickness and cap height. libSingAccord runs the layout pass, and you just provide text measurements with a lambda. |
outputThere are two kinds of outputs.
SVG - with options to make it suitable for either standalone files or embedded in a browser body, and for either using literal styles or relying on CSS. While only Android and the Web natively support drawing SVG, 3rd party frameworks exist for drawing in the other platforms. Or just using the layout geometry yourself to do the drawing yourself using your own UI framework. |
Add your special sauceOn top of this, you add your own magic. Animations, live changes, editors, streaming, textures, backgrounds, synthesis, synced tracks, compositors, feedback, etc...
|
StatusPortions of libSingAccord have been built to prove out critical abilities, so if this is the path you'd like to take, contact us to arrange a demo or schedule for integrating it into your app. We'll also be happy to help work on how your shims will call into the library. Since the library is distributed a source, we can't post it for evaluation until contracts are signed, but we can give samples of the interfaces.
|