Skip to content

Latest commit

 

History

History
428 lines (237 loc) · 9.1 KB

CHANGELOG.md

File metadata and controls

428 lines (237 loc) · 9.1 KB

Changelog

All notable changes to this project will be documented in this file.

Unreleased

To be added

  • Stream audio file exporting
  • Python API
  • Pure WebAssembly API

1.2.1 - 2023-01-23

Added

  • Export setLogLevel on the WebMscore web worker

Fixed

  • Static class fields cause error in babel-transpiled js

1.2.0 - 2023-01-23

Added

  • Throw WasmError when webmscore encounters score processing error

Changed

  • The log level can now be set before WebMscore.load(...), overrides the default behaviour which turns off logs in WebMscore.load(...).

Fixed

  • For score files created in MuseScore versions older than v3.6.0, instruments no longer all sound like piano in the exported audio.

1.1.0 - 2023-01-15

Added

  • Allowing to set log level
const score = await WebMscore.load(...) // set log level to `Off` by default
await WebMscore.setLogLevel(2)          // set log level to `Debug`

Changed

  • Logs are turned off by default

  • Incorporate ccache in the build script, could significantly speed up recompilation if ccache is installed

1.0.0 - 2023-01-13

BREAKING CHANGE

  • webmscore is now built based on MuseScore 4.0!

Changed

  • Although there's no public API change comparing to v0.22.0, there might be some unintended internal changes or incompatibilities.

0.22.0 - 2022-12-31

Changed

  • Build over the offscreen Qt Platform Plugin so that the wasm binary size has been significantly reduced
    • webmscore.lib.wasm:
      10.47 MB -> 7.42 MB
    • webmscore.lib.mem.wasm:
      4.97 MB -> 3.92 MB

0.21.0 - 2020-03-02

BREAKING CHANGE

SynthRes.chunk = Float32Array[ channelA 512 frames, channelB 512 frames ]

0.20.4 - 2020-03-01

Fixed

  • Webpack import

0.20.2 - 2021-02-08

Changed

  • Improve synthAudioBatch performance

0.20.0 - 2021-02-08

Added

  • Synthesize audio frames in bulk (n * 512 frames)
const fn = await score.synthAudioBatch(starttime, batchSize)
for (...) {
    const resArr = await fn(cancel?)
}

0.19.2 - 2021-01-25

Changed

  • Emit detailed debug info (function names) in a separate .symbols file

This saves 2.45 MB (23%) uncompressed, 0.42 MB (13%) brotli'd for the generated wasm file, compared to v0.19.1.

How to look up function names in the .symbols file?
RuntimeError: function signature mismatch
    at wasm-function[1078]:0x315ac
    at wasm-function[28467]:0x99f067
    ...

webmscore.lib.symbols

1078:Ms::Element::abbox() const
...
28467:Ms::savePng(Ms::Score*, QIODevice*, int, bool, bool)

0.19.1 - 2021-01-25

Added

  • Support loading Guitar Pro files into webmscore
await WebMscore.load(format: 'gtp' | 'gp3' | 'gp4' | 'gp5' | 'gpx' | 'gp' | 'ptb', data, fonts, doLayout)

Changed

  • Generate detailed debug info
// Before
RuntimeError: function signature mismatch
    at <anonymous>:wasm-function[1117]:0x359ec
    at <anonymous>:wasm-function[28469]:0x99e040
    ...

// After
RuntimeError: function signature mismatch
    at Ms::Element::abbox() const (wasm-function[1117]:0x359ec)
    at Ms::savePng(Ms::Score*, QIODevice*, int, bool, bool) (wasm-function[28469]:0x99e040)
    ...

0.19.0 - 2021-01-23

Added

  • Support loading MusicXML (musicxml or compressed mxl) and MIDI files into webmscore
await WebMscore.load(format: 'musicxml' | 'mxl' | 'midi', data, fonts, doLayout)

0.18.0 - 2021-01-20

Added

  • Support MSCZ/MSCX internal file format version 3.02

Changed

0.17.1 - 2021-01-12

Changed

  • The fonts parameter in WebMscore.load can now be passed as type of Promisable<Uint8Array[]>.

This allows webmscore to initiate fonts and wasm assets simultaneously.

0.17.0 - 2021-01-12

Changed

  • For Webpack build, asset files (webmscore.lib.*) will be served via the jsDelivr CDN by default. (importing webmscore resolves to webmscore/webmscore.cdn.mjs)
    So those files will no longer appear in your dist directory, and the workaround is no longer needed.

0.16.0 - 2021-01-05

Added

  • Support raw PCM audio data export (for future internal use)

Changed

  • The original error stack of worker errors is reported in the property originalStack
  • The workaround for Webpack 4 is no longer enabled by default. To enable it, run cd node_modules/webmscore && npm run install:webpack after package installation.

Removed

  • The legacy browser support is removed

0.15.2 - 2020-12-31

Fixed

0.15.1 - 2020-12-28

Fixed

  • Remove the previous SoundFont file when setSoundFont is called multiple times

0.15.0 - 2020-12-28

Added

  • Expose setSoundFont as a static method for Node.js

This allows loading soundfonts in advance, before any score is loaded.

0.14.3 - 2020-12-28

Fixed

0.14.2 - 2020-12-22

Changed

  • Data files are in .wasm file extension for Webpack. This makes web servers compress those files automatically.

0.14.1 - 2020-12-22

Changed

  • WebMscore web worker no longer extends the native Worker class

0.14.0 - 2020-12-18

Added

  • Support legacy browsers that have no WebAssembly support

0.13.4 - 2020-12-18

Fixed

  • ES5 compilation

0.13.3 - 2020-12-18

Added

  • ES5 Compatibility (Webpack only)

0.13.2 - 2020-12-16

Fixed

  • Handle exceptions sent from the webmscore web worker

0.13.1 - 2020-12-16

Fixed

  • Fixed an issue that webmscore catches all (and irrelevant) uncaught exceptions in Node.js

0.13.0 - 2020-12-14

Added

  • Allow to set custom stdout and stderr
    (Node.js exclusive feature)

See the example in web-public/src/index.js

0.12.1 - 2020-12-14

Fixed

  • Throw file loading error instead of failing silently

0.12.0 - 2020-12-14

Added

  • Support MP3 export
await score.saveAudio('mp3')

0.11.0 - 2020-12-13

Added

  • The instrumentName field of parts in Metadata JSON

0.10.3 - 2020-08-10

Added

  • Commonjs Compatibility

0.10.0 - 2020-08-01

BREAKING CHANGE

0.9.1 - 2020-07-31

no production code change

0.9.0 - 2020-07-30

BREAKING CHANGE

  • The .destory() method is now having the soft parameter (default: true)

    • true: destroy the score instance only, or
    • false: destroy the whole WebMscore context

    To retrieve the default .destory() behavior of webmscore in WebWorker prior to v0.9.0, set soft to false

Fixed

  • Don't transfer the ownership of SoundFont data to the webworker context

0.8.3 - 2020-07-30

Added

  • Webpack Compatibility

Changed

  • Use WOFF2 fonts and LZ4 compression to reduce the data file size (significantly)

0.8.1 - 2020-07-28

Added

  • TypeScript declaration (.d.ts) files

0.8.0 - 2020-07-28

Added

  • The pageSize (in pixels) field in position JSON (measurePositions() or segmentPositions())

0.7.0 - 2020-05-31

Added

  • Save part score as MSCZ/MSCX file

  • Boost Mode (set the doLayout parameter in WebMscore.load to false) if you only need score metadata or midi file

Fixed

  • Fixed the runtime error in processSynth

0.6.0 - 2020-05-29

Added

  • Generate audio files in WAV, OGG, or FLAC formats

  • Synthesize raw audio frames, can be used in the Web Audio API

A soudfont (sf2/sf3) file must be set using setSoundFont

Changed

  • CJK fonts are no longer bundled inside webmscore. If you would like to export sheet PDF/images with those characters, pass an array of font file (ttf/ttc/otf/otc/woff/etc.) data (Uint8Array) to the fonts parameter in WebMscore.load

Fixed

  • Always load scores in page mode

0.5.0 - 2020-05-13

Added

  • Generate excerpts (if no excerpts found) from parts using await score.generateExcerpts()

0.4.0 - 2020-05-13

Changed

  • The name param is replaced by filetype ("mscz" or "mscx") in WebMscore.load

0.3.0 - 2020-05-13

Added

  • Export individual parts (or excerpts, linked parts). Set the excerpt range of exported files using await score.setExcerptId(n).

  • Excerpt information is available in score metadata

0.2.1 - 2020-05-12

Changelog of early versions are omitted

0.2.0 - 2020-05-11

0.1.0 - 2020-05-10