Large Value Jumps


    Nov 25 2012 | 9:51 pm
    How can I eliminate large value jumps?
    It's for a pitchtracking (sigmund~) patch that obviously jumps around a lot when using a live audio input, I wish to eliminate these big jumps that occur, Im thinking something along the lines of a bucket object and an if $f1>$f2 object and perhaps a + object but I cant quite get my head around it.
    Many thanks :)

    • Nov 25 2012 | 10:14 pm
      If you're tracking a specific instrument, why not do a little filtering to cut off frequencies above the highest frequency you actually want to detect? Ditto with the low end. Better input, better output.
    • Nov 25 2012 | 10:35 pm
      This kinda works but has anyone got anything better?
      { "boxes" : [ { "box" : { "maxclass" : "number", "patching_rect" : [ 177.099991, 194.0, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "int", "bang" ], "id" : "obj-102", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "speedlim 1", "patching_rect" : [ 241.0, 224.5, 69.0, 20.0 ], "numinlets" : 2, "numoutlets" : 1, "fontname" : "Arial", "outlettype" : [ "" ], "id" : "obj-98", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 242.0, 750.19989, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-89", "presentation_rect" : [ 243.100006, 750.19989, 0.0, 0.0 ], "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 300.299988, 114.399986, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-74", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "*~", "patching_rect" : [ 241.0, 154.0, 78.299988, 20.0 ], "numinlets" : 2, "numoutlets" : 1, "fontname" : "Arial", "outlettype" : [ "signal" ], "id" : "obj-72", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "ezdac~", "patching_rect" : [ 242.0, 856.099976, 45.0, 45.0 ], "numinlets" : 2, "numoutlets" : 0, "id" : "obj-71" }
      } , { "box" : { "maxclass" : "newobj", "text" : "cycle~", "patching_rect" : [ 242.0, 796.0, 45.0, 20.0 ], "numinlets" : 2, "numoutlets" : 1, "fontname" : "Arial", "outlettype" : [ "signal" ], "id" : "obj-70", "presentation_rect" : [ 242.100006, 616.699951, 0.0, 0.0 ], "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "mtof", "patching_rect" : [ 242.0, 713.799927, 34.0, 20.0 ], "numinlets" : 1, "numoutlets" : 1, "fontname" : "Arial", "outlettype" : [ "" ], "id" : "obj-65", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "bucket 2", "patching_rect" : [ 242.0, 295.899994, 193.0, 20.0 ], "numinlets" : 1, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "", "" ], "id" : "obj-56", "presentation_rect" : [ 292.600006, 357.499969, 0.0, 0.0 ], "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "if $f1 == $f2 then out2 $f2 else $f1", "patching_rect" : [ 242.0, 329.999969, 193.0, 20.0 ], "numinlets" : 2, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "", "" ], "id" : "obj-55", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "ezadc~", "patching_rect" : [ 241.0, 38.899986, 45.0, 45.0 ], "numinlets" : 1, "numoutlets" : 2, "outlettype" : [ "signal", "signal" ], "id" : "obj-54" }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 333.5, 231.100006, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-41", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 242.0, 683.099915, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-29", "presentation_rect" : [ 240.899994, 479.599945, 0.0, 0.0 ], "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "if $f2 > ($f1+200.) then out2 $f2 else $f1", "patching_rect" : [ 242.0, 502.699951, 281.199982, 20.0 ], "numinlets" : 2, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "", "" ], "id" : "obj-28", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 504.199982, 471.899933, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-25", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 242.0, 471.899933, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-24", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "bucket 2", "patching_rect" : [ 242.0, 426.799957, 281.199982, 20.0 ], "numinlets" : 1, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "", "" ], "id" : "obj-23", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 491.799988, 53.199986, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-20", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "cycle~", "patching_rect" : [ 491.799988, 114.399986, 45.0, 20.0 ], "numinlets" : 2, "numoutlets" : 1, "fontname" : "Arial", "outlettype" : [ "signal" ], "id" : "obj-7", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "flonum", "patching_rect" : [ 242.0, 256.399994, 50.0, 20.0 ], "numinlets" : 1, "parameter_enable" : 0, "numoutlets" : 2, "fontname" : "Arial", "outlettype" : [ "float", "bang" ], "id" : "obj-3", "fontsize" : 12.0 }
      } , { "box" : { "maxclass" : "newobj", "text" : "sigmund~ @hop 4096 pitch env", "patching_rect" : [ 241.0, 194.0, 204.0, 20.0 ], "numinlets" : 1, "numoutlets" : 3, "fontname" : "Arial", "outlettype" : [ "float", "float", "" ], "id" : "obj-1", "fontsize" : 11.600006 }
      } ], "lines" : [ { "patchline" : { "source" : [ "obj-102", 0 ], "destination" : [ "obj-98", 1 ], "hidden" : 0, "midpoints" : [ 186.599991, 218.75, 300.5, 218.75 ], "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-98", 0 ], "destination" : [ "obj-3", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-1", 0 ], "destination" : [ "obj-98", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-65", 0 ], "destination" : [ "obj-89", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-89", 0 ], "destination" : [ "obj-70", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-7", 0 ], "destination" : [ "obj-72", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-3", 0 ], "destination" : [ "obj-56", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-56", 0 ], "destination" : [ "obj-55", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-28", 0 ], "destination" : [ "obj-29", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-72", 0 ], "destination" : [ "obj-1", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-74", 0 ], "destination" : [ "obj-72", 1 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-70", 0 ], "destination" : [ "obj-71", 1 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-70", 0 ], "destination" : [ "obj-71", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-29", 0 ], "destination" : [ "obj-65", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-1", 1 ], "destination" : [ "obj-41", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-23", 1 ], "destination" : [ "obj-25", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-25", 0 ], "destination" : [ "obj-28", 1 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-23", 0 ], "destination" : [ "obj-24", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-24", 0 ], "destination" : [ "obj-28", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-55", 0 ], "destination" : [ "obj-23", 0 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-56", 1 ], "destination" : [ "obj-55", 1 ], "hidden" : 0, "disabled" : 0 }
      } , { "patchline" : { "source" : [ "obj-20", 0 ], "destination" : [ "obj-7", 0 ], "hidden" : 0, "disabled" : 0 }
      } ], "appversion" : { "major" : 6, "minor" : 0, "revision" : 4 }
      }
    • Dec 07 2012 | 4:34 pm
      Hi gregory,
      I alreacy tried the filtering prior to pitch tracking, the problem is when the signal is small (for example in between words or sounds), this means the pitch tracker cannot find a specific pitch and so jumps around wildly, I`m looking for something using Max rather than MSP to filter out the unwanted values as I think the pitch tracker will always behave this way no matter what.
      Thanks for your reply
      Johnny :)
    • Dec 07 2012 | 4:56 pm
      i seem to say this every few years, but there's a third party object called 'lbyl' which can be useful in these kind of cases.
      or to continue Gregory's train of thought- perhaps some kind of gate to kill off the frequencies in those *dead spots* that you are looking to avoid.
    • Dec 07 2012 | 11:11 pm
      That sounds like exactly what Im after, thanks kthozoid.. I have used a noise gate to avoid the dead spots but I still get big jumps while sounds are playing. Many thanks though Ill check that object out now.. :)