Mercurial > hg > btrack
changeset 80:d812bf72d928
Tidied up and added maxhelp and beat tracking example patches
author | Adam Stark <adamstark.uk@gmail.com> |
---|---|
date | Tue, 25 Nov 2014 22:47:09 +0000 |
parents | 9fd4075b8f9e |
children | fd3ac263f42b |
files | modules-and-plug-ins/max-external/Beat Tracking Example.maxpat modules-and-plug-ins/max-external/btrack~.cpp modules-and-plug-ins/max-external/btrack~.maxhelp |
diffstat | 3 files changed, 2773 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules-and-plug-ins/max-external/Beat Tracking Example.maxpat Tue Nov 25 22:47:09 2014 +0000 @@ -0,0 +1,2040 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 126.0, 89.0, 870.0, 487.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "frgb" : 0.0, + "id" : "obj-25", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 675.0, 420.0, 100.0, 20.0 ], + "text" : "Audio Settings:", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-11", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 780.0, 420.0, 37.0, 18.0 ], + "text" : "open" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 8.0, + "hidden" : 1, + "id" : "obj-17", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 0, + "patching_rect" : [ 780.0, 435.0, 28.0, 15.0 ], + "text" : "dac~" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "bordercolor" : [ 0.537255, 0.537255, 0.537255, 1.0 ], + "borderoncolor" : [ 0.537255, 0.537255, 0.537255, 1.0 ], + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 18.0, + "id" : "obj-4", + "maxclass" : "textbutton", + "mode" : 1, + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 45.0, 150.0, 118.0, 26.0 ], + "text" : "Audio File", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textoncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "textoveroncolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 8.0, + "hidden" : 1, + "id" : "obj-6", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 25.0, 69.0, 154.0, 143.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "comment" : "", + "id" : "obj-2", + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 15.0, 105.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-1", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 15.0, 15.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 8.0, + "id" : "obj-42", + "maxclass" : "newobj", + "numinlets" : 4, + "numoutlets" : 4, + "outlettype" : [ "bang", "bang", "bang", "" ], + "patching_rect" : [ 15.0, 45.0, 110.0, 16.0 ], + "text" : "sel 0 1 2" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 8.0, + "id" : "obj-44", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 75.0, 75.0, 57.0, 14.0 ], + "text" : "offset 0 -124" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 8.0, + "id" : "obj-45", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 15.0, 75.0, 51.0, 14.0 ], + "text" : "offset 0 -19" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-42", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-44", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-42", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-45", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-42", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-44", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-45", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 30.0, 180.0, 55.0, 15.0 ], + "saved_object_attributes" : { + "default_fontface" : 0, + "default_fontname" : "Arial", + "default_fontsize" : 12.0, + "description" : "", + "digest" : "", + "fontface" : 0, + "fontname" : "Arial", + "fontsize" : 12.0, + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p inputselect" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "embed" : 1, + "id" : "obj-40", + "maxclass" : "bpatcher", + "name" : "AudioSelect.maxpat", + "numinlets" : 2, + "numoutlets" : 1, + "offset" : [ 0.0, -19.0 ], + "outlettype" : [ "signal" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 156.0, 269.0, 159.0, 61.0 ], + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 0.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "comment" : "", + "id" : "obj-18", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 541.0, 105.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-15", + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 0.0, 315.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "frgb" : 0.0, + "id" : "obj-12", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 15.0, 30.0, 134.0, 20.0 ], + "text" : "Audio File Controls:", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-24", + "maxclass" : "textbutton", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 90.0, 60.0, 62.0, 15.0 ], + "text" : "Load File", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-17", + "maxclass" : "textbutton", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 45.0, 60.0, 42.0, 16.0 ], + "text" : "Stop", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-25", + "maxclass" : "textbutton", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 0.0, 60.0, 41.0, 16.0 ], + "text" : "Play", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-30", + "maxclass" : "newobj", + "numinlets" : 5, + "numoutlets" : 1, + "outlettype" : [ "signal" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 336.0, 177.0, 410.0, 291.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "comment" : "", + "id" : "obj-21", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "int" ], + "patching_rect" : [ 300.0, 30.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-19", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 300.0, 75.0, 84.0, 20.0 ], + "text" : "prepend set 1" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-13", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "signal", "signal" ], + "patching_rect" : [ 300.0, 105.0, 37.0, 20.0 ], + "text" : "adc~" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-12", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 210.0, 30.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-9", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 150.0, 30.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-7", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 210.0, 135.0, 37.0, 18.0 ], + "text" : "open" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-10", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 150.0, 135.0, 32.5, 18.0 ], + "text" : "0" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-11", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 105.0, 135.0, 32.5, 18.0 ], + "text" : "1" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-8", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "bang" ], + "patching_rect" : [ 150.0, 180.0, 49.0, 20.0 ], + "save" : [ "#N", "sfplay~", "", 1, 120960, 0, "", ";" ], + "text" : "sfplay~" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-5", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 105.0, 30.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-32", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 30.0, 195.0, 32.5, 18.0 ], + "text" : "1" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-31", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 60.0, 195.0, 32.5, 18.0 ], + "text" : "2" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-4", + "maxclass" : "newobj", + "numinlets" : 3, + "numoutlets" : 1, + "outlettype" : [ "signal" ], + "patching_rect" : [ 30.0, 225.0, 258.0, 20.0 ], + "text" : "selector~ 2" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-3", + "maxclass" : "newobj", + "numinlets" : 3, + "numoutlets" : 3, + "outlettype" : [ "", "", "" ], + "patching_rect" : [ 30.0, 165.0, 78.0, 20.0 ], + "text" : "route 0 1" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-2", + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 30.0, 255.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-1", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 30.0, 30.0, 25.0, 25.0 ] + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 2 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 309.5, 167.0, 278.5, 167.0 ], + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-13", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-19", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-21", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-31", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-32", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 69.5, 213.0, 39.5, 213.0 ], + "source" : [ "obj-31", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 39.5, 208.0, 39.5, 208.0 ], + "source" : [ "obj-32", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-7", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 1 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-8", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-10", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-9", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 0.0, 285.0, 108.0, 20.0 ], + "saved_object_attributes" : { + "default_fontface" : 0, + "default_fontname" : "Arial", + "default_fontsize" : 12.0, + "description" : "", + "digest" : "", + "fontface" : 0, + "fontname" : "Arial", + "fontsize" : 12.0, + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p inputaudio" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-10", + "maxclass" : "number", + "minimum" : 0, + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "int", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 90.0, 150.0, 49.0, 20.0 ], + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "tricolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ] + } + + } +, { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "frgb" : 0.0, + "id" : "obj-11", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 0.0, 150.0, 98.0, 20.0 ], + "text" : "Input Source:", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-9", + "maxclass" : "newobj", + "numinlets" : 4, + "numoutlets" : 0, + "patching_rect" : [ 420.0, 300.0, 126.0, 20.0 ], + "text" : "bgcolor 0.26 0.26 0.26" + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-7", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 405.0, 106.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-8", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "", "" ], + "patching_rect" : [ 405.0, 135.0, 67.0, 20.0 ], + "save" : [ "#N", "thispatcher", ";", "#Q", "end", ";" ], + "text" : "thispatcher" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-30", 4 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 99.5, 196.0, 99.0, 196.0, 99.0, 243.0, 98.5, 243.0 ], + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 2 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-17", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 0 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 550.5, 160.0, 280.0, 160.0, 280.0, 211.0, 9.5, 211.0 ], + "source" : [ "obj-18", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 3 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 99.5, 230.689026, 76.25, 230.689026 ], + "source" : [ "obj-24", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-30", 1 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 9.5, 230.0, 31.75, 230.0 ], + "source" : [ "obj-25", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-30", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-8", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-7", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 30.0, 180.0, 159.0, 61.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "hidden" : 1, + "id" : "obj-32", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 30.0, -30.0, 72.0, 20.0 ], + "text" : "loadmess 0" + } + + } +, { + "box" : { + "id" : "obj-23", + "maxclass" : "gain~", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 585.0, 360.0, 34.0, 72.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-18", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "signal" ], + "patching_rect" : [ 720.0, 180.0, 32.5, 20.0 ], + "text" : "+~" + } + + } +, { + "box" : { + "id" : "obj-12", + "maxclass" : "gain~", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 30.0, 285.0, 64.0, 148.0 ] + } + + } +, { + "box" : { + "id" : "obj-21", + "maxclass" : "button", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 525.0, 195.0, 20.0, 20.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-19", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 25.0, 69.0, 128.0, 131.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "comment" : "", + "id" : "obj-2", + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 15.0, 90.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "bang", "" ], + "patching_rect" : [ 15.0, 45.0, 59.0, 20.0 ], + "text" : "select 13" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-17", + "maxclass" : "newobj", + "numinlets" : 0, + "numoutlets" : 4, + "outlettype" : [ "int", "int", "int", "int" ], + "patching_rect" : [ 15.0, 15.0, 46.0, 20.0 ], + "text" : "key" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-2", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-17", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 525.0, 165.0, 89.0, 20.0 ], + "saved_object_attributes" : { + "default_fontface" : 0, + "default_fontname" : "Arial", + "default_fontsize" : 12.0, + "description" : "", + "digest" : "", + "fontface" : 0, + "fontname" : "Arial", + "fontsize" : 12.0, + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p getkeystroke" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "bordercolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "borderoncolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "fontface" : 1, + "fontname" : "Helvetica", + "fontsize" : 12.0, + "id" : "obj-5", + "maxclass" : "textbutton", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 525.0, 225.0, 82.0, 19.0 ], + "text" : "countin", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "bordercolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "borderoncolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "fontface" : 1, + "fontname" : "Helvetica", + "fontsize" : 12.0, + "id" : "obj-10", + "maxclass" : "textbutton", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 360.0, 165.0, 48.0, 18.0 ], + "text" : "on", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgovercolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "bgoveroncolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "border" : 1, + "bordercolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "borderoncolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "fontface" : 1, + "fontname" : "Helvetica", + "fontsize" : 12.0, + "id" : "obj-15", + "maxclass" : "textbutton", + "numinlets" : 1, + "numoutlets" : 3, + "outlettype" : [ "", "", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 420.0, 165.0, 50.0, 18.0 ], + "text" : "off", + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "texton" : "Live Input", + "textovercolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ] + } + + } +, { + "box" : { + "id" : "obj-1", + "maxclass" : "gain~", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "int" ], + "parameter_enable" : 0, + "patching_rect" : [ 705.0, 210.0, 67.0, 89.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-57", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "signal" ], + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 184.0, 182.0, 211.0, 226.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 12.0, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "comment" : "", + "id" : "obj-7", + "maxclass" : "outlet", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 60.0, 177.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "comment" : "", + "id" : "obj-6", + "maxclass" : "inlet", + "numinlets" : 0, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 30.0, 30.0, 25.0, 25.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-5", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 75.0, 72.0, 60.0, 20.0 ], + "text" : "loadbang" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 75.0, 102.0, 108.0, 18.0 ], + "text" : "open Cowbell.wav" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-3", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 30.0, 102.0, 32.5, 18.0 ], + "text" : "1" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "bang" ], + "patching_rect" : [ 60.0, 147.0, 49.0, 20.0 ], + "save" : [ "#N", "sfplay~", "", 1, 120960, 0, "", ";" ], + "text" : "sfplay~" + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-4", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-5", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 39.5, 62.0, 39.5, 62.0 ], + "source" : [ "obj-6", 0 ] + } + + } + ] + } +, + "patching_rect" : [ 375.0, 405.0, 87.0, 20.0 ], + "saved_object_attributes" : { + "default_fontface" : 0, + "default_fontname" : "Arial", + "default_fontsize" : 12.0, + "description" : "", + "digest" : "", + "fontface" : 0, + "fontname" : "Arial", + "fontsize" : 12.0, + "globalpatchername" : "", + "tags" : "" + } +, + "text" : "p audioclick" + } + + } +, { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 16.0, + "frgb" : 0.0, + "id" : "obj-14", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 555.0, 300.0, 60.0, 24.0 ], + "text" : "bpm", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.0, 0.0, 0.0, 0.0 ], + "fontface" : 1, + "fontname" : "Helvetica", + "fontsize" : 24.0, + "frgb" : 0.0, + "id" : "obj-13", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 345.0, 105.0, 158.0, 30.0 ], + "text" : "Beat Tracker", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 16.0, + "id" : "obj-9", + "maxclass" : "flonum", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "float", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 480.0, 300.0, 66.0, 24.0 ], + "textcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "tricolor" : [ 0.360784, 0.360784, 0.360784, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "hidden" : 1, + "id" : "obj-89", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 615.0, -30.0, 72.0, 20.0 ], + "text" : "loadmess 1" + } + + } +, { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 12.0, + "frgb" : 0.0, + "id" : "obj-34", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 690.0, 390.0, 92.0, 20.0 ], + "text" : "Audio On/Off", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.0, 0.0, 0.0, 0.0 ], + "fontface" : 1, + "fontname" : "Helvetica", + "fontsize" : 24.0, + "frgb" : 0.0, + "id" : "obj-29", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 705.0, 105.0, 90.0, 54.0 ], + "text" : "Audio \n Out", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "id" : "obj-28", + "maxclass" : "ezdac~", + "numinlets" : 2, + "numoutlets" : 0, + "patching_rect" : [ 705.0, 315.0, 67.0, 67.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad1" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad2" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "id" : "obj-26", + "maxclass" : "panel", + "mode" : 1, + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 660.0, 90.0, 165.0, 359.0 ], + "rounded" : 38 + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "hidden" : 1, + "id" : "obj-22", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 705.0, -30.0, 83.0, 19.0 ], + "text" : "loadmess 125" + } + + } +, { + "box" : { + "bgcolor" : [ 0.407843, 0.407843, 0.407843, 1.0 ], + "coldcolor" : [ 0.145098, 0.07451, 0.376471, 1.0 ], + "hotcolor" : [ 0.101961, 0.717647, 0.717647, 1.0 ], + "id" : "obj-20", + "maxclass" : "meter~", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "float" ], + "overloadcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "patching_rect" : [ 105.0, 285.0, 70.0, 147.0 ], + "tepidcolor" : [ 0.262745, 0.129412, 0.709804, 1.0 ], + "warmcolor" : [ 0.086275, 0.490196, 0.490196, 1.0 ] + } + + } +, { + "box" : { + "bgcolor" : [ 0.694118, 0.694118, 0.694118, 1.0 ], + "blinkcolor" : [ 0.047059, 0.913725, 0.913725, 1.0 ], + "fgcolor" : [ 0.419608, 0.521569, 0.521569, 1.0 ], + "id" : "obj-7", + "maxclass" : "button", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "outlinecolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "patching_rect" : [ 375.0, 300.0, 86.0, 86.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "id" : "obj-3", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "bang", "float" ], + "patching_rect" : [ 375.0, 255.0, 50.0, 20.0 ], + "text" : "btrack~" + } + + } +, { + "box" : { + "bgcolor" : [ 0.0, 0.0, 0.0, 0.0 ], + "fontface" : 1, + "fontname" : "Helvetica", + "fontsize" : 24.0, + "frgb" : 0.0, + "id" : "obj-27", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 30.0, 105.0, 151.0, 30.0 ], + "text" : "Audio Input", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] + } + + } +, { + "box" : { + "fontname" : "Helvetica", + "fontsize" : 12.0, + "frgb" : 0.0, + "id" : "obj-58", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 585.0, 60.0, 169.0, 18.0 ], + "text" : "livemusiclab.eecs.qmul.ac.uk" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "hidden" : 1, + "id" : "obj-43", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 465.0, -30.0, 142.0, 18.0 ], + "text" : "read QMlivemusiclab.jpg" + } + + } +, { + "box" : { + "autofit" : 1, + "id" : "obj-41", + "maxclass" : "fpic", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 360.0, 15.0, 500.0, 50.0 ], + "pic" : "QMlivemusiclab.jpg" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "hidden" : 1, + "id" : "obj-36", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 420.0, -60.0, 60.0, 20.0 ], + "text" : "loadbang" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad1" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad2" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "id" : "obj-56", + "maxclass" : "panel", + "mode" : 1, + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 15.0, 90.0, 179.0, 357.0 ], + "rounded" : 38 + } + + } +, { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 48.0, + "frgb" : 0.0, + "id" : "obj-2", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 15.0, 15.0, 337.0, 60.0 ], + "text" : "Beat Tracking" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad1" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad2" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "id" : "obj-16", + "maxclass" : "panel", + "mode" : 1, + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 210.0, 90.0, 424.0, 362.0 ], + "rounded" : 38 + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 0.0 ], + "border" : 1, + "id" : "obj-8", + "maxclass" : "panel", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 15.0, 15.0, 341.0, 60.0 ], + "rounded" : 20 + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-28", 1 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 714.5, 308.0, 762.5, 308.0 ], + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-28", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 384.0, 247.026321, 384.5, 247.026321 ], + "source" : [ "obj-10", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-17", 0 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 39.5, 462.0, 646.0, 462.0, 646.0, 170.0, 729.5, 170.0 ], + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-20", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 39.5, 437.0, 99.0, 437.0, 99.0, 271.0, 114.5, 271.0 ], + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 445.0, 247.0, 384.5, 247.0 ], + "source" : [ "obj-15", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 729.5, 204.0, 714.5, 204.0 ], + "source" : [ "obj-18", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-21", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-19", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-5", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-21", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-12", 0 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 714.5, 83.0, 39.5, 83.0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-23", 0 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 714.5, 83.0, 594.5, 83.0 ], + "source" : [ "obj-22", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-18", 1 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 594.5, 462.0, 646.0, 462.0, 646.0, 170.0, 743.0, 170.0 ], + "source" : [ "obj-23", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-7", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-3", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-9", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 415.5, 280.0, 489.5, 280.0 ], + "source" : [ "obj-3", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 1 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 39.5, 178.0, 179.5, 178.0 ], + "source" : [ "obj-32", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-43", 0 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-36", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 1 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 54.5, 177.387695, 179.5, 177.387695 ], + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "disabled" : 0, + "hidden" : 1, + "midpoints" : [ 54.5, 177.422272, 39.5, 177.422272 ], + "source" : [ "obj-4", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-12", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-40", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 39.5, 271.894836, 202.394867, 271.894836, 202.394867, 247.342194, 384.5, 247.342194 ], + "source" : [ "obj-40", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-41", 0 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-43", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-3", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 566.0, 247.0, 384.5, 247.0 ], + "source" : [ "obj-5", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-23", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 384.5, 431.0, 578.0, 431.0, 578.0, 354.0, 594.5, 354.0 ], + "source" : [ "obj-57", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-40", 0 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-6", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-57", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 384.5, 391.0, 384.5, 391.0 ], + "source" : [ "obj-7", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "QMlivemusiclab.jpg", + "bootpath" : "/Applications/Max 6.1/Cycling '74/qm_externals/qm_maxhelp", + "patcherrelativepath" : "../../../../../../../Applications/Max 6.1/Cycling '74/qm_externals/qm_maxhelp", + "type" : "JPEG", + "implicit" : 1 + } +, { + "name" : "btrack~.mxo", + "type" : "iLaX" + } + ] + } + +}
--- a/modules-and-plug-ins/max-external/btrack~.cpp Mon Nov 24 17:17:26 2014 +0000 +++ b/modules-and-plug-ins/max-external/btrack~.cpp Tue Nov 25 22:47:09 2014 +0000 @@ -42,6 +42,15 @@ // Indicates whether the beat tracker should output beats bool should_output_beats; + // the time of the last bang received in milliseconds + long time_of_last_bang_ms; + + // a count in counter + long count_in; + + // the recent tempi observed during count ins + double count_in_tempi[3]; + // An outlet for beats void *beat_outlet; @@ -68,6 +77,12 @@ void btrack_on(t_btrack *x); void btrack_off(t_btrack *x); +void btrack_fixtempo(t_btrack *x, double f); +void btrack_unfixtempo(t_btrack *x); + +void btrack_bang(t_btrack *x); +void btrack_countin(t_btrack *x); + void outlet_beat(t_btrack *x, t_symbol *s, long argc, t_atom *argv); // global class pointer variable @@ -79,20 +94,28 @@ //=========================================================================== int C74_EXPORT main(void) { - // object initialization, note the use of dsp_free for the freemethod, which is required - // unless you need to free allocated memory, in which case you should call dsp_free from - // your custom free function. - - t_class *c = class_new("btrack~", (method)btrack_new, (method)dsp_free, (long)sizeof(t_btrack), 0L, A_GIMME, 0); + //-------------------------------------------------------------- + t_class *c = class_new("btrack~", (method)btrack_new, (method)btrack_free, (long)sizeof(t_btrack), 0L, A_GIMME, 0); + //-------------------------------------------------------------- class_addmethod(c, (method)btrack_float, "float", A_FLOAT, 0); class_addmethod(c, (method)btrack_dsp, "dsp", A_CANT, 0); // Old 32-bit MSP dsp chain compilation for Max 5 and earlier class_addmethod(c, (method)btrack_dsp64, "dsp64", A_CANT, 0); // New 64-bit MSP dsp chain compilation for Max 6 class_addmethod(c, (method)btrack_assist, "assist", A_CANT, 0); - + + //-------------------------------------------------------------- class_addmethod(c, (method)btrack_on, "on", 0); class_addmethod(c, (method)btrack_off, "off", 0); + + //-------------------------------------------------------------- + class_addmethod(c, (method)btrack_fixtempo, "fixtempo", A_FLOAT, 0); + class_addmethod(c, (method)btrack_unfixtempo, "unfixtempo", 0); + //-------------------------------------------------------------- + class_addmethod(c, (method)btrack_bang, "bang", 0); + class_addmethod(c, (method)btrack_countin, "countin", 0); + + //-------------------------------------------------------------- class_dspinit(c); class_register(CLASS_BOX, c); btrack_class = c; @@ -100,10 +123,6 @@ return 0; } - - - - //=========================================================================== void *btrack_new(t_symbol *s, long argc, t_atom *argv) { @@ -113,39 +132,35 @@ dsp_setup((t_pxobject *)x, 1); // MSP inlets: arg is # of inlets and is REQUIRED! // use 0 if you don't need inlets - object_post((t_object *) x,"v1.0 designed by Adam Stark and Matthew Davies at Queen Mary University of London"); - // create detection function and beat tracking objects x->b = new BTrack(); + // create outlets for bpm and beats x->tempo_outlet = floatout(x); x->beat_outlet = bangout(x); - + // initialise variables x->should_output_beats = true; - - /* - - x->mode = 0; - x->lastbang = 0; - - - x->countin = 4; - - x->counttempi[0] = 120; - x->counttempi[1] = 120; - x->counttempi[2] = 120; - */ + x->time_of_last_bang_ms = 0; + x->count_in = 4; + x->count_in_tempi[0] = 120; + x->count_in_tempi[1] = 120; + x->count_in_tempi[2] = 120; + } return (x); } //=========================================================================== -// NOT CALLED!, we use dsp_free for a generic free function void btrack_free(t_btrack *x) { - ; + // delete the beat tracker + delete x->b; + x->b = NULL; + + // call the dsp free function on our object + dsp_free((t_pxobject *)x); } @@ -184,11 +199,14 @@ // In this case we register the 32-bit, "btrack_perform" method. void btrack_dsp(t_btrack *x, t_signal **sp, short *count) { + // get hop size and frame size int hopSize = (int) sp[0]->s_n; int frameSize = hopSize*2; + // initialise the beat tracker x->b->updateHopAndFrameSize(hopSize, frameSize); + // set up dsp dsp_add(btrack_perform, 3, x, sp[0]->s_vec, sp[0]->s_n); } @@ -198,11 +216,14 @@ // which operates on 64-bit audio signals. void btrack_dsp64(t_btrack *x, t_object *dsp64, short *count, double samplerate, long maxvectorsize, long flags) { + // get hop size and frame size int hopSize = (int) maxvectorsize; int frameSize = hopSize*2; + // initialise the beat tracker x->b->updateHopAndFrameSize(hopSize, frameSize); + // set up dsp object_method(dsp64, gensym("dsp_add64"), x, btrack_perform64, 0, NULL); } @@ -284,11 +305,79 @@ void btrack_off(t_btrack *x) { x->should_output_beats = false; + x->count_in = 4; } +//=========================================================================== +void btrack_fixtempo(t_btrack *x, double f) +{ + x->b->fixTempo(f); + object_post((t_object *) x,"Tempo fixed to %f BPM",f); +} +//=========================================================================== +void btrack_unfixtempo(t_btrack *x) +{ + x->b->doNotFixTempo(); + object_post((t_object *) x,"Tempo no longer fixed"); +} +//=========================================================================== +void btrack_countin(t_btrack *x) +{ + x->count_in = x->count_in-1; + + btrack_bang(x); + if (x->count_in == 0) + { + x->should_output_beats = 1; + } +} +//=========================================================================== +void btrack_bang(t_btrack *x) +{ + double bperiod; + double tempo; + double mean_tempo; + + // get current time in milliseconds + long ms = systime_ms(); + + // calculate beat period + bperiod = ((double) (ms - x->time_of_last_bang_ms))/1000.0; + + // store time since last bang + x->time_of_last_bang_ms = ms; + + // if beat period is between 0 and 1 + if ((bperiod < 1.0) && (bperiod > 0.0)) + { + // calculate tempo from beat period + tempo = (1/bperiod)*60; + + double sum = 0; + + // move back elements in tempo history and sum remaining elements + for (int i = 0;i < 2;i++) + { + x->count_in_tempi[i] = x->count_in_tempi[i+1]; + sum = sum+x->count_in_tempi[i]; + } + + // set final element to be the newly calculated tempo + x->count_in_tempi[2] = tempo; + + // add the new tempo to the sum + sum = sum+x->count_in_tempi[2]; + + // calculate the mean tempo by dividing the tempo by 3 + mean_tempo = sum/3; + + // set the tempo in the beat tracker + x->b->setTempo(mean_tempo); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules-and-plug-ins/max-external/btrack~.maxhelp Tue Nov 25 22:47:09 2014 +0000 @@ -0,0 +1,616 @@ +{ + "patcher" : { + "fileversion" : 1, + "appversion" : { + "major" : 6, + "minor" : 1, + "revision" : 6, + "architecture" : "x86" + } +, + "rect" : [ 129.0, 45.0, 649.0, 660.0 ], + "bglocked" : 0, + "openinpresentation" : 0, + "default_fontsize" : 11.595187, + "default_fontface" : 0, + "default_fontname" : "Arial", + "gridonopen" : 0, + "gridsize" : [ 15.0, 15.0 ], + "gridsnaponopen" : 0, + "statusbarvisible" : 2, + "toolbarvisible" : 1, + "boxanimatetime" : 200, + "imprint" : 0, + "enablehscroll" : 1, + "enablevscroll" : 1, + "devicewidth" : 0.0, + "description" : "", + "digest" : "", + "tags" : "", + "boxes" : [ { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-28", + "linecount" : 6, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 374.0, 242.0, 237.0, 84.0 ], + "text" : "the 'fixtempo' message tells the beat tracker that the tempo will be roughly the argument given - 120bpm in the example. Once set, the beat tracker will not search for tempi drastically different from the argument. The 'unfixtempo' message turns this off.", + "varname" : "autohelp_top_description[10]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-27", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 344.0, 377.0, 39.0, 19.0 ], + "text" : "bpm", + "varname" : "autohelp_top_description[9]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-26", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 303.0, 272.0, 67.0, 17.0 ], + "text" : "unfixtempo" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-25", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 284.0, 242.0, 77.0, 17.0 ], + "text" : "fixtempo 120" + } + + } +, { + "box" : { + "fontface" : 2, + "fontname" : "Arial", + "fontsize" : 11.0, + "frgb" : 0.0, + "id" : "obj-21", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 280.0, 47.0, 285.0, 19.0 ], + "text" : "by Adam Stark, Matthew Davies and Mark Plumbley", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], + "varname" : "autohelp_top_digest[1]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-24", + "linecount" : 2, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 29.0, 482.0, 456.0, 32.0 ], + "text" : "Adam. M. Stark, (2011). Musicians and Machines: Bridging the Semantic Gap In Live Performance. PhD Thesis, Queen Mary, University of London. Chapter 3.", + "varname" : "autohelp_top_description[8]" + } + + } +, { + "box" : { + "fontface" : 1, + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-23", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 14.0, 452.0, 88.0, 19.0 ], + "text" : "References:", + "varname" : "autohelp_top_description[7]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-22", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 29.0, 527.0, 451.0, 45.0 ], + "text" : "Adam M. Stark, Matthew E. P. Davies and Mark D. Plumbley, (2009). Real-time beat-synchronous analysis of musical audio. In Proceedings of International Conference on Digital Audio Effects, pages 299–304.", + "varname" : "autohelp_top_description[6]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-20", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 239.0, 422.0, 167.0, 19.0 ], + "text" : "'bang' on every beat", + "varname" : "autohelp_top_description[5]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-19", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 299.0, 347.0, 52.0, 19.0 ], + "text" : "tempo", + "varname" : "autohelp_top_description[4]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-18", + "maxclass" : "number", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "int", "bang" ], + "parameter_enable" : 0, + "patching_rect" : [ 284.0, 377.0, 56.0, 19.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-17", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 314.0, 152.0, 239.0, 58.0 ], + "text" : "when beat tracker is off, tap this 4 times to 'count in' the beat tracker at a particular tempo. If the beat tracker is on - tap it twice to 'nudge' it to the right tempo and phase.", + "varname" : "autohelp_top_description[3]" + } + + } +, { + "box" : { + "id" : "obj-15", + "maxclass" : "ezdac~", + "numinlets" : 2, + "numoutlets" : 0, + "patching_rect" : [ 89.0, 341.0, 45.0, 45.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-14", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 149.0, 227.0, 32.5, 17.0 ], + "text" : "0" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-13", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 104.0, 227.0, 32.5, 17.0 ], + "text" : "1" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-12", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 59.0, 227.0, 36.0, 17.0 ], + "text" : "open" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-11", + "maxclass" : "newobj", + "numinlets" : 2, + "numoutlets" : 2, + "outlettype" : [ "signal", "bang" ], + "patching_rect" : [ 104.0, 257.0, 48.0, 19.0 ], + "save" : [ "#N", "sfplay~", "", 1, 120960, 0, "", ";" ], + "text" : "sfplay~" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-10", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 254.0, 152.0, 48.0, 17.0 ], + "text" : "countin" + } + + } +, { + "box" : { + "id" : "obj-6", + "maxclass" : "button", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 179.0, 407.0, 53.0, 53.0 ] + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-5", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 59.0, 152.0, 165.0, 19.0 ], + "text" : ": switches the beat tracker off", + "varname" : "autohelp_top_description[2]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-4", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 29.0, 182.0, 32.5, 17.0 ], + "text" : "on" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-3", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 59.0, 182.0, 167.0, 19.0 ], + "text" : ": switches the beat tracker on", + "varname" : "autohelp_top_description[1]" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-2", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 29.0, 152.0, 32.5, 17.0 ], + "text" : "off" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "id" : "obj-1", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 2, + "outlettype" : [ "bang", "float" ], + "patching_rect" : [ 179.0, 347.0, 68.0, 19.0 ], + "text" : "qm.btrack~" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "hidden" : 1, + "id" : "obj-43", + "maxclass" : "message", + "numinlets" : 2, + "numoutlets" : 1, + "outlettype" : [ "" ], + "patching_rect" : [ 29.0, -103.0, 171.0, 18.0 ], + "text" : "read QMlivemusiclab.jpg" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.0, + "hidden" : 1, + "id" : "obj-36", + "maxclass" : "newobj", + "numinlets" : 1, + "numoutlets" : 1, + "outlettype" : [ "bang" ], + "patching_rect" : [ 29.0, -133.0, 69.0, 20.0 ], + "text" : "loadbang" + } + + } +, { + "box" : { + "fontface" : 3, + "fontname" : "Arial", + "fontsize" : 20.871338, + "frgb" : 0.0, + "id" : "obj-7", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 29.0, 17.0, 325.0, 30.0 ], + "text" : "btrack~", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], + "varname" : "autohelp_top_title" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 12.754705, + "frgb" : 0.0, + "id" : "obj-8", + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 29.0, 47.0, 325.0, 21.0 ], + "text" : "A Real-Time Beat Tracker", + "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], + "varname" : "autohelp_top_digest" + } + + } +, { + "box" : { + "fontname" : "Arial", + "fontsize" : 11.595187, + "frgb" : 0.0, + "id" : "obj-9", + "linecount" : 3, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 14.0, 92.0, 447.0, 45.0 ], + "text" : "btrack~ is a real-time beat tracker for Max/MSP. It takes as input an audio signal and outputs bang events from the left outlet on every beat. The tempo is output from the right inlet.", + "varname" : "autohelp_top_description" + } + + } +, { + "box" : { + "bgcolor" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad1" : [ 0.258824, 0.258824, 0.258824, 1.0 ], + "grad2" : [ 0.360784, 0.360784, 0.360784, 1.0 ], + "id" : "obj-16", + "maxclass" : "panel", + "mode" : 1, + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 14.0, 17.0, 598.0, 56.0 ], + "rounded" : 38 + } + + } + ], + "lines" : [ { + "patchline" : { + "destination" : [ "obj-18", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 237.5, 369.0, 293.5, 369.0 ], + "source" : [ "obj-1", 1 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-6", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-1", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 263.5, 295.0, 188.5, 295.0 ], + "source" : [ "obj-10", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 113.5, 286.0, 188.5, 286.0 ], + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 1 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 113.5, 328.0, 124.5, 328.0 ], + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-15", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 113.5, 328.0, 98.5, 328.0 ], + "source" : [ "obj-11", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-12", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-13", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-11", 0 ], + "disabled" : 0, + "hidden" : 0, + "source" : [ "obj-14", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 38.5, 176.0, 24.0, 176.0, 24.0, 295.0, 188.5, 295.0 ], + "source" : [ "obj-2", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 293.5, 307.0, 188.5, 307.0 ], + "source" : [ "obj-25", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 312.5, 307.0, 188.5, 307.0 ], + "source" : [ "obj-26", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-43", 0 ], + "disabled" : 0, + "hidden" : 1, + "source" : [ "obj-36", 0 ] + } + + } +, { + "patchline" : { + "destination" : [ "obj-1", 0 ], + "disabled" : 0, + "hidden" : 0, + "midpoints" : [ 38.5, 295.0, 188.5, 295.0 ], + "source" : [ "obj-4", 0 ] + } + + } + ], + "dependency_cache" : [ { + "name" : "qm.btrack~.mxo", + "type" : "iLaX" + } + ] + } + +}