wavetable playback

Jan 23, 2012 at 11:19pm

wavetable playback

ive been reading the theory and technique of electronic music by miller puckette and he explains wavetable playback in the second chapter, ive made a patch that follows the logic behind it as best i can, and its very clicky, and of course generating sound is a very precise business. so what am i doing wrong in this?

{
“boxes” : [ {
"box" : {
"maxclass" : "flonum",
"patching_rect" : [ 200.0, 323.0, 84.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-84″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “flonum”,
“patching_rect” : [ 380.0, 18.0, 68.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-83″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “toggle”,
“patching_rect” : [ 205.0, 65.0, 20.0, 20.0 ],
“numinlets” : 1,
“numoutlets” : 1,
“id” : “obj-82″,
“outlettype” : [ "int" ]
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “receive~ recout”,
“patching_rect” : [ 762.0, 106.0, 90.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-79″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “send~ recout”,
“patching_rect” : [ 352.0, 94.0, 78.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 0,
“id” : “obj-78″,
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “buffer~ recme 1000″,
“patching_rect” : [ 770.0, 271.0, 111.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-77″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “toggle”,
“patching_rect” : [ 488.0, 94.0, 20.0, 20.0 ],
“numinlets” : 1,
“numoutlets” : 1,
“id” : “obj-13″,
“outlettype” : [ "int" ]
}

}
, {
“box” : {
“maxclass” : “message”,
“text” : “append $1″,
“patching_rect” : [ 488.0, 120.0, 65.0, 18.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-14″,
“outlettype” : [ "" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “toggle”,
“patching_rect” : [ 462.0, 40.0, 20.0, 20.0 ],
“numinlets” : 1,
“numoutlets” : 1,
“id” : “obj-15″,
“outlettype” : [ "int" ]
}

}
, {
“box” : {
“maxclass” : “message”,
“text” : “loop $1″,
“patching_rect” : [ 462.0, 66.0, 49.0, 18.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-16″,
“outlettype” : [ "" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “message”,
“text” : “reset”,
“patching_rect” : [ 513.0, 149.0, 36.0, 18.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-17″,
“outlettype” : [ "" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “toggle”,
“patching_rect” : [ 690.0, 25.0, 20.0, 20.0 ],
“numinlets” : 1,
“numoutlets” : 1,
“id” : “obj-26″,
“outlettype” : [ "int" ]
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “record~ recme”,
“patching_rect” : [ 739.0, 184.0, 186.0, 20.0 ],
“numinlets” : 3,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-30″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “comment”,
“text” : “start/stop recording”,
“patching_rect” : [ 710.0, 26.0, 110.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 0,
“id” : “obj-33″,
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “comment”,
“text” : “set to record into entire sample”,
“patching_rect” : [ 550.0, 149.0, 170.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 0,
“id” : “obj-41″,
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “comment”,
“text” : “Enable/disable loop recording”,
“patching_rect” : [ 511.0, 65.0, 161.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 0,
“id” : “obj-73″,
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “comment”,
“text” : “Enable/disable append mode.”,
“patching_rect” : [ 510.0, 95.0, 164.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 0,
“id” : “obj-74″,
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “number~”,
“patching_rect” : [ 333.0, 214.0, 76.0, 20.0 ],
“ft1″ : 5.0,
“numinlets” : 2,
“fontname” : “Arial”,
“sig” : 0.0,
“mode” : 2,
“numoutlets” : 2,
“id” : “obj-65″,
“presentation_rect” : [ 333.0, 111.0, 0.0, 0.0 ],
“outlettype” : [ "signal", "float" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “+~”,
“patching_rect” : [ 303.0, 168.0, 32.5, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-64″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “flonum”,
“patching_rect” : [ 304.0, 18.0, 71.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-62″,
“presentation_rect” : [ 325.0, 45.0, 0.0, 0.0 ],
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “cycle~”,
“patching_rect” : [ 328.0, 52.0, 44.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-63″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “*~ 2.”,
“patching_rect” : [ 291.0, 230.0, 35.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-61″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “number~”,
“patching_rect” : [ 333.0, 322.0, 76.0, 20.0 ],
“ft1″ : 5.0,
“numinlets” : 2,
“fontname” : “Arial”,
“sig” : 0.0,
“mode” : 2,
“numoutlets” : 2,
“id” : “obj-57″,
“presentation_rect” : [ 316.0, 210.0, 0.0, 0.0 ],
“outlettype” : [ "signal", "float" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “/~ 2.”,
“patching_rect” : [ 302.0, 297.0, 33.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-56″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “+~ 1.”,
“patching_rect” : [ 287.0, 261.0, 37.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-55″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “preset”,
“patching_rect” : [ 56.0, 182.0, 100.0, 40.0 ],
“numinlets” : 1,
“numoutlets” : 4,
“id” : “obj-54″,
“outlettype” : [ "preset", "int", "preset", "int" ],
“preset_data” : [ {
"number" : 1,
"data" : [ 5, "obj-7", "flonum", "float", 1.0, 5, "obj-45", "flonum", "float", 1.0, 5, "obj-47", "number~", "list", 0.0, 5, "obj-52", "flonum", "float", 22050.0 ]
}
, {
“number” : 2,
“data” : [ 5, "obj-7", "flonum", "float", 1.0, 5, "obj-45", "flonum", "float", 0.6, 5, "obj-47", "number~", "list", 0.0, 5, "obj-52", "flonum", "float", 1126.0, 5, "obj-57", "number~", "list", 0.0, 5, "obj-62", "flonum", "float", 0.29, 5, "obj-65", "number~", "list", 0.0 ]
}
, {
“number” : 3,
“data” : [ 5, "obj-7", "flonum", "float", 1.0, 5, "obj-45", "flonum", "float", 5.0, 5, "obj-47", "number~", "list", 0.0, 5, "obj-52", "flonum", "float", 1126.0, 5, "obj-57", "number~", "list", 0.0, 5, "obj-62", "flonum", "float", 1.0, 5, "obj-65", "number~", "list", 0.0, 5, "obj-26", "toggle", "int", 0, 5, "obj-15", "toggle", "int", 0, 5, "obj-13", "toggle", "int", 0, 5, "obj-82", "toggle", "int", 0, 5, "obj-83", "flonum", "float", 0.25, 5, "obj-84", "flonum", "float", 1000.0 ]
}
]
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “cycle~”,
“patching_rect” : [ 416.0, 368.0, 44.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-53″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “flonum”,
“patching_rect” : [ 428.0, 339.0, 91.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-52″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “sah~”,
“patching_rect” : [ 297.0, 411.0, 36.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-51″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “scope~”,
“patching_rect” : [ 269.0, 579.0, 360.0, 104.0 ],
“numinlets” : 2,
“numoutlets” : 0,
“id” : “obj-50″
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “*~ 1000.”,
“patching_rect” : [ 287.0, 357.0, 54.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-49″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “number~”,
“patching_rect” : [ 418.0, 418.0, 110.0, 20.0 ],
“ft1″ : 5.0,
“numinlets” : 2,
“fontname” : “Arial”,
“sig” : 0.0,
“mode” : 2,
“numoutlets” : 2,
“id” : “obj-47″,
“presentation_rect” : [ 393.0, 326.0, 0.0, 0.0 ],
“outlettype” : [ "signal", "float" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “flonum”,
“patching_rect” : [ 245.0, 18.0, 50.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-45″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “saw~”,
“patching_rect” : [ 251.0, 52.0, 38.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-43″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “flonum”,
“patching_rect” : [ 111.0, 502.0, 50.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-7″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “ezdac~”,
“varname” : “autohelp_dac”,
“local” : 1,
“patching_rect” : [ 56.0, 567.0, 45.0, 45.0 ],
“numinlets” : 2,
“numoutlets” : 0,
“id” : “obj-3″
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “*~ 0.2″,
“patching_rect” : [ 56.0, 530.0, 74.0, 20.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-4″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “message”,
“text” : “read”,
“patching_rect” : [ 462.0, 221.0, 34.0, 18.0 ],
“numinlets” : 2,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-27″,
“outlettype” : [ "" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “buffer~ playme 1000″,
“patching_rect” : [ 462.0, 249.0, 117.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 2,
“id” : “obj-28″,
“outlettype” : [ "float", "bang" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “newobj”,
“text” : “play~ recme”,
“patching_rect” : [ 56.0, 466.0, 74.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 1,
“id” : “obj-34″,
“outlettype” : [ "signal" ],
“fontsize” : 11.595187
}

}
, {
“box” : {
“maxclass” : “comment”,
“text” : “open a sample file”,
“patching_rect” : [ 496.0, 221.0, 105.0, 20.0 ],
“numinlets” : 1,
“fontname” : “Arial”,
“numoutlets” : 0,
“id” : “obj-42″,
“fontsize” : 11.595187
}

}
],
“lines” : [ {
"patchline" : {
"source" : [ "obj-56", 0 ],
“destination” : [ "obj-49", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-49", 0 ],
“destination” : [ "obj-51", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-49", 0 ],
“destination” : [ "obj-47", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-49", 0 ],
“destination” : [ "obj-34", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-84", 0 ],
“destination” : [ "obj-49", 1 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-64", 0 ],
“destination” : [ "obj-61", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-64", 0 ],
“destination” : [ "obj-65", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-43", 0 ],
“destination” : [ "obj-64", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-83", 0 ],
“destination” : [ "obj-63", 1 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-82", 0 ],
“destination” : [ "obj-26", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-82", 0 ],
“destination” : [ "obj-3", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-4", 0 ],
“destination” : [ "obj-50", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-34", 0 ],
“destination” : [ "obj-4", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-63", 0 ],
“destination” : [ "obj-78", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-79", 0 ],
“destination” : [ "obj-30", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-15", 0 ],
“destination” : [ "obj-16", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-26", 0 ],
“destination” : [ "obj-30", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-17", 0 ],
“destination” : [ "obj-30", 0 ],
“hidden” : 0,
“midpoints” : [ 522.5, 180.0, 748.5, 180.0 ]
}

}
, {
“patchline” : {
“source” : [ "obj-14", 0 ],
“destination” : [ "obj-30", 0 ],
“hidden” : 0,
“midpoints” : [ 497.5, 180.0, 748.5, 180.0 ]
}

}
, {
“patchline” : {
“source” : [ "obj-16", 0 ],
“destination” : [ "obj-30", 0 ],
“hidden” : 0,
“midpoints” : [ 471.5, 180.0, 748.5, 180.0 ]
}

}
, {
“patchline” : {
“source” : [ "obj-13", 0 ],
“destination” : [ "obj-14", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-62", 0 ],
“destination” : [ "obj-63", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-61", 0 ],
“destination” : [ "obj-55", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-45", 0 ],
“destination” : [ "obj-43", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-55", 0 ],
“destination” : [ "obj-56", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-56", 0 ],
“destination” : [ "obj-57", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-53", 0 ],
“destination” : [ "obj-51", 1 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-52", 0 ],
“destination” : [ "obj-53", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-27", 0 ],
“destination” : [ "obj-28", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-7", 0 ],
“destination” : [ "obj-4", 1 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
, {
“patchline” : {
“source” : [ "obj-4", 0 ],
“destination” : [ "obj-3", 1 ],
“hidden” : 0,
“midpoints” : [ 65.5, 558.0, 91.5, 558.0 ]
}

}
, {
“patchline” : {
“source” : [ "obj-4", 0 ],
“destination” : [ "obj-3", 0 ],
“hidden” : 0,
“midpoints” : [ ]
}

}
]
}

#61420
Jan 29, 2012 at 7:00pm

Hello,

You might get more responses if you use copy compressed from the edit menu instead of normal copy when you want to post patches to the forum. I show 2 ways to do wavetable. The first is using cycle~ and the second uses upsampling in a poly~. You have to download both patchs and save them into the same folder.

Save the first one as anything you like:

– Pasted Max Patch, click to expand. –

Save the second one as wavepoly

– Pasted Max Patch, click to expand. –

Load up the first one from the folder and it should automatically load the poly~ subpatch. Hope it helps.

#221553

You must be logged in to reply to this topic.