music21.alpha.webapps.apps

Webapps is a module designed for using music21 with a webserver.

This file includes application-specific components of the webserver.

It includes a set of applicationInitializers which augment agendas with data and commands specific to a given application as well as a set of commands specific to the various applications.

Functions

music21.alpha.webapps.apps.setupCognitionApp(agenda)
music21.alpha.webapps.apps.setupConverterApp(agenda)

Augments an agenda with the data and commands related to the Converter App demoed at the Digital Humanities conference in Hamburg Germany The converter app takes as query values:

source: a source compatible with converter.parse in quotes (e.g. “tinyNotation:C2 D E F...”) output: an output format (musicxml, vexflow, braille...)

Example: http://ciconia.mit.edu/music21/webinterface?appName=converterApp&source=

“tinynotation:F4 A- B- B c e f2”&output=vexflow
>>> agenda = alpha.webapps.Agenda()
>>> agenda.addData('source', 'tinynotation:F4 A- B- B c e f2')
>>> agenda.addData('output',"musicxml")
>>> alpha.webapps.apps.setupConverterApp(agenda)
>>> processor = alpha.webapps.CommandProcessor(agenda)
>>> processor.executeCommands()
>>> (responseData, responseContentType) = processor.getOutput()
>>> responseContentType
'application/vnd.recordare.musicxml+xml; charset=utf-8'

Python 3 conversion first...

>>> if ext.six.PY3:
...     responseData = responseData.decode('utf-8')
>>> print(responseData)
<?xml version="1.0" ...?>
<!DOCTYPE score-partwise
  PUBLIC '-//Recordare//DTD MusicXML 2.0 Partwise//EN'
  'http://www.musicxml.org/dtds/partwise.dtd'>
<score-partwise>
  <movement-title>Music21 Fragment</movement-title>
  <identification>
    <creator type="composer">Music21</creator>
  </identification>
  <defaults>
    <scaling>
      <millimeters>7</millimeters>
      <tenths>40</tenths>
    </scaling>
  </defaults>
  <part-list>
...
>>> converter.parse(responseData).flat.notes[0].pitch.ps
53.0
music21.alpha.webapps.apps.setupURLCorpusParseApp(agenda)

Augments an agenda with the data and commands related to the URL Corpus Parse App.

ResponseData is returned as a bytes object in Python3

>>> agenda = alpha.webapps.Agenda()
>>> agenda.addData('measureEnd', '4')
>>> agenda.addData('workName',"'bwv7.7'")
>>> agenda.addData('command',"commands.reduction")
>>> agenda.addData('output',"musicxmlDownload")
>>> alpha.webapps.apps.setupURLCorpusParseApp(agenda)
>>> processor = alpha.webapps.CommandProcessor(agenda)
>>> processor.executeCommands()
>>> (responseData, responseContentType) = processor.getOutput()
>>> responseContentType
'application/vnd.recordare.musicxml+xml; charset=utf-8'

Python 3 conversion first...

>>> if ext.six.PY3:
...     responseData = responseData.decode('utf-8')
>>> converter.parse(responseData).flat.highestOffset
16.5
music21.alpha.webapps.apps.setupZipfileApp(agenda)