Random Chord Voicing Generator

Choose one registered MIDI pitch for each supplied chord interval and return sorted notes with equal-tempered frequencies.

Description

A chord voicing places supplied chord intervals into a chosen MIDI register.

A chord voicing places supplied chord intervals into a chosen MIDI register. Octave-equivalent pitches can preserve a chord tone while changing its height.

The tool returns result (generated result). These are generated fixtures or selected identifiers; the result does not replace the caller’s choice of repertoire, dataset or intended use.

When to use Random Chord Voicing Generator

Use Random Chord Voicing Generator when you already have rootMidi, intervals, lowestMidi, highestMidi and want result. Use the stated ranges and distribution for a synthetic fixture, then keep the generating parameters with the result.

How to use Random Chord Voicing Generator and understand its results

  1. Enter rootMidi, intervals, lowestMidi, highestMidi using the field table below. Match the units, ordering and data boundaries described in the calculation.
  2. Run the tool after checking the stated bounds and matching paired observations or categories. A malformed request gives a tool error rather than a usable measurement.
  3. Read result. Use the calculation and interpretation below to distinguish amounts, ratios, signs and decision flags where applicable.
  4. Run again for another fixture. Preserve caller-supplied dataset metadata or separate exercise answers from prompts where present.
Input fieldMeaningValue type and boundsRequirement
rootMidiRoot MIDIinteger; minimum 0; maximum 127Required
intervalsChord intervalslist of numberRequired
lowestMidiLowest MIDIinteger; minimum 0; maximum 127Required
highestMidiHighest MIDIinteger; minimum 0; maximum 127Required

For each of 1–16 integer intervals, build in-range candidates inside MIDI bounds 0–127, choose one with one draw, and convert to frequency. Sort notes by MIDI; also report the permitted register span.

candidate = rootMidi+interval+12×octaveShift; octaveShift ∈ {−5,…,+5}

The symbols refer to the supplied quantities or generated values described above; unit conversions and comparison boundaries follow the stated implementation.

json
{
  "input": {
    "rootMidi": 60,
    "intervals": [
      0,
      4,
      7
    ],
    "lowestMidi": 48,
    "highestMidi": 72
  },
  "randomDraw": 0.25,
  "output": {
    "result": {
      "notes": [
        {
          "frequencyHertz": 130.8127826502993,
          "interval": 0,
          "midi": 48
        },
        {
          "frequencyHertz": 164.81377845643496,
          "interval": 4,
          "midi": 52
        },
        {
          "frequencyHertz": 195.99771799087463,
          "interval": 7,
          "midi": 55
        }
      ],
      "rangeSemitones": 24
    }
  }
}

Limitations and assumptions

Candidate octave shifts are limited to ±5. Duplicate notes can occur; no voice-leading, uniqueness or inversion constraint is enforced.

Random draws use context.random when injected and otherwise Math.random. No seed input or cryptographic randomness guarantee is provided. Consumed draws must be finite and in [0,1); repeated runs can repeat results.

Alternative or Complementary methods

Random Arpeggio Generator: Generate timed MIDI notes from supplied chord intervals and return equal-tempered frequency metadata. Random Ear-Training Interval Exercise Generator: Generate ascending MIDI pitch pairs with separate equal-tempered frequencies and semitone answer intervals.

Methodological background: Note names, MIDI numbers and frequencies.1

References

  1. Note names, MIDI numbers and frequencies — Joe Wolfe, University of New South Wales

Similar or alternative tools

Don't forget to set a bookmark for tool.io!
Privacy | Imprint | Cookies