Tom Graves – Music: The PipeWorks project

PipeWorks is MIDI for windplayers! (and other outcasts on the fringes of the musical world…)

Like much software development, PipeWorks was borne out of frustration – in our case with the often bizarre limitations of existing MIDI/music-notation packages, especially from a wind-player’s perspective.

We’re not talking about controlling wind-instruments via MIDI (difficult, but not impossible!). We’re simply aiming to create something that reflects at least the basics of wind-playing notations – breath-marks, trills, grace-notes and the like – and plays it back properly as notated, including repeat-marks, DC al Coda and so on (which surprisingly few packages do…). We also want it to support the stranger but important features of some wind-instruments, such as the hidden constant chords of bagpipe drones.

And we also realised that the frustrations we faced as wind-players were shared, in their own ways, by players of other ‘forgotten’ and traditional instruments – from lute and and Irish flute to hurdy-gurdy and harp. Each instrument has its own notation (or notations!) which can vary widely from the strongly keyboard-oriented ‘standard’ notation: yet since the underlying musical principles are the same, we ought to be able to translate between them with ease, whilst still allowing for the specific information that each instrument needs. An ‘instrument-oriented’ interface design would enable us to support any instrument, in the ways that each player may choose.

In other words, we’re building a practice tool for traditional musicians – a practice tool that actually works.

A brief summary of our design goals

The program needs to:

  • provide full support for standard music notation, organised by bar, staff, system, section, song and set
  • provide support for a wide variety of notations, including bagpipe, lute, guitar and others – these features to be extensible indefinitely via notation definitions
  • provide full support for translation between notations
  • permit on-screen entry and editing of both general and instrument-specific notation, such as grace-notes, trills, bow-directions and breath-marks – these features to be extensible indefinitely via ‘plug-in’ palettes
  • play back music as displayed, including all notated repeats, anacruces, codas, song- and set-sequences
  • read and write standard text-based notation files such as ABC and Piobh Mhor
  • read and write standard MIDI files
  • provide standard MIDI output and (eventually) accept real-time MIDI input

The program is to be portable – including file-compatibility – across all common platforms (initially Macintosh and PC/Windows).

In order to satisfy the portability and extensibility requirements, we’re designing a Java implementation. The present release of Java (1.1) does not yet support MIDI without native code, but MIDI support has been promised in later releases of the language specification.

We’re currently at the design stage: if you’re interested and would like to become involved in development and/or testing, contact us for more information on the project’s current status.

Related pages