Giter Site home page Giter Site logo

notator / assistantperformertestsite Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 29.52 MB

Web application for performing custom SVG-MIDI scores

Home Page: https://james-ingram-act-two.de/open-source/assistantPerformer/assistantPerformer.html

License: MIT License

HTML 12.21% CSS 0.52% JavaScript 87.27%
music-scores-displayed music-score music-scores music-score-performer midi-sequencer midi-music-notation music-notation interactive-music-notation music-notation-player

assistantperformertestsite's Introduction

Assistant Performer

This application is an experimental music score player with conducting options.
Its purpose is to test and develop
    1.  the SVG-MIDI format in which the scores are stored
    2.  the ways in which users can interact with playback.

This repository has two major branches:
    dev: the unstable development application.
    stable: the current stable application.

The dev branch has been fully merged into the stable branch in May 2024, and the two online web applications are now identical. There is, however, no guarantee that this will always be the case.

The Assistant Performer now uses the ResidentSynth (GitHub, Documentation) as its only MIDI output device. This means that it no longer requires use of the Web MIDI API. The ResidentSynth is a MIDI output device that is implemented using the Web Audio API .


This project is designed to be an investigation of the concepts involved. It is not intended to be a finished product. Its top-level architecture and what it does is much more important than the actual code. Both the Assistant Performer and the ResidentSynth are working prototypes whose actual code might well be improved.

Neither the Assistant Performer nor the ResidentSynth require use of the Web MIDI API. The synthesizer implements the Web MIDI MIDIOutput interface using the Web Audio API.

The SVG-MIDI format is SVG containing embedded MIDI information.
Code for event symbols in the scores contain both spatial (SVG) and temporal (MIDI) information. This allows the Assistant Performer to
    1.  synchronize the position of running cursors with live audio output
    2.  give the user control over the start- and end-points of playback.

Currently, the scores are all written using a simplified version of standard Western music notation. This could, in principle, change in future: All music notations contain event symbols whose appearance (in space) is independent of their meaning (in time), so any music notation (designed for writing on paper) could be extended (when stored in a computer file) to contain temporal information.

The Assistant Performer ´s main documentation can be found here.

James Ingram
May 2024

assistantperformertestsite's People

Contributors

notator avatar

Watchers

 avatar

assistantperformertestsite's Issues

Remove the Web MIDI API dependency?

May 2024,: The AssistantPerformer no longer uses MIDI InputDevices, and the ResidentSynth has been permanently installed, so the AssistantPerformer could do without the Web MIDI API altogether.
(The ResidentSynth implements the Web MIDI OutputDevice API itself using the Web Audio API.)

Removing the Web MIDI dependency would avoid the complications that arise when browsers ask permission to use the system´s installed MIDI devices. But it would also mean doing without third-party plugin synthesizers such as the VirtualMIDISynth.

Documentation needed ?

29.08.2023:
This old issue, originally opened in 2017, has been copied here from the archived AssistantPerformer repository.
It may be obsolete, but needs to be properly reviewed.

cmn_core.html probably arose while I was an active participant in the W3C Music Notation Community Group. If so, it may well now be obsolete.
svgScoreExtensions.html probably needs to be completely rewritten, now that the extensions have stabilized.


The files
http://www.james-ingram-act-two.de/open-source/cmn_core.html
and
www.james-ingram-act-two.de/open-source/svgScoreExtensions.html
need to be written/updated.

cmn_core.html needs to be written from scratch. It is the value of the SVG "data-scoreType" attribute in the AP's scores, and should describe the classes used by the cmn_core SVG specialisation.
The cmn_core SVG specialisation is the root class of all cmn (= Common Western Music Notation) scores. The URL is used to tell the client application that the score only uses the cmn_core classes.

svgScoreExtensions.html needs to be updated. It defines the "score" namespace in the AP's scores.
The "score" namespace is used to allow the SVG to include temporal information.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.