webmscore
repository·webmscore·Indexed 41 days ago
https://github.com/librescore/webmscoreA WebAssembly port of MuseScore's core library (libmscore) version 1.2.1. It enables score parsing, music metadata extraction, and the generation of audio, MIDI, MusicXML, SVG, PNG, and PDF sheets directly in browsers or Node.js.
What's inside webmscore
- FluidSynth is a cross-platform, real-time software synthesizer based on the Soundfont 2 specification. It functions as a software analogue of a MIDI synthesizer, generating audio by reading and handling MIDI events from MIDI input devices using a SoundFont. It is also capable of playing MIDI files.
Overview of MuseScore Fonts
webmscoreThe
fontsdirectory contains the fonts used internally by MuseScore and the source files used to generate them. Sources are provided in the.sfdformat, which is the native format for FontForge.Font Maintenance Status
When working with these fonts, note the following maintenance rules:
- Maintained by MuseScore project:
edwin,gootville,leland,mscore,musejazz. - Not maintained by MuseScore (DO NOT EDIT):
bravura,petaluma,finalemaestro,finalebroadway,smufl. - Community-driven:
campania(Roman numeral analysis) is open source and encourages community contributions at its main site.
If an
.sfdfile is present in a directory, it indicates the font is maintained or customized by the MuseScore community.- Maintained by MuseScore project:
Overview of Libopusenc
webmscoreLibopusenc is a high-level API library designed for encoding audio into the.opusformat. It is built as a wrapper aroundlibopusto simplify the encoding process. Note that the library is considered to be in early development.Use UTF8-CPP for portable UTF-8 handling in C++
webmscoreUTF8-CPP is a lightweight, generic, and portable C++ library designed to handle UTF-8 encoded Unicode strings. It is compatible with C++98 and provides enhanced support for C++11 and later standards. The library works with standard STL algorithms and iterators, making it easy to integrate with various string classes.
#include "utf8.h" // Example of basic usage pattern // The library provides functions in the `utf8` namespace // that work with iterators or C++11 string types.GoogleTest features and capabilities
webmscoreGoogleTest provides a comprehensive suite of testing tools for C++ developers, including:
- Test Discovery: Automatically finds tests in your code.
- Assertions: A rich set of built-in assertions and the ability to define custom ones.
- Failure Modes: Support for both fatal and non-fatal failures.
- Parameterized Testing: Support for both value-parameterized and type-parameterized tests.
- Death Tests: Ability to test that a piece of code causes a program to crash/exit.
- Reporting: Generation of XML test reports for integration with CI/CD pipelines.
- Execution Options: Various options for controlling how tests are run.
About the Edwin font family
webmscoreThe Edwin font family (including Roman, Italic, Bold, and Bold Italic) is a font set used for music notation. Version 0.54 is provided in Type 1 and OpenType-CFF formats. It is a renamed and modified version of the C059 font family from the Core 35 set, specifically adapted for the requirements of MuseScore notation software.Features of the Simple Profiler
webmscoreThe
haw_profilerprovides the following capabilities:- Embedded Profiling: Can run anywhere and anytime within your application.
- Duration Measurement: Supports measuring both individual function durations and specific execution steps.
- Low Overhead: Designed to have very small performance impact.
- Flexible Control: Can be enabled or disabled via compile-time settings or runtime logic.
- Thread Safety: Implemented to be thread-safe without the use of mutexes.
- Customizable Output: Supports a custom data printer for reporting results.
About Leland music fonts
webmscoreLeland (and Leland Text) Version 0.77 are OpenType-CFF music fonts distributed under the SIL Open Font License (OFL), Version 1.1.
Key characteristics:
- SMuFL Compliance: The fonts are compliant with the Standard Music Font Layout (SMuFL), which maps musical symbols to the Unicode Private Use Area.
- Compatibility: Works with MuseScore 3.6+ and other SMuFL-compatible software. It does not work in Sibelius or Finale versions prior to v27.
What is the Bravura music font?
webmscoreBravura is an OpenType music font used for music notation. It serves as the reference font for the Standard Music Font Layout (SMuFL), which is a standard for mapping musical symbols into the Unicode Private Use Area. This ensures that musical symbols are format-independent and consistent across different software.Enable multi-threaded tests in GoogleTest
webmscoreGoogleTest is thread-safe if the
pthreadlibrary is available. You can verify this in your code by checking theGTEST_IS_THREADSAFEmacro (it is defined as1if thread-safe).If your environment does not automatically detect
pthread, you can force the setting via CMake flags:-DGTEST_HAS_PTHREAD=1(Enable)-DGTEST_HAS_PTHREAD=0(Disable)
Warning: If you use your own build script (not CMake), you must manually add the necessary pthread flags to your compiler and linker.
Understand Note Pitch Values
webmscoreIn webmscore, note pitches are represented using MIDI pitch values. This value indicates the absolute height of the note regardless of its enharmonic spelling (e.g., whether it is written as C♯ or D♭).
To access this value, use the
Ms::PluginAPI::Note::pitchproperty.If you need to retrieve the specific enharmonic spelling used for a note (the musical name), use the
Tonal Pitch Classinstead of the pitch value.Understand the Standard Music Font Layout (SMuFL) specification
webmscoreSMuFL is a specification that provides a standardized way to map musical symbols to the Private Use Area in Unicode’s Basic Multilingual Plane. This allows for a single, format-independent font mapping that can be used across different music notation software.
If you are working with musical notation in
webmscoreor other software, SMuFL ensures that musical glyphs are consistently mapped and rendered regardless of the specific font format used.