Detecting within fractional note range.

Rob Brooks's icon

Hey everyone,

I'm working on some pitch-matching magic and I'd like to check whether my sample frequency is, say an eighth tone of a target frequency.

My target tones are arriving from a midi file via seq, through a midiparse, stripnote and mtof.

Should I simply run a function on my mtof'd frequencies to determine what my range for a quarter note in each direction should be, perhaps add a pitchbend into the chain that the midi level and then sample that or leverage some other method that is lurking in the toolkit that I have yet to bump into?

I'm looking at using splits to determine whether my sample frequency lies between an eighth below and an eighth above the target frequency but I obviously need to accurately synthesise these frequency values in order to make this work.

Any pointers would be very much appreciated.

Chris Muir's icon

Where is the sample frequency coming from? Are you planning on doing some sort of pitch analysis on the sample?

Rob Brooks's icon

That's right Chris, but obviously the permissable deviation would vary depending on target pitch.

Chris Muir's icon

Well, leaving aside the pitch analysis for now, you could drive mtof with a floating point number and get back a floating point frequency. If your target was C (MIDI 60) you could hit it with notes of 59.75 and 60.25 to find a permissible frequency range.

Floating Point's icon
Max Patch
Copy patch and select New From Clipboard in Max.

is this something like what you need?

Rob Brooks's icon

Ha! I completely overlooked the possibility of converting my input frequency into the MIDI realm. For some reason I figured that fractions of notes would just be quantized out.

So good call there Chris.

Thanks for the patch Terry. I'm probably being a bit stupid but how does the bounds comparison work? I understand rounding the input frequency MIDI value to the nearest quarter note but the equivalence operator appears to only have a reference note as input and the comparison appears to be equal or not equal. How is the accuracy +/- 0.125 specified?

Thanks again everyone.

Edit - Scratch that - it was just too simple for me to see it. Excellently elegant solution!

Rob Brooks's icon

Just one more thing before I shut up Terry: :)

If I wanted to attach something to the underside of the toggle which would constantly add into an accumulator all the the toggle was 'ON', say at a certain quantity per second, where might I look for such a component?

Many thanks for all the marvelous help.

Luke Hall's icon

Rob, try using the [toggle] to turn on a [metro] set to the rate you want to run at driving something like [counter] or [accum]. You can then use [sel 0] attached to the [toggle] to reset either of these objects when the input goes out of range again.