Definition keyAssignmentEvaluateRate
  (key        : nat)
  (assignment : keyAssignment)
: R :=
  match (in_dec keyAssignmentFlagEqDec FlagUnpitched (kaFlags assignment)) with
  | left _  => 1.0
  | right _ =>
    let kLow := kaValueStart assignment in
    let kMid := kaValueCenter assignment in
      match Nat.compare key kMid with
      | Eq => 1
      | Lt =>
        let delta := minus kMid key in
          semitonesPitchRatio (-(INR delta))
      | Gt =>
        let delta := minus key kMid in
          semitonesPitchRatio (INR delta)
      end
  end.
