[HIRING] create a MIDI plug-in – Pitch Scrambler

in #hiring4 years ago (edited)

Pitch Scrambler

A MIDI effect plug-in (64-bit Windows, preferably Mac-compatible as well) that transposes pitches from certain incoming MIDI notes to other randomized pitches.

  • Pitches should only be defined by octave (i.e. 0-11 or pitch % 12), not the entire 0-127 MIDI range. So the randomization should affect and be consistent in all octaves. The transposition to the randomized pitches should continue until the pitches are scrambled again or the Reset button is triggered.

3 modes:

  1. Manual Only: all pitches scramble only when the Scramble button is triggered.
  2. After Disuse: any incoming pitch starts (or restarts) a countdown timer of user-selected duration. When any timer reaches 0 all pitches with timers at 0 scramble.
  3. Set Intervals: all pitches scramble repeatedly at user-selected intervals.

additional controls:

  1. Scramble: when this button is triggered, all pitches should scramble.
  2. Ordered/Unordered: when Ordered is selected, the randomly-chosen output pitches should be sorted and then distributed in ascending order across the currently scrambling input pitches.
  3. Per Channel/All Channels: when All Channels is selected, the device disregards the MIDI channel of incoming notes and treats them all the same. Per Channel keeps individual randomization lists for each MIDI channel and treats incoming notes accordingly.
  4. Reset: when triggered, erases all randomization, returning the pitches to their default.
  • When used in a traditional DAW like Ableton Live, the state of the plug-in should save with the user's project.
  • I will actually be using the plug-in primarily from within Max/MSP, loaded into the vst~ object, and will need to be able to programmatically control all its buttons and settings. The way to do this should be to have all the above controls be named parameters. I will then be able to send messages to vst~ to alter them. Even the buttons should be linked to parameters, with a default value of 0. If I want to trigger the button, I will send a message such as scramble 1, which will set the value of the button parameter to 1 and should then be made to trigger the button. After triggering the button, the parameter value should immediately be returned to 0.
  • All of the pitch transpositions will need to be stored as named parameters as well.
  • When scrambling or resetting any pitch transpositions, the channel(s) in question will need to be flushed (note-offs sent for each playing note) to prevent the possibility of stuck notes.

All code will need to be clean, organized and very-well commented. Please contact me if you have any questions or would like clarification about anything! If you see a better way to do something than what I'm suggesting, please bring it up!

Potential Future Updates

To be clear, the initial job would only be for the above, but if things go well I may want to hire you to add some additional functionality in the future.

  • An option to scramble across the entire 0-127 MIDI range, rather than just by octave.
  • A more revealing GUI which displays a grid of every pitch and what outgoing pitch it's currently transposing to.
  • The ability for the user to manually modify on this GUI the transpositions of any given notes.

Coin Marketplace

STEEM 0.14
TRX 0.24
JST 0.033
BTC 89027.86
ETH 2190.14
SBD 0.79