Skip to content

Polychron MIDI patch enables inclusivity of diverse and marginalized time signatures. Take back time from the establishment chronophobes. Other dynamics enhancements include: unrestricted polyphony, ultra-fine note granularity, custom note scaling and randomization, (and more!), all while maintaining accurate adherence to an absolute time grid.

Notifications You must be signed in to change notification settings

PolychronMidi/Polychron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polychron aims to:

  • Develop a system that allows for any musical meter (time signature) in MIDI composition, maintaining compatibility with standard MIDI playback systems
  • Provide a flexible framework for creating and manipulating complex metrical structures, offering unrestricted polyphony and note granularity, without compromising timing accuracy.

Polychron is a MIDI composition system that breaks free from traditional MIDI limitations, particularly in the realm of time signatures (A.K.A. meters). The core innovation of Polychron lies in its ability to work with any musical meter through a process called "meter spoofing."

Because MIDI has been around since the 80's, one artifact is that it only allows standard meters like 4/4. (Some less common meters are allowed, but only if their denominator is a power of 2, like 2, 4, 8, 16, etc.)

Using the spoofMeter function allows for playing any meter (yes, even 420/69) within the constraints of MIDI. Here's how it works:

If the denominator is a power of 2 (standard MIDI meter), it returns the original meter with no changes. For non-standard denominators, it calculates the nearest power of 2 (either ceiling or floor). It then determines a tempo factor to compensate for the difference between the actual and spoofed meter.

This approach allows Polychron to represent and work with any meter while maintaining compatibility with standard MIDI playback systems. The result is a composition system that can explore previously inaccessible rhythmic territories within the MIDI framework.

Uses tonal and py_midicsv. We create our MIDI data in CSV format first for a nice human-readable version, which allows easier auditing and more direct data control.

To install tonal and create the CSV file, run the following (requires Node.js installed):

npm i tonal
node polychron.js

To install py_midicsv and create the MIDI file from the CSV, run the following (requires Python installed):

py -m pip install py_midicsv
py midi.py

You'll need a MIDI player with a soundfont installed to play MIDI files. One option is VLC player

Other MIDI players: https://soundfont-midi-player.en.softonic.com/download

https://github.com/jingkaimori/midieditor

Current implementation is a simple demo of random meters, scales, and chords at random divisions. Settings can be customized in config.js. Timing markers for each unit can be found in the "Marker_t" entries of the CSV file.

About

Polychron MIDI patch enables inclusivity of diverse and marginalized time signatures. Take back time from the establishment chronophobes. Other dynamics enhancements include: unrestricted polyphony, ultra-fine note granularity, custom note scaling and randomization, (and more!), all while maintaining accurate adherence to an absolute time grid.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published