Skip to content

Commit

Permalink
update documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
AaronDavidNewman committed Nov 17, 2022
1 parent cf6382d commit c048769
Show file tree
Hide file tree
Showing 110 changed files with 914 additions and 413 deletions.
16 changes: 14 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,20 @@
![](https://imgur.com/quur6md.png)

# What is Smoosic?
See [changes](https://aarondavidnewman.github.io/Smoosic/changes.html) for potentially breaking changes related to vexflow merge.
Smoosic is an open-source javascript/typescript music composition and rendering library that uses the [VexFlow engraving library](https://github.com/0xfe/vexflow) for the rendering component. There is also a [demo application](https://aarondavidnewman.github.io/Smoosic/release/html/smoosic.html) using Smoosic.
We are approaching Smoosic 1.0 status! Many of the things I wanted to do with Smoosic are working to some extent.

* scores with part extraction
* playback with instruments and samples
* real-time editing, even for large scores
* MIDI and MusicXML import and export has been enhanced. You can now export from Smoosic and import into MuseScore and vise-versa.
* dynamic music library with links to scores, tags etc. Inspired by iRealPro app 'ireal' format
* library mode for custom applications

Smoosic is highly dependent on the [Vexflow engraving library](https://github.com/0xfe/vexflow), and especially its authors/maintainers [@rvilari](https://github.com/0xfe/vexflow/commits?author=rvilarl), [@ronyeh](https://github.com/0xfe/vexflow/commits?author=ronyeh) and [@0xfe](https://github.com/0xfe).

See [changes](https://aarondavidnewman.github.io/Smoosic/changes.html) for changes, updates, initiatives etc.

There is a [demo application](https://aarondavidnewman.github.io/Smoosic/release/html/smoosic.html) that you can play around with that shows the capabilities.

## What does it do?
Smoosic does the following things:
Expand Down
17 changes: 17 additions & 0 deletions changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@


## Changes to Smoosic
### November, 2022
Where to start...Smoosic has been disassembled and reassembled multiple times. A project like this is never 'complete', but pretty much everything that I intended to do with Smoosic is now working, to some extent:

* scores with part extraction
* playback with instruments and samples
* real-time editing, even for large scores
* MIDI and MusicXML import and export has been enhanced. You can now export from Smoosic and import into MuseScore and vise-versa.
* dynamic music library with links to scores, tags etc. Inspired by iRealPro app 'ireal' format
* library mode for custom applications

I have rewritten the SVG rendering so that each page is its own SVG element (Renderer context, in VexFlow terminology). This allows us to edit large scores more quickly, since each SVG element is smaller. The renderer will only update pages that have changed music.

I added basic part features like transposing score, part-specific text, multi-measure rests.

Music playback is sample-based. Original samples come from [Electronic Music Studios](https://theremin.music.uiowa.edu/MIS.html) and [Sonatina Symphonic Orchestra](https://github.com/peastman/sso/tree/master/Sonatina%20Symphonic%20Orchestra).


### May 1 2022
Change to the way proportionality (softmax) is computed:

Expand Down
2 changes: 1 addition & 1 deletion release/docs/assets/search.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion release/docs/classes/BrowserEventSource.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
<p>This is the event generating interface for Smoosic. It is kept as
skeletal as possible so applications can call event handling methods from
their own event logic.</p>
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">BrowserEventSource</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="BrowserEventSource.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Browser<wbr/>Event<wbr/>Source<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="BrowserEventSource.html" class="tsd-signature-type" data-tsd-kind="Class">BrowserEventSource</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/AaronDavidNewman/VexflowEditor/blob/e47cde1/src/ui/eventSource.ts#L40">src/ui/eventSource.ts:40</a></li></ul></aside><h4 class="tsd-returns-title">Returns <a href="BrowserEventSource.html" class="tsd-signature-type" data-tsd-kind="Class">BrowserEventSource</a></h4></li></ul></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-class"><a href="BrowserEventSource.html" class="tsd-kind-icon">Browser<wbr/>Event<wbr/>Source</a><ul><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="BrowserEventSource.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">BrowserEventSource</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="BrowserEventSource.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Browser<wbr/>Event<wbr/>Source<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="BrowserEventSource.html" class="tsd-signature-type" data-tsd-kind="Class">BrowserEventSource</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/AaronDavidNewman/VexflowEditor/blob/cf6382df/src/ui/eventSource.ts#L40">src/ui/eventSource.ts:40</a></li></ul></aside><h4 class="tsd-returns-title">Returns <a href="BrowserEventSource.html" class="tsd-signature-type" data-tsd-kind="Class">BrowserEventSource</a></h4></li></ul></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-class"><a href="BrowserEventSource.html" class="tsd-kind-icon">Browser<wbr/>Event<wbr/>Source</a><ul><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="BrowserEventSource.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
4 changes: 4 additions & 0 deletions release/docs/classes/CuedAudioContexts.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CuedAudioContexts | Smoosic</title><meta name="description" content="Documentation for Smoosic"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>console.log(`Loaded ${location.href}`)</script><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Smoosic</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label><input type="checkbox" id="tsd-filter-externals" checked/><label class="tsd-widget" for="tsd-filter-externals">Externals</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../modules.html">Smoosic</a></li><li><a href="CuedAudioContexts.html">CuedAudioContexts</a></li></ul><h1>Class CuedAudioContexts</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
<p>Maintain a list of buffers ready to play, since this is a
system resource.</p>
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">CuedAudioContexts</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="CuedAudioContexts.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Cued<wbr/>Audio<wbr/>Contexts<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="CuedAudioContexts.html" class="tsd-signature-type" data-tsd-kind="Class">CuedAudioContexts</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="CuedAudioContexts.html" class="tsd-signature-type" data-tsd-kind="Class">CuedAudioContexts</a></h4></li></ul></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-class"><a href="CuedAudioContexts.html" class="tsd-kind-icon">Cued<wbr/>Audio<wbr/>Contexts</a><ul><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="CuedAudioContexts.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></li></ul></nav></div></div></div><footer class="with-border-bottom"><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="container tsd-generator"><p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></div><div class="overlay"></div><script src="../assets/main.js"></script></body></html>
Loading

0 comments on commit c048769

Please sign in to comment.