westlicht / performer

PER|FORMER Eurorack Sequencer
https://westlicht.github.io/performer
MIT License
232 stars 70 forks source link

Feature request: Sinfonion chord sync mode #331

Open rolfjack opened 2 years ago

rolfjack commented 2 years ago

Sinfonion is an amazing quantizer, but when working with an external keyboard (playing chords) or a sequencer that can send chords via midi (like the Vector Five12 sequencer) the synchronization of the Sinfonion to the chords being played is bit of a pain. It would be a huge benefit to make the sync dynamic so that the Sinfonion followed whatever midi chord was being played.

Performer can be set up to receive midi and translate it to CV for transpose and other purposes. However, when receiving a midi chord it is the LAST received midi note that is registered. In practice that means (with for instance Vector) that it is the highest note in a chord that is registered in Performer even though they arrive almost simultaneously.

Idea #1: It would be very useful to be able to select highest/lowest note for midi notes arriving within some small timespan (1-5ms)

Idea #2: Create a "Sinfonion" mode in the performer that can receive midi and translate midi notes into root note and degree (using CV and gate outputs for the channel in question) that can be sent to the Sinfonion. Ignoring inversions, outputting the root note simply means identifying the lowest note in a midi chord (as in idea #1)). Identifying the degree is slightly more complex and requires some analysis of the chord structure. One can control the chord degree in Sinfonion by sending it a specific note regardless of octave (there are 12 degrees: major, minor, 7th etc). So if the performer was able to analyze the chord and output the appropriate note then the problem would be solved.

Extracting the root note in a midi chord would be useful for a whole range of applications. Identifying and outputting the chord degree is of course specific to the Sinfonion, unless some kind of customization function is made in the performer allowing the user to control how different chord structures are translated into output voltages or notes.