0
$\begingroup$

I have integer list data which I am outputting to MIDI format, however the list data range of values is much greater than the MIDI note range, so is it possible to use the min and max value in the list and scale that to a desired audible frequency range and output a continuously changing frequency following the values in the list, to have no defined notes? Thanks.

cheers, Jamie

$\endgroup$
  • 3
    $\begingroup$ You might look at the function Rescale. $\endgroup$ – bill s Jun 17 at 2:16
  • $\begingroup$ Thanks, once I've rescaled so all values are in a range 0 to 1, there will be more than 88 notes, ie there could be 10000+ different values, which I'd like to be distinct frequencies at least to a resolution of ~+-1Hz frequency rather than being binned into 88 notes. The notes should be played at 10 notes per second with fixed tempo, I tried this: vscaled = Rescale[v]; ListPlay[vscaled, SampleRate -> 10] but that didn't seem to output the notes. $\endgroup$ – Jamie M Jun 17 at 19:24
  • $\begingroup$ The list data I have ie these 48 notes: v={27, -18, 1, 4, 23, 26, 13, 32, 19, 22, 41, 44, 31, 18, 37, 24, 27, 46, 33, 36, 23, -6, -3, 16, 19, 38, 41, 12, -1, 2, -11, 8, 11, -2, 17, 4, -9, -6, 13, 16, 3, 22, 9, 12, 31, 34, 53, 8} $\endgroup$ – Jamie M Jun 17 at 19:24
  • 1
    $\begingroup$ MIDI is based on notes with pitches in the range of 0 - 127. If you want to use more pitches than that, then you can use the MIDI "pitch bend" command, but you will have to program this yourself. $\endgroup$ – bill s Jun 18 at 3:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.