initial commit
This commit is contained in:
commit
15beba29f2
BIN
Move to Max 8 App Folder/msvcp120.dll
Normal file
BIN
Move to Max 8 App Folder/msvcp120.dll
Normal file
Binary file not shown.
BIN
Move to Max 8 App Folder/msvcp140.dll
Executable file
BIN
Move to Max 8 App Folder/msvcp140.dll
Executable file
Binary file not shown.
BIN
Move to Max 8 App Folder/msvcr120.dll
Normal file
BIN
Move to Max 8 App Folder/msvcr120.dll
Normal file
Binary file not shown.
BIN
Move to Max 8 App Folder/vccorlib140.dll
Executable file
BIN
Move to Max 8 App Folder/vccorlib140.dll
Executable file
Binary file not shown.
BIN
Move to Max 8 App Folder/vcruntime140.dll
Executable file
BIN
Move to Max 8 App Folder/vcruntime140.dll
Executable file
Binary file not shown.
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.wav filter=lfs diff=lfs merge=lfs -text
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
.DS_Store
|
921
DJsterModulatorsMockup.maxpat
Normal file
921
DJsterModulatorsMockup.maxpat
Normal file
@ -0,0 +1,921 @@
|
||||
{
|
||||
"patcher" : {
|
||||
"fileversion" : 1,
|
||||
"appversion" : {
|
||||
"major" : 8,
|
||||
"minor" : 6,
|
||||
"revision" : 2,
|
||||
"architecture" : "x64",
|
||||
"modernui" : 1
|
||||
}
|
||||
,
|
||||
"classnamespace" : "box",
|
||||
"rect" : [ 282.0, 104.0, 865.0, 554.0 ],
|
||||
"bglocked" : 0,
|
||||
"openinpresentation" : 0,
|
||||
"default_fontsize" : 12.0,
|
||||
"default_fontface" : 0,
|
||||
"default_fontname" : "Arial",
|
||||
"gridonopen" : 1,
|
||||
"gridsize" : [ 15.0, 15.0 ],
|
||||
"gridsnaponopen" : 1,
|
||||
"objectsnaponopen" : 1,
|
||||
"statusbarvisible" : 2,
|
||||
"toolbarvisible" : 1,
|
||||
"lefttoolbarpinned" : 0,
|
||||
"toptoolbarpinned" : 0,
|
||||
"righttoolbarpinned" : 0,
|
||||
"bottomtoolbarpinned" : 0,
|
||||
"toolbars_unpinned_last_save" : 0,
|
||||
"tallnewobj" : 0,
|
||||
"boxanimatetime" : 200,
|
||||
"enablehscroll" : 1,
|
||||
"enablevscroll" : 1,
|
||||
"devicewidth" : 0.0,
|
||||
"description" : "",
|
||||
"digest" : "",
|
||||
"tags" : "",
|
||||
"style" : "",
|
||||
"subpatcher_template" : "",
|
||||
"assistshowspatchername" : 0,
|
||||
"boxes" : [ {
|
||||
"box" : {
|
||||
"id" : "obj-55",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 3,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "", "", "" ],
|
||||
"patching_rect" : [ 98.0, 178.0, 205.0, 22.0 ],
|
||||
"text" : "routepass attenuation melody_scope"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-54",
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 191.0, 213.0, 103.0, 22.0 ],
|
||||
"text" : "melody_scope 10"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-53",
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 189.0, 13.0, 103.0, 22.0 ],
|
||||
"presentation_linecount" : 2,
|
||||
"text" : "melody_scope 12"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-52",
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 98.0, 213.0, 85.0, 22.0 ],
|
||||
"text" : "attenuation 57"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-51",
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 98.0, 13.0, 85.0, 22.0 ],
|
||||
"text" : "attenuation 70"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"bgmode" : 0,
|
||||
"border" : 0,
|
||||
"clickthrough" : 0,
|
||||
"embed" : 1,
|
||||
"enablehscroll" : 0,
|
||||
"enablevscroll" : 0,
|
||||
"id" : "obj-49",
|
||||
"lockeddragscroll" : 0,
|
||||
"lockedsize" : 0,
|
||||
"maxclass" : "bpatcher",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"offset" : [ -42.0, -87.0 ],
|
||||
"outlettype" : [ "" ],
|
||||
"patcher" : {
|
||||
"fileversion" : 1,
|
||||
"appversion" : {
|
||||
"major" : 8,
|
||||
"minor" : 6,
|
||||
"revision" : 2,
|
||||
"architecture" : "x64",
|
||||
"modernui" : 1
|
||||
}
|
||||
,
|
||||
"classnamespace" : "box",
|
||||
"rect" : [ 59.0, 119.0, 640.0, 480.0 ],
|
||||
"bglocked" : 0,
|
||||
"openinpresentation" : 0,
|
||||
"default_fontsize" : 12.0,
|
||||
"default_fontface" : 0,
|
||||
"default_fontname" : "Arial",
|
||||
"gridonopen" : 1,
|
||||
"gridsize" : [ 15.0, 15.0 ],
|
||||
"gridsnaponopen" : 1,
|
||||
"objectsnaponopen" : 1,
|
||||
"statusbarvisible" : 2,
|
||||
"toolbarvisible" : 1,
|
||||
"lefttoolbarpinned" : 0,
|
||||
"toptoolbarpinned" : 0,
|
||||
"righttoolbarpinned" : 0,
|
||||
"bottomtoolbarpinned" : 0,
|
||||
"toolbars_unpinned_last_save" : 0,
|
||||
"tallnewobj" : 0,
|
||||
"boxanimatetime" : 200,
|
||||
"enablehscroll" : 1,
|
||||
"enablevscroll" : 1,
|
||||
"devicewidth" : 0.0,
|
||||
"description" : "",
|
||||
"digest" : "",
|
||||
"tags" : "",
|
||||
"style" : "",
|
||||
"subpatcher_template" : "",
|
||||
"assistshowspatchername" : 0,
|
||||
"boxes" : [ {
|
||||
"box" : {
|
||||
"comment" : "",
|
||||
"id" : "obj-6",
|
||||
"index" : 1,
|
||||
"maxclass" : "outlet",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 63.5, 337.0, 30.0, 30.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"comment" : "",
|
||||
"id" : "obj-2",
|
||||
"index" : 1,
|
||||
"maxclass" : "inlet",
|
||||
"numinlets" : 0,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 56.0, 21.0, 30.0, 30.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-48",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 511.0, 100.0, 5.0, 88.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-36",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 50.0, 100.0, 5.0, 88.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-35",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 50.0, 183.0, 556.0, 5.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-34",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 50.0, 154.0, 556.0, 5.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-33",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 50.0, 123.0, 556.0, 5.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-32",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 606.0, 100.0, 5.0, 88.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-29",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 338.0, 100.0, 5.0, 88.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-28",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 188.0, 100.0, 5.0, 88.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-27",
|
||||
"maxclass" : "live.line",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 113.0, 100.0, 5.0, 88.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"fontsize" : 16.0,
|
||||
"id" : "obj-19",
|
||||
"maxclass" : "live.menu",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "", "", "float" ],
|
||||
"parameter_enable" : 1,
|
||||
"patching_rect" : [ 116.0, 157.0, 70.0, 23.0 ],
|
||||
"pictures" : [ "sine.svg", "saw.svg", "square.svg", "up.svg", "updown.svg", "down.svg", "random.svg" ],
|
||||
"remapsvgcolors" : 1,
|
||||
"saved_attribute_attributes" : {
|
||||
"valueof" : {
|
||||
"parameter_enum" : [ "sine", "saw", "square", "up", "updown", "down", "random" ],
|
||||
"parameter_initial" : [ 0 ],
|
||||
"parameter_longname" : "live.tab[1]",
|
||||
"parameter_mmax" : 6,
|
||||
"parameter_modmode" : 0,
|
||||
"parameter_shortname" : "live.tab[1]",
|
||||
"parameter_type" : 2,
|
||||
"parameter_unitstyle" : 9
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"usepicture" : 1,
|
||||
"varname" : "live.menu[1]"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"activebgcolor" : [ 0.839216, 0.866667, 0.898039, 1.0 ],
|
||||
"id" : "obj-20",
|
||||
"maxclass" : "live.text",
|
||||
"mode" : 0,
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"parameter_enable" : 1,
|
||||
"patching_rect" : [ 559.0, 159.0, 19.0, 19.0 ],
|
||||
"presentation" : 1,
|
||||
"presentation_rect" : [ 603.0, 81.0, 19.0, 19.0 ],
|
||||
"saved_attribute_attributes" : {
|
||||
"activebgcolor" : {
|
||||
"expression" : ""
|
||||
}
|
||||
,
|
||||
"valueof" : {
|
||||
"parameter_enum" : [ "val1", "val2" ],
|
||||
"parameter_invisible" : 2,
|
||||
"parameter_longname" : "live.text[2]",
|
||||
"parameter_mmax" : 1,
|
||||
"parameter_modmode" : 0,
|
||||
"parameter_shortname" : "live.text",
|
||||
"parameter_type" : 2
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"text" : "-",
|
||||
"varname" : "live.text[2]"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"activebgcolor" : [ 0.839216, 0.866667, 0.898039, 1.0 ],
|
||||
"id" : "obj-21",
|
||||
"maxclass" : "live.text",
|
||||
"mode" : 0,
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"parameter_enable" : 1,
|
||||
"patching_rect" : [ 535.0, 159.0, 19.0, 19.0 ],
|
||||
"presentation" : 1,
|
||||
"presentation_rect" : [ 579.0, 81.0, 19.0, 19.0 ],
|
||||
"saved_attribute_attributes" : {
|
||||
"activebgcolor" : {
|
||||
"expression" : ""
|
||||
}
|
||||
,
|
||||
"valueof" : {
|
||||
"parameter_enum" : [ "val1", "val2" ],
|
||||
"parameter_invisible" : 2,
|
||||
"parameter_longname" : "live.text[3]",
|
||||
"parameter_mmax" : 1,
|
||||
"parameter_modmode" : 0,
|
||||
"parameter_shortname" : "live.text",
|
||||
"parameter_type" : 2
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"text" : "+",
|
||||
"varname" : "live.text[3]"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"format" : 6,
|
||||
"id" : "obj-22",
|
||||
"maxclass" : "flonum",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 456.0, 157.0, 50.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-23",
|
||||
"items" : "LFO",
|
||||
"maxclass" : "umenu",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "int", "", "" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 55.0, 157.0, 56.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"format" : 6,
|
||||
"id" : "obj-24",
|
||||
"maxclass" : "flonum",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 400.0, 157.0, 50.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"format" : 6,
|
||||
"id" : "obj-25",
|
||||
"maxclass" : "flonum",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 343.0, 157.0, 50.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-26",
|
||||
"items" : [ "attenuation", ",", "chordal_weight", ",", "dynamics", ",", "event_length", ",", "event_length_display_style", ",", "eventfulness", ",", "global_transport_active", ",", "harmoniclarity", ",", "instance", ",", "melodic_cohesion", ",", "melody_scope", ",", "metriclarity", ",", "ostinato", ",", "ostinato-buffer", ",", "outset_pulses", ",", "overlap", ",", "pitch_center", ",", "pitch_range", ",", "precision", ",", "pulse_length", ",", "scale", ",", "silent_downbeat", ",", "sorted", ",", "stream", ",", "subdivision", ",", "tempo", ",", "timesig_denominator", ",", "timesig_numerator", ",", "tonic_pitch", ",", "use_transport" ],
|
||||
"maxclass" : "umenu",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "int", "", "" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 192.0, 157.0, 144.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"fontsize" : 16.0,
|
||||
"id" : "obj-7",
|
||||
"maxclass" : "live.menu",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "", "", "float" ],
|
||||
"parameter_enable" : 1,
|
||||
"patching_rect" : [ 116.0, 128.0, 70.0, 23.0 ],
|
||||
"pictures" : [ "sine.svg", "saw.svg", "square.svg", "up.svg", "updown.svg", "down.svg", "random.svg" ],
|
||||
"remapsvgcolors" : 1,
|
||||
"saved_attribute_attributes" : {
|
||||
"valueof" : {
|
||||
"parameter_enum" : [ "sine", "saw", "square", "up", "updown", "down", "random" ],
|
||||
"parameter_initial" : [ 0 ],
|
||||
"parameter_longname" : "live.tab[4]",
|
||||
"parameter_mmax" : 6,
|
||||
"parameter_modmode" : 0,
|
||||
"parameter_shortname" : "live.tab[1]",
|
||||
"parameter_type" : 2,
|
||||
"parameter_unitstyle" : 9
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"usepicture" : 1,
|
||||
"varname" : "live.menu"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-17",
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 117.0, 101.0, 65.0, 20.0 ],
|
||||
"text" : "Function"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-16",
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 511.0, 101.0, 95.0, 20.0 ],
|
||||
"text" : "Add/remove line"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"activebgcolor" : [ 0.839216, 0.866667, 0.898039, 1.0 ],
|
||||
"id" : "obj-80",
|
||||
"maxclass" : "live.text",
|
||||
"mode" : 0,
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"parameter_enable" : 1,
|
||||
"patching_rect" : [ 559.0, 130.0, 19.0, 19.0 ],
|
||||
"presentation" : 1,
|
||||
"presentation_rect" : [ 242.5, 140.0, 19.0, 19.0 ],
|
||||
"saved_attribute_attributes" : {
|
||||
"activebgcolor" : {
|
||||
"expression" : ""
|
||||
}
|
||||
,
|
||||
"valueof" : {
|
||||
"parameter_enum" : [ "val1", "val2" ],
|
||||
"parameter_invisible" : 2,
|
||||
"parameter_longname" : "live.text[1]",
|
||||
"parameter_mmax" : 1,
|
||||
"parameter_modmode" : 0,
|
||||
"parameter_shortname" : "live.text",
|
||||
"parameter_type" : 2
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"text" : "-",
|
||||
"varname" : "live.text"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"activebgcolor" : [ 0.839216, 0.866667, 0.898039, 1.0 ],
|
||||
"id" : "obj-79",
|
||||
"maxclass" : "live.text",
|
||||
"mode" : 0,
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"parameter_enable" : 1,
|
||||
"patching_rect" : [ 535.0, 130.0, 19.0, 19.0 ],
|
||||
"presentation" : 1,
|
||||
"presentation_rect" : [ 216.5, 140.0, 19.0, 19.0 ],
|
||||
"saved_attribute_attributes" : {
|
||||
"activebgcolor" : {
|
||||
"expression" : ""
|
||||
}
|
||||
,
|
||||
"valueof" : {
|
||||
"parameter_enum" : [ "val1", "val2" ],
|
||||
"parameter_invisible" : 2,
|
||||
"parameter_longname" : "live.text",
|
||||
"parameter_mmax" : 1,
|
||||
"parameter_modmode" : 0,
|
||||
"parameter_shortname" : "live.text",
|
||||
"parameter_type" : 2
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"text" : "+",
|
||||
"varname" : "live.text[1]"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"format" : 6,
|
||||
"id" : "obj-14",
|
||||
"maxclass" : "flonum",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 456.0, 128.0, 50.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-11",
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 382.0, 101.0, 86.0, 20.0 ],
|
||||
"text" : "Values (f, a, p)"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-10",
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 193.0, 101.0, 65.0, 20.0 ],
|
||||
"text" : "Parameter"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-9",
|
||||
"maxclass" : "comment",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 0,
|
||||
"patching_rect" : [ 56.0, 101.0, 45.0, 20.0 ],
|
||||
"text" : "Mode"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-5",
|
||||
"items" : "LFO",
|
||||
"maxclass" : "umenu",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "int", "", "" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 55.0, 128.0, 56.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"format" : 6,
|
||||
"id" : "obj-4",
|
||||
"maxclass" : "flonum",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 400.0, 128.0, 50.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"format" : 6,
|
||||
"id" : "obj-3",
|
||||
"maxclass" : "flonum",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 343.0, 128.0, 50.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-1",
|
||||
"items" : [ "attenuation", ",", "chordal_weight", ",", "dynamics", ",", "event_length", ",", "event_length_display_style", ",", "eventfulness", ",", "global_transport_active", ",", "harmoniclarity", ",", "instance", ",", "melodic_cohesion", ",", "melody_scope", ",", "metriclarity", ",", "ostinato", ",", "ostinato-buffer", ",", "outset_pulses", ",", "overlap", ",", "pitch_center", ",", "pitch_range", ",", "precision", ",", "pulse_length", ",", "scale", ",", "silent_downbeat", ",", "sorted", ",", "stream", ",", "subdivision", ",", "tempo", ",", "timesig_denominator", ",", "timesig_numerator", ",", "tonic_pitch", ",", "use_transport" ],
|
||||
"maxclass" : "umenu",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 3,
|
||||
"outlettype" : [ "int", "", "" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 192.0, 128.0, 144.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
],
|
||||
"lines" : [ ]
|
||||
}
|
||||
,
|
||||
"patching_rect" : [ 98.0, 50.0, 578.0, 110.0 ],
|
||||
"viewvisibility" : 1
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-47",
|
||||
"maxclass" : "button",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "bang" ],
|
||||
"parameter_enable" : 0,
|
||||
"patching_rect" : [ 380.0, 401.0, 24.0, 24.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-45",
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 236.0, 524.0, 427.0, 22.0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-43",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"patching_rect" : [ 426.0, 432.0, 47.0, 22.0 ],
|
||||
"text" : "zl.nth 2"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-42",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 1,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 426.0, 395.0, 147.0, 22.0 ],
|
||||
"text" : "fromsymbol @separator ::"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-41",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"patching_rect" : [ 426.0, 359.0, 47.0, 22.0 ],
|
||||
"text" : "zl.iter 1"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-40",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 2,
|
||||
"outlettype" : [ "", "" ],
|
||||
"patching_rect" : [ 426.0, 473.0, 68.0, 22.0 ],
|
||||
"text" : "zl.group 30"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-39",
|
||||
"maxclass" : "message",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 1,
|
||||
"outlettype" : [ "" ],
|
||||
"patching_rect" : [ 405.0, 286.0, 50.0, 22.0 ],
|
||||
"text" : "getkeys"
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"box" : {
|
||||
"id" : "obj-37",
|
||||
"maxclass" : "newobj",
|
||||
"numinlets" : 2,
|
||||
"numoutlets" : 5,
|
||||
"outlettype" : [ "dictionary", "", "", "", "" ],
|
||||
"patching_rect" : [ 405.0, 318.0, 61.0, 22.0 ],
|
||||
"saved_object_attributes" : {
|
||||
"embed" : 0,
|
||||
"legacy" : 0,
|
||||
"parameter_enable" : 0,
|
||||
"parameter_mappable" : 0
|
||||
}
|
||||
,
|
||||
"text" : "dict"
|
||||
}
|
||||
|
||||
}
|
||||
],
|
||||
"lines" : [ {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-41", 0 ],
|
||||
"source" : [ "obj-37", 2 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-37", 0 ],
|
||||
"source" : [ "obj-39", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-45", 1 ],
|
||||
"source" : [ "obj-40", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-42", 0 ],
|
||||
"source" : [ "obj-41", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-43", 0 ],
|
||||
"source" : [ "obj-42", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-40", 0 ],
|
||||
"source" : [ "obj-43", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-40", 0 ],
|
||||
"source" : [ "obj-47", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-55", 0 ],
|
||||
"source" : [ "obj-49", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-49", 0 ],
|
||||
"source" : [ "obj-51", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-49", 0 ],
|
||||
"source" : [ "obj-53", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-52", 0 ],
|
||||
"source" : [ "obj-55", 0 ]
|
||||
}
|
||||
|
||||
}
|
||||
, {
|
||||
"patchline" : {
|
||||
"destination" : [ "obj-54", 0 ],
|
||||
"source" : [ "obj-55", 1 ]
|
||||
}
|
||||
|
||||
}
|
||||
],
|
||||
"parameters" : {
|
||||
"obj-49::obj-19" : [ "live.tab[1]", "live.tab[1]", 0 ],
|
||||
"obj-49::obj-20" : [ "live.text[2]", "live.text", 0 ],
|
||||
"obj-49::obj-21" : [ "live.text[3]", "live.text", 0 ],
|
||||
"obj-49::obj-7" : [ "live.tab[4]", "live.tab[1]", 0 ],
|
||||
"obj-49::obj-79" : [ "live.text", "live.text", 0 ],
|
||||
"obj-49::obj-80" : [ "live.text[1]", "live.text", 0 ],
|
||||
"parameterbanks" : {
|
||||
"0" : {
|
||||
"index" : 0,
|
||||
"name" : "",
|
||||
"parameters" : [ "-", "-", "-", "-", "-", "-", "-", "-" ]
|
||||
}
|
||||
|
||||
}
|
||||
,
|
||||
"inherited_shortname" : 1
|
||||
}
|
||||
,
|
||||
"dependency_cache" : [ {
|
||||
"name" : "down.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "random.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "saw.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "sine.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "square.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "up.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
, {
|
||||
"name" : "updown.svg",
|
||||
"bootpath" : "C74:/media/max/picts/m4l-picts",
|
||||
"type" : "svg",
|
||||
"implicit" : 1
|
||||
}
|
||||
],
|
||||
"autosave" : 0
|
||||
}
|
||||
|
||||
}
|
8260
HSSPieces.json
Normal file
8260
HSSPieces.json
Normal file
File diff suppressed because it is too large
Load Diff
7182
HSSPiecesNN.json
Normal file
7182
HSSPiecesNN.json
Normal file
File diff suppressed because it is too large
Load Diff
16682
Presets/DefaultSetting.json
Normal file
16682
Presets/DefaultSetting.json
Normal file
File diff suppressed because it is too large
Load Diff
17187
Presets/Georg-2024-05-23.json
Normal file
17187
Presets/Georg-2024-05-23.json
Normal file
File diff suppressed because it is too large
Load Diff
16668
Presets/Georg-2024-06-12.json
Normal file
16668
Presets/Georg-2024-06-12.json
Normal file
File diff suppressed because it is too large
Load Diff
6722
Presets/GeorgNetworkFile.txt
Normal file
6722
Presets/GeorgNetworkFile.txt
Normal file
File diff suppressed because it is too large
Load Diff
26892
Presets/GeorgNetworkFile2.txt
Normal file
26892
Presets/GeorgNetworkFile2.txt
Normal file
File diff suppressed because it is too large
Load Diff
16
README.md
Normal file
16
README.md
Normal file
@ -0,0 +1,16 @@
|
||||
# healing-soundscapes
|
||||
|
||||
A repository of patches for the intelligent speaker system to be used in hospital waiting areas.
|
||||
The patches require the installation of [drawsocket](https://github.com/drawsocket) and [MaxScore](http://computermusicnotation.com)
|
||||
|
||||
<img width="1624" alt="image" src="https://github.com/HfMT-ZM4/healing-soundscapes/assets/17442406/0251cad9-4f36-44f2-9e85-ed5c2500f3e2">
|
||||
|
||||
Instructions:
|
||||
1. When running drawsocket the first time, install resources by clicking on script npm install **drawsocket**
|
||||
2. Start drawsocket server by clicking on **script start**
|
||||
3. Dump html page by clicking on the button in the upper left-hand corner
|
||||
4. Open the browser interface by clicking on **\[p browser\]** or navigating to the URL given in the Max window in an external web browser or device (add /1 after the URL, e.g. 192.168.178.2:3002/1)
|
||||
5. Open your soundbank or create one
|
||||
6. Set the virtual sound sources to the desired positions
|
||||
7. Create a number of presets for your piece after selecting DJster parameter settings and
|
||||
8. Save presets to disk
|
82018
create_webinterface.maxpat
Normal file
82018
create_webinterface.maxpat
Normal file
File diff suppressed because it is too large
Load Diff
744
djster_webcontrol.js
Normal file
744
djster_webcontrol.js
Normal file
@ -0,0 +1,744 @@
|
||||
inlets = 2;
|
||||
outlets = 2;
|
||||
|
||||
var pieces = ["Warm Rain in the Morning", "Thunderstorm in the Evening"];
|
||||
var modes = ["Selected Piece", "Playlist"];
|
||||
var instruments = ["none", "Bell-1.instr", "Bell-2.instr", "Hi_Voweler.instr", "Dreamers.instr", "Kalimbell.instr", "Wave_4.instr", "Dark_Monkey.instr", "Digi_Vocal.instr", "Mini_Moog.instr", "Synth_1980.instr", "E-Pad.instr", "Equinox.instr", "Galaxis.instr", "Venus_Pad.instr", "Celeste.instr", "percussion_glockenspiel_Glockenspiel-beaters_ordinario.instr", "Marimba.instr", "Stopped_Piano.instr", "Cymbales_Antiques.instr", "FretSound.instr", "Bandoneon.instr"];
|
||||
var scales = ["Major", "Minor", "Dorian", "Mixolydian", "Lydian", "Phrygian", "Locrian", "Whole Tone", "Half-whole Dim.", "Whole-half Dim.", "Minor Blues", "Minor Pentatonic", "Major Pentatonic", "Harmonic Minor", "Harmonic Major", "Dorian #4", "Phrygian Dominant", "Melodic Minor", "Lydian Augmented", "Lydian Dominant", "Super Locrian", "8-Tone Spanish", "Bhairav", "Hungarian Minor", "Hirajoshi", "In-sen", "Iwato", "Kumoi", "Pelog Selisir", "Pelog Tembung", "Messiaen 3", "Messiaen 4", "Messiaen 5", "Messiaen 6", "Messiaen 7", "Chromatic"];
|
||||
var meters = ["1", "2", "3", "2 2", "2+3", "3+2", "2 3", "3 2", "2+2+3", "2+3+2", "3+2+2", "2 2 2", "2+3+3", "3+2+3", "3+3+2", "3 3", "2 5", "11", "3 2 2", "2 3 2", "2 2 3"];
|
||||
var css = [];
|
||||
var elements = [];
|
||||
var body = [];
|
||||
var svg = [];
|
||||
var html = {
|
||||
"*" : [{
|
||||
"key" : "css",
|
||||
"val" : css
|
||||
},
|
||||
{
|
||||
"key" : "html",
|
||||
"val" : elements
|
||||
},
|
||||
{
|
||||
"key" : "svg",
|
||||
"val" : svg
|
||||
},
|
||||
{
|
||||
"key" : "function",
|
||||
"val" : body
|
||||
}]
|
||||
};
|
||||
var dict = new Dict;
|
||||
var checkboxes = {};
|
||||
for (var i = 0; i < 5; i++) {
|
||||
checkboxes[i] = {};
|
||||
if (i == 0) checkboxes[i]["play"] = {};
|
||||
else {
|
||||
checkboxes[i]["stream"] = {};
|
||||
checkboxes[i]["sorted"] = {};
|
||||
checkboxes[i]["overlap"] = {};
|
||||
}
|
||||
}
|
||||
var offset = 128;
|
||||
var active = "royalblue";
|
||||
var nonactive = "lightsteelblue";
|
||||
var alert = "red";
|
||||
var textcolor = "#737373";
|
||||
var background = "ivory";
|
||||
|
||||
function setInstruments()
|
||||
{
|
||||
instruments = arrayfromargs(arguments);
|
||||
bang();
|
||||
}
|
||||
|
||||
function bang()
|
||||
{
|
||||
|
||||
css.push({
|
||||
"selector" : ".menu",
|
||||
"props" : {
|
||||
"background-color" : background,
|
||||
"border" : "1px solid " + active,
|
||||
"color" : active,
|
||||
"padding" : "5px 5px",
|
||||
"text-align" : "center",
|
||||
"display" : "inline-block",
|
||||
"font-size" : "12px",
|
||||
"margin" : "4px 2px"
|
||||
}
|
||||
});
|
||||
css.push({
|
||||
"selector" : ".but",
|
||||
"props" : {
|
||||
"background-color" : background,
|
||||
"border" : "1px solid " + active,
|
||||
"color" : active,
|
||||
"padding" : "4px 0",
|
||||
"text-align" : "center",
|
||||
"display" : "inline-block",
|
||||
"font-size" : "11px",
|
||||
"margin" : "4px 0px",
|
||||
"width" : "20vw"
|
||||
}
|
||||
});
|
||||
css.push({
|
||||
"selector" : ".toggle",
|
||||
"props" : {
|
||||
"background-color" : background,
|
||||
"border" : "1px solid " + active,
|
||||
"color" : active,
|
||||
"padding" : "4px 7.8px",
|
||||
"margin" : "4px 0px"
|
||||
}
|
||||
});
|
||||
css.push({
|
||||
"selector" : ".slider",
|
||||
"props" : {
|
||||
"-webkit-appearance" : "none",
|
||||
"height" : "6px",
|
||||
"border-radius" : "6px",
|
||||
"background" : "#737373",
|
||||
"outline" : "none",
|
||||
"opacity" : 0.7,
|
||||
"-webkit-transition" : ".2s",
|
||||
"transition" : "opacity .2s"
|
||||
}
|
||||
});
|
||||
css.push({
|
||||
"selector" : ".slider:hover",
|
||||
"props" : {
|
||||
"opacity" : 1
|
||||
}
|
||||
});
|
||||
css.push({
|
||||
"selector" : ".slider::-webkit-slider-thumb",
|
||||
"props" : {
|
||||
"-webkit-appearance" : "none",
|
||||
"appearance" : "none",
|
||||
"width" : "20px",
|
||||
"height" : "20px",
|
||||
"border-radius" : "50%",
|
||||
"background" : active
|
||||
}
|
||||
});
|
||||
|
||||
svg.push({
|
||||
"new" : "rect",
|
||||
"id" : "background",
|
||||
"x" : 0,
|
||||
"y" : 0,
|
||||
"width" : "400px",//viewport width of iphone 8; iPhone 5: 320px
|
||||
"height" : "667px",//viewport height of iphone 8; iPhone 5: 568px
|
||||
"fill" : background,
|
||||
});
|
||||
|
||||
//elements = [];
|
||||
addButton("forms", "basic", "Basic Mode", "color:" + active, "document.getElementById('basicDIV').style.display='block';document.getElementById('expertDIV').style.display='none';document.getElementById('roomDIV').style.display='none';document.getElementById('spat').style.display='none';document.getElementById('systemDIV').style.display='none';document.getElementById('manualDIV').style.display='none';document.getElementById('basic').style['color']='" + active + "';document.getElementById('expert').style['color']='" + nonactive + "';document.getElementById('room').style['color']='" + nonactive + "';document.getElementById('system').style['color']='" + nonactive + "';document.getElementById('manual').style['color']='" + nonactive + "';");
|
||||
addButton("forms", "expert", "Expert Mode", "color:" + nonactive, "document.getElementById('basicDIV').style.display='none';document.getElementById('expertDIV').style.display='block';document.getElementById('roomDIV').style.display='none';document.getElementById('spat').style.display='none';document.getElementById('systemDIV').style.display='none';document.getElementById('manualDIV').style.display='none';document.getElementById('basic').style['color']='" + nonactive + "';document.getElementById('expert').style['color']='" + active + "';document.getElementById('room').style['color']='" + nonactive + "';document.getElementById('system').style['color']='" + nonactive + "';document.getElementById('manual').style['color']='" + nonactive + "';");
|
||||
addButton("forms", "room", "Room Settings", "width:24vw;color:" + nonactive, "document.getElementById('basicDIV').style.display='none';document.getElementById('expertDIV').style.display='none';document.getElementById('roomDIV').style.display='block';document.getElementById('spat').style.display='block';document.getElementById('systemDIV').style.display='none';document.getElementById('manualDIV').style.display='none';document.getElementById('basic').style['color']='" + nonactive + "';document.getElementById('expert').style['color']='" + nonactive + "';document.getElementById('room').style['color']='" + active + "';document.getElementById('system').style['color']='" + nonactive + "';document.getElementById('manual').style['color']='" + nonactive + "';");
|
||||
addButton("forms", "system", "System", "width:18vw;color:" + nonactive, "document.getElementById('basicDIV').style.display='none';document.getElementById('expertDIV').style.display='none';document.getElementById('roomDIV').style.display='none';document.getElementById('spat').style.display='none';document.getElementById('systemDIV').style.display='block';document.getElementById('manualDIV').style.display='none';document.getElementById('basic').style['bcolor']='" + nonactive + "';document.getElementById('expert').style['color']='" + nonactive + "';document.getElementById('room').style['color']='" + nonactive + "';document.getElementById('system').style['color']='" + active + "';document.getElementById('manual').style['color']='" + nonactive + "';");
|
||||
addButton("forms", "manual", "Manual", "width:18vw;color:" + nonactive, "document.getElementById('basicDIV').style.display='none';document.getElementById('expertDIV').style.display='none';document.getElementById('roomDIV').style.display='none';document.getElementById('spat').style.display='none';document.getElementById('systemDIV').style.display='none';document.getElementById('manualDIV').style.display='block';document.getElementById('basic').style['color']='" + nonactive + "';document.getElementById('expert').style['color']='" + nonactive + "';document.getElementById('room').style['color']='" + nonactive + "';document.getElementById('system').style['color']='" + nonactive + "';document.getElementById('manual').style['color']='" + active + "';");
|
||||
|
||||
addDiv("forms", "basicDIV", "display:block");
|
||||
addDiv("forms", "expertDIV", "display:none");
|
||||
addDiv("forms", "roomDIV", "display:none");
|
||||
addDiv("forms", "systemDIV", "display:none");
|
||||
addDiv("forms", "manualDIV", "display:none");
|
||||
addDiv("expertDIV", "player0", "display:block");
|
||||
addDiv("expertDIV", "player1", "display:none");
|
||||
addDiv("expertDIV", "player2", "display:none");
|
||||
addDiv("expertDIV", "player3", "display:none");
|
||||
|
||||
/*
|
||||
elements.push(
|
||||
{
|
||||
"new" : "p",
|
||||
"parent" : "basicDIV",
|
||||
"id" : "welcome",
|
||||
"text" : "lz Musical Soundscape Intervention",
|
||||
"style" : {
|
||||
"top" : "-10px",
|
||||
"left" : "10px",
|
||||
"font-family" : "Arial",
|
||||
"margin-left" : "10px"
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
addButton("expertDIV", "p0", "Player 1", "width:24.9vw;color:" + active, "document.getElementById('p0').style['color']='" + active + "';document.getElementById('p1').style['color']='" + nonactive + "';document.getElementById('p2').style['color']='" + nonactive + "';document.getElementById('p3').style['color']='" + nonactive + "';document.getElementById('player0').style.display='block';document.getElementById('player1').style.display='none';document.getElementById('player2').style.display='none';document.getElementById('player3').style.display='none';");
|
||||
addButton("expertDIV", "p1", "Player 2", "width:24.9vw;color:" + nonactive, "document.getElementById('p0').style['color']='" + nonactive + "';document.getElementById('p1').style['color']='" + active + "';document.getElementById('p2').style['color']='" + nonactive + "';document.getElementById('p3').style['color']='" + nonactive + "';document.getElementById('player0').style.display='none';document.getElementById('player1').style.display='block';document.getElementById('player2').style.display='none';document.getElementById('player3').style.display='none';");
|
||||
addButton("expertDIV", "p2", "Player 3", "width:24.9vw;color:" + nonactive, "document.getElementById('p0').style['color']='" + nonactive + "';document.getElementById('p1').style['color']='" + nonactive + "';document.getElementById('p2').style['color']='" + active + "';document.getElementById('p3').style['color']='" + nonactive + "';document.getElementById('player0').style.display='none';document.getElementById('player1').style.display='none';document.getElementById('player2').style.display='block';document.getElementById('player3').style.display='none';");
|
||||
addButton("expertDIV", "p3", "Player 4", "width:24.9vw;color:" + nonactive, "document.getElementById('p0').style['color']='" + nonactive + "';document.getElementById('p1').style['color']='" + nonactive + "';document.getElementById('p2').style['color']='" + nonactive + "';document.getElementById('p3').style['color']='" + active + "';document.getElementById('player0').style.display='none';document.getElementById('player1').style.display='none';document.getElementById('player2').style.display='none';document.getElementById('player3').style.display='block';");
|
||||
|
||||
|
||||
addMenu(-1, "basicDIV", "Piece", "piece", 36, 0, pieces, "wide");
|
||||
addMenu(-1, "basicDIV", "Playing Mode", "mode", 66, 0, modes, "wide");
|
||||
addCheckbox(-1, "basicDIV", "Play", "play", 96, 0, "left");
|
||||
addSlider(-1, "basicDIV", "Tempo", "tempo", 0, [20, 160], 1, 60, "this.value", "this.value");
|
||||
addSlider(-1, "basicDIV", "Duration", "duration", 1, [0, 100], 1, 100, "this.value", "this.value");
|
||||
addSlider(-1, "basicDIV", "Silence", "silence", 2, [0, 100], 1, 100, "this.value", "this.value");
|
||||
|
||||
|
||||
for (var i = 0; i < 4; i++) {
|
||||
var j = 0;
|
||||
addMenu(i, "player" + i, "Instrument", "instrument", 36, 0, instruments, "narrow");
|
||||
addMenu(i, "player" + i, "Scale", "scale", 66, 0, scales, "narrow");
|
||||
addMenu(i, "player" + i, "Meter", "meter", 96, 11, meters, "narrow");
|
||||
addCheckbox(i, "player" + i, "On", "stream", 36, 0, "right");
|
||||
addCheckbox(i, "player" + i, "Sorted", "sorted", 66, 0, "right");
|
||||
addCheckbox(i, "player" + i, "Overlap", "overlap", 96, 0, "right");
|
||||
addSlider(i, "player" + i, "Outset Pulses", "outset_pulses", j++, [1, 16], 1, 1, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Eventfulness", "eventfulness", j++, [0, 100], 1, 100, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Event Length", "event_length", j++, [5, 100], 1, 100, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Metriclarity", "metriclarity", j++, [0, 100], 1, 100, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Harmoniclarity", "harmoniclarity", j++, [0, 100], 1, 50, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Chordal Weight", "chordal_weight", j++, [1, 5], 1, 1, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Mel. Cohesion", "melodic_cohesion", j++, [-100, 100], 1, 50, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Melody Scope", "melody_scope", j++, [0, 36], 1, 7, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Tonic Pitch", "tonic_pitch", j++, [12, 96], 1, 36, "['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'][Number(this.value) % 12] + (parseInt((this.value) / 12) - 2)", "this.value");
|
||||
addSlider(i, "player" + i, "Pitch Center", "pitch_center", j++, [12, 96], 1, 60, "['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'][Number(this.value) % 12] + (parseInt((this.value) / 12) - 2)", "this.value");
|
||||
addSlider(i, "player" + i, "Pitch Range", "pitch_range", j++, [0, 36], 1, 7, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Dynamics", "dynamics", j++, [0, 127], 1, 64, "this.value", "this.value");
|
||||
addSlider(i, "player" + i, "Attenuation", "attenuation", j++, [0, 100], 1, 15, "this.value", "this.value");
|
||||
}
|
||||
createSpatBox();
|
||||
addSlider(-1, "roomDIV", "Gain (dB)", "gain", 2, [-70, 6], 1, -10, "this.value", "this.value");
|
||||
addSlider(-1, "roomDIV", "Room Size", "roomsize", 3, [1, 300], 1, 75, "this.value", "this.value");//
|
||||
addSlider(-1, "roomDIV", "Rev. Time (ms)", "amount", 4, [0.5, 15], 0.1, 11, "this.value", "this.value");//
|
||||
addSlider(-1, "roomDIV", "Spread", "spread", 5, [0, 100], 1, 23, "this.value", "this.value");//
|
||||
addSlider(-1, "roomDIV", "Bandwidth", "bandwidth", 6, [0, 100], 1, 50, "this.value", "this.value"); //50
|
||||
addSlider(-1, "roomDIV", "Damping", "damping", 7, [0, 100], 1, 70, "this.value", "this.value");//
|
||||
addSlider(-1, "roomDIV", "Early", "early", 8, [0, 100], 1, 25, "this.value", "this.value");//
|
||||
addSlider(-1, "roomDIV", "Tail", "tail", 9, [0, 100], 1, 25, "this.value", "this.value");//
|
||||
addSlider(-1, "roomDIV", "Dry", "dry", 10, [0, 100], 1, 100, "this.value", "this.value");//
|
||||
|
||||
|
||||
elements.push(
|
||||
{
|
||||
"new" : "h2",
|
||||
"parent" : "systemDIV",
|
||||
"id" : "updateheader",
|
||||
"text" : "Updates",
|
||||
"style" : {
|
||||
"left" : "10px",
|
||||
"font-family" : "Arial",
|
||||
"margin-left" : "10px"
|
||||
}
|
||||
});
|
||||
|
||||
elements.push(
|
||||
{
|
||||
"new" : "p",
|
||||
"parent" : "systemDIV",
|
||||
"id" : "update",
|
||||
"text" : "Check for a new software version. This requires an active Internet connection. Please refer to manual for further instructions.",
|
||||
"style" : {
|
||||
"left" : "10px",
|
||||
"font-family" : "Arial",
|
||||
"font-size" : 12,
|
||||
"margin-left" : "10px"
|
||||
}
|
||||
});
|
||||
|
||||
addButton("systemDIV", "versionbutton", "Check for New Version", "width:125px;background-color:" + nonactive + ";margin-left:125px;", "none");
|
||||
|
||||
elements.push(
|
||||
{
|
||||
"new" : "h2",
|
||||
"parent" : "systemDIV",
|
||||
"id" : "shutdownheader",
|
||||
"text" : "Shut Down",
|
||||
"style" : {
|
||||
"left" : "10px",
|
||||
"font-family" : "Arial",
|
||||
"margin-left" : "10px"
|
||||
}
|
||||
});
|
||||
|
||||
elements.push(
|
||||
{
|
||||
"new" : "p",
|
||||
"parent" : "systemDIV",
|
||||
"id" : "shutdown",
|
||||
"text" : "Shutting the system down, will require you to unplug and replug the speakers before they can be operated again.",
|
||||
"style" : {
|
||||
"left" : "10px",
|
||||
"font-family" : "Arial",
|
||||
"font-size" : 12,
|
||||
"margin-left" : "10px"
|
||||
}
|
||||
});
|
||||
|
||||
addButton("systemDIV", "cancelbutton", "Cancel", "background-color:" + nonactive + ";margin-left:20vw;", "document.getElementById('basicDIV').style.display='block';document.getElementById('expertDIV').style.display='none';document.getElementById('roomDIV').style.display='none';document.getElementById('spat').style.display='none';document.getElementById('systemDIV').style.display='none';document.getElementById('manualDIV').style.display='none';document.getElementById('basic').style['background-color']='" + active + "';document.getElementById('expert').style['background-color']='" + nonactive + "';document.getElementById('room').style['background-color']='" + nonactive + "';document.getElementById('system').style['background-color']='" + nonactive + "';document.getElementById('manual').style['background-color']='" + nonactive + "';");
|
||||
addButton("systemDIV", "proceedbutton", "Shut Down", "background-color:" + alert + ";margin-left:15vw;", "drawsocket.send({system: {shutdown : true}})");
|
||||
|
||||
elements.push(
|
||||
{
|
||||
"new" : "iframe",
|
||||
"parent" : "manualDIV",
|
||||
"id" : "manualdoc",
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : "0px",
|
||||
"left" : "0px",
|
||||
"width" : "100vw",
|
||||
"height" : "100vh"
|
||||
},
|
||||
"src" : "public/manual.html"
|
||||
});
|
||||
|
||||
dict.parse(JSON.stringify(html));
|
||||
outlet(0, "dictionary", dict.name);
|
||||
outlet(1, "done");
|
||||
}
|
||||
|
||||
function addDiv(parent, id, style)
|
||||
{
|
||||
var obj = {
|
||||
"parent" : parent,
|
||||
"new" : "div",
|
||||
"id" : id
|
||||
};
|
||||
if (style != null) {
|
||||
obj.style = {};
|
||||
var properties = style.split(";");
|
||||
for (var i = 0; i < properties.length; i++){
|
||||
obj.style[properties[i].split(":")[0]] = properties[i].split(":")[1];
|
||||
}
|
||||
}
|
||||
elements.push(obj);
|
||||
}
|
||||
|
||||
function addButton(parent, id, text, style, onclick)
|
||||
{
|
||||
var obj = {
|
||||
"parent" : parent,
|
||||
"id" : id,
|
||||
"new" : "button",
|
||||
"text" : text,
|
||||
"class" : "but",
|
||||
"onclick" : onclick
|
||||
};
|
||||
if (style != null) {
|
||||
obj.style = {};
|
||||
var properties = style.split(";");
|
||||
for (var i = 0; i < properties.length; i++){
|
||||
obj.style[properties[i].split(":")[0]] = properties[i].split(":")[1];
|
||||
}
|
||||
|
||||
}
|
||||
elements.push(obj);
|
||||
}
|
||||
|
||||
function addSlider(index, parent, name, id, position, range, step, value, _out, _in)
|
||||
{
|
||||
switch (id) {
|
||||
case "tonic_pitch" :
|
||||
case "pitch_center" :
|
||||
value = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'][value % 12] + (parseInt((value) / 12) - 2);
|
||||
break;
|
||||
}
|
||||
|
||||
var obj = [{
|
||||
"parent" : parent,
|
||||
"new" : "label",
|
||||
"for" : id + "_" + index,
|
||||
"id" : id + "-label" + "_" + index,
|
||||
"text" : name + ":",
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : (offset - 1 + position * 30) + "px",
|
||||
"left" : "10px",
|
||||
"width" : "160px",
|
||||
"font-family" : "Arial",
|
||||
"font-size" : 10,
|
||||
"color" : textcolor
|
||||
}
|
||||
},
|
||||
{
|
||||
"parent" : parent,
|
||||
"new" : "input",
|
||||
"type" : "text",
|
||||
"id" : id + "_num" + "_" + index,
|
||||
"name" : id + "_num" + "_" + index,
|
||||
"size" : 10,
|
||||
"value" : value,
|
||||
"disabled" : true,
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : (offset + position * 30) + "px",
|
||||
"left" : "320px",
|
||||
"width" : "30px",
|
||||
"color" : textcolor
|
||||
}
|
||||
},
|
||||
{
|
||||
"parent" : parent,
|
||||
"new" : "input",
|
||||
"type" : "range",
|
||||
"id" : id + "_" + index,
|
||||
"name" : id + "_" + index,
|
||||
"class" : "slider",
|
||||
"min" : range[0],
|
||||
"max" : range[1],
|
||||
"value" : value,
|
||||
"step" : step,
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : (offset + 5 + position * 30) + "px",
|
||||
"left" : "135px",
|
||||
"width" : "170px"
|
||||
},
|
||||
"oninput" : "[drawsocket.send({" + "djster" + ": {player: " + (index + 1) + ", " + id + ": " + _in + "}}), drawsocket.input({ key : 'html', val : { id : '" + id + "_num" + "_" + index + "', value : " + _out + "}})]"
|
||||
}];
|
||||
|
||||
var obj2 = {
|
||||
"id" : id + "_value" + "_" + index,
|
||||
"args" : "v",
|
||||
"body" : "document.getElementById('" + id + "_" + index + "').value = v;document.getElementById('" + id + "_num" + "_" + index + "').value = v"
|
||||
};
|
||||
|
||||
elements.push(obj[0]);
|
||||
elements.push(obj[1]);
|
||||
elements.push(obj[2]);
|
||||
body.push(obj2);
|
||||
}
|
||||
|
||||
function addMenu(index, parent, name, id, position, value, array, type)
|
||||
{
|
||||
var width = (type == "wide") ? 180 : 90;
|
||||
child = [];
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
var id2 = "_" + array[i].replace(/#|\.|\s+/g, '_').replace(/\+/g, '-').toLowerCase() + "_" + index;
|
||||
if (i != value) {
|
||||
child.push({
|
||||
"new" : "option",
|
||||
"id" : id2,
|
||||
"value" : array[i],
|
||||
"text" : array[i]
|
||||
});
|
||||
}
|
||||
else {
|
||||
child.push({
|
||||
"new" : "option",
|
||||
"id" : id2,
|
||||
"value" : array[i],
|
||||
"selected" : true,
|
||||
"text" : array[i]
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var obj = [{
|
||||
"parent" : parent,
|
||||
"new" : "label",
|
||||
"for" : id + "_" + index,
|
||||
"id" : id + "-label" + "_" + index,
|
||||
"text" : name + ":",
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : position + "px",
|
||||
"left" : "10px",
|
||||
"width" : "120px",
|
||||
"font-family" : "Arial",
|
||||
"font-size" : 10,
|
||||
"color" : textcolor
|
||||
}
|
||||
}
|
||||
, {
|
||||
"parent" : parent,
|
||||
"new" : "select",
|
||||
"id" : id + "_" + index,
|
||||
"name" : id + "_" + index,
|
||||
"class" : "menu",
|
||||
"child" : child,
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : position - 6 + "px",
|
||||
"left" : "135px",
|
||||
"width" : width + "px"
|
||||
}
|
||||
,
|
||||
"oninput" : "drawsocket.send({" + "djster" + ": {player: " + (index + 1) + ", " + id + ": this.value}})"
|
||||
}
|
||||
];
|
||||
elements.push(obj[0]);
|
||||
elements.push(obj[1]);
|
||||
}
|
||||
|
||||
function addCheckbox(index, parent, name, id, position, checked, type)
|
||||
{
|
||||
var left = (type == "left") ? 10 : 252;
|
||||
var leftoffset = (type == "left") ? 126 : 85;
|
||||
checkboxes[index + 1][id].name = name;
|
||||
checkboxes[index + 1][id].pos = [left + leftoffset, position - 2];
|
||||
checkboxes[index + 1][id].parent = parent;
|
||||
var obj = [{
|
||||
"parent" : parent,
|
||||
"new" : "label",
|
||||
"for" : id + "_" + index,
|
||||
"id" : id + "-label" + "_" + index,
|
||||
"text" : name + ":",
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : position + "px",
|
||||
"left" : left + "px",
|
||||
"width" : "80px",
|
||||
"font-family" : "Arial",
|
||||
"font-size" : 10,
|
||||
"color" : textcolor
|
||||
}
|
||||
},
|
||||
{
|
||||
"parent" : parent,
|
||||
"new" : "input",
|
||||
"type" : "checkbox",
|
||||
"class" : "toggle",
|
||||
"id" : id + "_" + index,
|
||||
"name" : id + "_" + index,
|
||||
"value" : checked,
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : position - 2 + "px",
|
||||
"left" : left + leftoffset + "px",
|
||||
"border" : "none",
|
||||
"width" : "20px",
|
||||
"height" : "20px"
|
||||
},
|
||||
"oninput" : "drawsocket.send({" + "djster" + ": {player: " + (index + 1) + ", " + id + ": this.checked}})"
|
||||
}];
|
||||
|
||||
elements.push(obj[0]);
|
||||
elements.push(obj[1]);
|
||||
}
|
||||
|
||||
function createSpatBox()
|
||||
{
|
||||
svg.push({
|
||||
"parent" : "defs",
|
||||
"new" : "path",
|
||||
"id" : "speaker",
|
||||
"fill" : textcolor,
|
||||
"d" : "M206.2,146.2c1.4,0,2.6,1.2,2.6,2.6c0,1.4-1.2,2.6-2.6,2.6s-2.6-1.2-2.6-2.6C203.6,147.4,204.8,146.2,206.2,146.2z M206.2,141.3c-4.2,0-7.7,3.4-7.7,7.7c0,4.2,3.4,7.7,7.7,7.7c4.2,0,7.7-3.4,7.7-7.7C213.9,144.8,210.4,141.3,206.2,141.3z M206.2,134.4c8,0,14.6,6.5,14.6,14.6c0,8-6.5,14.6-14.6,14.6c-8,0-14.6-6.5-14.6-14.6C191.6,141,198.2,134.4,206.2,134.4z M206.2,117.5c1.4,0,2.6,1.2,2.6,2.6c0,1.4-1.2,2.6-2.6,2.6s-2.6-1.2-2.6-2.6C203.6,118.7,204.8,117.5,206.2,117.5z M206.2,114c-3.4,0-6.1,2.7-6.1,6.1c0,3.4,2.7,6.1,6.1,6.1s6.1-2.7,6.1-6.1C212.3,116.7,209.6,114,206.2,114z M206.2,110.5c5.3,0,9.5,4.3,9.5,9.5c0,5.3-4.3,9.5-9.5,9.5s-9.5-4.3-9.5-9.5C196.7,114.8,200.9,110.5,206.2,110.5z M184.1,102.7c-0.5,0-0.9,0.2-1.2,0.5c-0.3,0.3-0.5,0.7-0.5,1.2v66.8c0,0.5,0.2,0.9,0.5,1.2c0.3,0.3,0.7,0.5,1.2,0.5h44.2c0.5,0,0.9-0.2,1.2-0.5c0.3-0.3,0.5-0.7,0.5-1.2v-66.8c0-0.5-0.2-0.9-0.5-1.2c-0.3-0.3-0.7-0.5-1.2-0.5H184.1z",
|
||||
"transform" : "matrix(0.5,0,0,0.5,100,0)"
|
||||
});
|
||||
svg.push({
|
||||
"parent" : "main-svg",
|
||||
"new" : "g",
|
||||
"id" : "spat",
|
||||
//"display" : "none",
|
||||
"display" : "none",
|
||||
"transform" : "matrix(1,0,0,1,0,50)",
|
||||
"child" : [
|
||||
{
|
||||
"new" : "rect",
|
||||
"id" : "frame",
|
||||
"x" : 120,
|
||||
"y" : 2,
|
||||
"width" : 140,
|
||||
"height" : 140,
|
||||
"fill" : "none",
|
||||
"stroke" : "black",
|
||||
"stroke-opacity" : 1
|
||||
},
|
||||
{
|
||||
"new" : "use",
|
||||
"id" : "speaker1",
|
||||
"x" : -67,
|
||||
"y" : -45,
|
||||
"href" : "#speaker"
|
||||
},
|
||||
{
|
||||
"new" : "use",
|
||||
"id" : "speaker2",
|
||||
"x" : 41,
|
||||
"y" : -45,
|
||||
"href" : "#speaker"
|
||||
},
|
||||
{
|
||||
"new" : "use",
|
||||
"id" : "speaker3",
|
||||
"x" : -67,
|
||||
"y" : 50,
|
||||
"href" : "#speaker"
|
||||
},
|
||||
{
|
||||
"new" : "use",
|
||||
"id" : "speaker4",
|
||||
"x" : 41,
|
||||
"y" : 50,
|
||||
"href" : "#speaker"
|
||||
},
|
||||
{
|
||||
"new" : "circle",
|
||||
"id" : "src1",
|
||||
"cx" : 190,
|
||||
"cy" : 20,
|
||||
"r" : 12.5,
|
||||
"fill" : textcolor
|
||||
},
|
||||
{
|
||||
"new" : "circle",
|
||||
"id" : "src2",
|
||||
"cx" : 245,
|
||||
"cy" : 70,
|
||||
"r" : 12.5,
|
||||
"fill" : "olivedrab"
|
||||
},
|
||||
{
|
||||
"new" : "circle",
|
||||
"id" : "src3",
|
||||
"cx" : 190,
|
||||
"cy" : 125,
|
||||
"r" : 12.5,
|
||||
"fill" : "cornflowerblue"
|
||||
},
|
||||
{
|
||||
"new" : "circle",
|
||||
"id" : "src4",
|
||||
"cx" : 135,
|
||||
"cy" : 70,
|
||||
"r" : 12.5,
|
||||
"fill" : "tomato"
|
||||
}
|
||||
]});
|
||||
}
|
||||
|
||||
/*
|
||||
<svg width="600px" height="200px" viewBox="0 0 600 200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||
<defs>
|
||||
<g id="speaker" transform="matrix(0.5,0,0,0.5,100,0)">
|
||||
<path d="M206.2,146.2c1.4,0,2.6,1.2,2.6,2.6
|
||||
c0,1.4-1.2,2.6-2.6,2.6s-2.6-1.2-2.6-2.6C203.6,147.4,204.8,146.2,206.2,146.2z M206.2,141.3c-4.2,0-7.7,3.4-7.7,7.7
|
||||
c0,4.2,3.4,7.7,7.7,7.7c4.2,0,7.7-3.4,7.7-7.7C213.9,144.8,210.4,141.3,206.2,141.3z M206.2,134.4c8,0,14.6,6.5,14.6,14.6
|
||||
c0,8-6.5,14.6-14.6,14.6c-8,0-14.6-6.5-14.6-14.6C191.6,141,198.2,134.4,206.2,134.4z M206.2,117.5c1.4,0,2.6,1.2,2.6,2.6
|
||||
c0,1.4-1.2,2.6-2.6,2.6s-2.6-1.2-2.6-2.6C203.6,118.7,204.8,117.5,206.2,117.5z M206.2,114c-3.4,0-6.1,2.7-6.1,6.1
|
||||
c0,3.4,2.7,6.1,6.1,6.1s6.1-2.7,6.1-6.1C212.3,116.7,209.6,114,206.2,114z M206.2,110.5c5.3,0,9.5,4.3,9.5,9.5
|
||||
c0,5.3-4.3,9.5-9.5,9.5s-9.5-4.3-9.5-9.5C196.7,114.8,200.9,110.5,206.2,110.5z M184.1,102.7c-0.5,0-0.9,0.2-1.2,0.5
|
||||
c-0.3,0.3-0.5,0.7-0.5,1.2v66.8c0,0.5,0.2,0.9,0.5,1.2c0.3,0.3,0.7,0.5,1.2,0.5h44.2c0.5,0,0.9-0.2,1.2-0.5
|
||||
c0.3-0.3,0.5-0.7,0.5-1.2v-66.8c0-0.5-0.2-0.9-0.5-1.2c-0.3-0.3-0.7-0.5-1.2-0.5H184.1z"/>
|
||||
</g>
|
||||
</defs>
|
||||
<rect id="frame" x="120" y="2" width="140" height="140" stroke="black" stroke-width="4" stroke-opacity="1" fill="none" fill-opacity="1"/>
|
||||
<circle id="src1" cx="190" cy="20" r="10" fill="black"/>
|
||||
<circle id="src2" cx="245" cy="70" r="10" fill="green"/>
|
||||
<circle id="src3" cx="190" cy="125" r="10" fill=nonactive/>
|
||||
<circle id="src4" cx="135" cy="70" r="10" fill=active/>
|
||||
<use x="-67" y="-45" href="#speaker" />
|
||||
<use x="41" y="-45" href="#speaker" />
|
||||
<use x="-67" y="50" href="#speaker" />
|
||||
<use x="41" y="50" href="#speaker" />
|
||||
</svg>
|
||||
*/
|
||||
|
||||
function dictionary()
|
||||
{
|
||||
var d = new Dict;
|
||||
d.name = p[1];
|
||||
var obj = {};
|
||||
var out = new Dict;
|
||||
obj["*"] = {
|
||||
"key" : "html",
|
||||
"val" : [{
|
||||
"id" : msg + "_" + (index1 - 1),
|
||||
"value" : val
|
||||
}
|
||||
, {
|
||||
"id" : msg + "_num" + "_" + (index1 - 1),
|
||||
"value" : val
|
||||
}]
|
||||
};
|
||||
out.parse(JSON.stringify(obj));
|
||||
outlet(0, "dictionary", out.name);
|
||||
}
|
||||
|
||||
function param()
|
||||
{
|
||||
var p = arrayfromargs(arguments);
|
||||
var d = new Dict;
|
||||
d.name = p[1];
|
||||
var obj = {};
|
||||
var out = new Dict;
|
||||
var keys = d.getkeys();
|
||||
//post(d.stringify(), "\n");
|
||||
var index1 = d.get("player");
|
||||
var msg = keys.indexOf("player") ? keys[0] : keys[1];
|
||||
var val = d.get(msg);
|
||||
//post("what?", JSON.stringify(checkboxes), index1, msg, val, "\n");
|
||||
//for range sliders (calc pulse_length, tonic_pitch, pitch_range)
|
||||
switch (msg) {
|
||||
//menus
|
||||
case "piece" :
|
||||
case "mode" :
|
||||
case "instrument" :
|
||||
case "scale" :
|
||||
case "meter" :
|
||||
obj["*"] = {
|
||||
"key" : "html",
|
||||
"val" : {
|
||||
"id" : "_" + val.replace(/#|\.|\s+/g, '_').replace(/\+/g, '-').toLowerCase() + "_" + (index1 - 1),
|
||||
"selected" : true
|
||||
}
|
||||
};
|
||||
break;
|
||||
//checkboxes
|
||||
case "play" :
|
||||
case "stream" :
|
||||
case "sorted" :
|
||||
case "overlap" :
|
||||
elements = [];
|
||||
//post(JSON.stringify(checkboxes), "\n");
|
||||
//addCheckbox(checkboxes[msg].name, msg, checkboxes[msg].pos, val);
|
||||
//post("checkbox", index1, msg, "\n");
|
||||
var checkbox = {
|
||||
"parent" : checkboxes[index1][msg].parent,
|
||||
"new" : "input",
|
||||
"class" : "box",
|
||||
"type" : "checkbox",
|
||||
"id" : msg + "_" + (index1 - 1),
|
||||
"name" : msg + "_" + (index1 - 1),
|
||||
"value" : val,
|
||||
"style" : {
|
||||
"position" : "absolute",
|
||||
"top" : checkboxes[index1][msg].pos[1] + "px",
|
||||
"left" : checkboxes[index1][msg].pos[0] + "px",
|
||||
"border" : "none",
|
||||
"width" : "20px",
|
||||
"height" : "20px"
|
||||
},
|
||||
"oninput" : "drawsocket.send({" + "djster" + ": {player: " + index1 + ", " + msg + ": this.checked}})"
|
||||
|
||||
};
|
||||
if (val) checkbox.checked = "";
|
||||
obj["*"] = {
|
||||
"key" : "html",
|
||||
"val" : checkbox
|
||||
};
|
||||
break;
|
||||
//range sliders
|
||||
default :
|
||||
switch (msg) {
|
||||
case "tonic_pitch" :
|
||||
case "pitch_center" :
|
||||
val = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'][val % 12] + (parseInt((val) / 12) - 2);
|
||||
break;
|
||||
}
|
||||
obj["*"] = {
|
||||
"key" : "html",
|
||||
"val" : [{
|
||||
"id" : msg + "_" + (index1 - 1),
|
||||
"value" : val
|
||||
}
|
||||
, {
|
||||
"id" : msg + "_num" + "_" + (index1 - 1),
|
||||
"value" : val
|
||||
}]
|
||||
};
|
||||
}
|
||||
out.parse(JSON.stringify(obj));
|
||||
outlet(0, "dictionary", out.name);
|
||||
elements = [];
|
||||
}
|
||||
|
6999
hss-distributed-client.maxpat
Normal file
6999
hss-distributed-client.maxpat
Normal file
File diff suppressed because it is too large
Load Diff
7589
hss-distributed-server.maxpat
Normal file
7589
hss-distributed-server.maxpat
Normal file
File diff suppressed because it is too large
Load Diff
3
hss-distributed-server.maxpatHSSPiece.json
Normal file
3
hss-distributed-server.maxpatHSSPiece.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
|
||||
}
|
170
hss.piecemaker.js
Normal file
170
hss.piecemaker.js
Normal file
@ -0,0 +1,170 @@
|
||||
inlets = 2
|
||||
outlets = 4;
|
||||
|
||||
var jpieces = {};
|
||||
var presets = [];
|
||||
var hsspiece = {};
|
||||
var outdict = new Dict("HSSPieces");;
|
||||
var points = [[0.5, 0.5], [1., 0.], [1., 1.], [0., 1.], [0., 0.]];
|
||||
var net = new Dict;
|
||||
var title;
|
||||
var DJsterParams = {
|
||||
"attenuation" : [0, 100, "linear"], //
|
||||
"chordal_weight" : [1, 5, "linear"],//
|
||||
"dynamics" : [0, 127, "linear"],//
|
||||
"event_length" : [60, 600, "log"],//
|
||||
"eventfulness" : [0, 100, "linear"],//
|
||||
"harmoniclarity" : [0, 100, "linear"],//
|
||||
"melodic_cohesion" : [-100, 100, "linear"],//
|
||||
"melody_scope" : [0, 48, "linear"],//
|
||||
"metriclarity" : [-100, 100, "linear"],//
|
||||
"outset_pulses" : [1, 16, "linear"],//
|
||||
"overlap" : [0, 1, "linear"],//
|
||||
"pitch_center" : [12, 108, "linear"],//
|
||||
"pitch_range" : [0, 48, "linear"],//
|
||||
"scale" : [1, 5, "enum"],//
|
||||
"sorted" : [0, 1, "linear"],//
|
||||
"stream" : [0, 1, "linear"],//
|
||||
"subdivision" : [1, 5, "enum"],//
|
||||
"tempo" : [20, 200, "log"],//
|
||||
"timesig_denominator" : [1, 5, "enum"],//
|
||||
"timesig_numerator" : [1, 12, "linear"],//
|
||||
"tonic_pitch" : [12, 108, "enum"],//
|
||||
};
|
||||
|
||||
//
|
||||
function dictionary(d)
|
||||
{
|
||||
net.name = d;
|
||||
hsspiece[title]["networkData"] = JSON.parse(net.stringify());
|
||||
outdict.parse(JSON.stringify(hsspiece));
|
||||
//outlet(0, "dictionary", outdict.name);
|
||||
}
|
||||
|
||||
function readPiece(path)
|
||||
{
|
||||
outdict.import_json(path);
|
||||
jpieces = JSON.parse(outdict.stringify());
|
||||
var keys = outdict.getkeys();
|
||||
for (var i = 0; i < keys.length; i++) outlet(3, keys[i]);
|
||||
outlet(1, outdict.get("DefaultSetting::1::networkData");
|
||||
outlet(1, predict(0.5, 0.5);
|
||||
outlet(0, 0.5, 0.5;
|
||||
}
|
||||
|
||||
function getSection(section)
|
||||
{
|
||||
outlet(1, outdict.get(section + "::1::networkData");
|
||||
outlet(1, predict(0.5, 0.5);
|
||||
outlet(0, 0.5, 0.5;
|
||||
}
|
||||
|
||||
function writePiece()
|
||||
{
|
||||
outdict.export_json(this.patcher.filepath + "HSSPiece.json");
|
||||
}
|
||||
|
||||
function anything()
|
||||
{
|
||||
var filenames = arrayfromargs(messagename, arguments);
|
||||
for (var i = 0; i < filenames.length; i++)
|
||||
{
|
||||
presets[i] = new Dict;
|
||||
presets[i].import_json(filenames[i]);
|
||||
title = filenames[i].slice(filenames[i].lastIndexOf("/") + 1, filenames[i].lastIndexOf("."));
|
||||
hsspiece[title] = {};
|
||||
var slots = presets[i].get("pattrstorage::slots").getkeys();//number of slots here
|
||||
post("slots", slots, "\n");
|
||||
outlet(1, "clear_data");
|
||||
for (var j = 0; j < slots.length; j++){
|
||||
hsspiece[title][j + 1] = {};
|
||||
var trainingData = [];
|
||||
var data = JSON.parse(presets[i].get("pattrstorage::slots::" + (j + 1) + "::data").stringify());
|
||||
for (var p = 0; p < 4; p++) {
|
||||
delete data["Djster.µbus[" + p + "]::scales"];
|
||||
delete data["Djster.µbus[" + p + "]::meters"];
|
||||
for (var param in DJsterParams) {
|
||||
var val = data["Djster.µbus[" + p + "]::" + param];
|
||||
switch (DJsterParams[param][2]) {
|
||||
case "linear" :
|
||||
trainingData.push(scale(val, DJsterParams[param][0], DJsterParams[param][1], 0., 1.));
|
||||
break;
|
||||
case "log" :
|
||||
trainingData.push(scale(val, DJsterParams[param][0], DJsterParams[param][1], 0., 1.));
|
||||
break;
|
||||
case "enum" :
|
||||
trainingData.push(j/5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//var val = data["hub::instrument::instrument-" + (p + 1)];
|
||||
trainingData.push(j/5);
|
||||
var val = data["hub::src::src" + (p + 1)];
|
||||
trainingData.push(scale(val[0], 0, 127, 0., 1.));
|
||||
trainingData.push(scale(val[1], 0, 127, 0., 1.));
|
||||
}
|
||||
//post("data", JSON.stringify(data), "\n");
|
||||
hsspiece[title][j + 1] = data;
|
||||
outlet(1, "data_point", points[j].concat(trainingData));
|
||||
}
|
||||
outlet(1, "train", 10000);
|
||||
}
|
||||
}
|
||||
|
||||
function list()
|
||||
{
|
||||
var vector = arrayfromargs(arguments);
|
||||
var src = [];
|
||||
var currentPiece = this.patcher.getnamed("currentPiece").getvalueof();
|
||||
var keys = Object.keys(DJsterParams);
|
||||
for (var i = 0; i < 4; i++) {
|
||||
for (var j = 0; j < vector.length/4; j++) {
|
||||
var k = j + i * vector.length/4;
|
||||
//post("vector", j, "\n");
|
||||
switch (j) {
|
||||
case 3 : //log
|
||||
case 17 :
|
||||
var val = scale(vector[k], 0, 1, DJsterParams[keys[j]][0], DJsterParams[keys[j]][1]);
|
||||
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
|
||||
break;
|
||||
case 13 : //enum
|
||||
//val = "Major";
|
||||
post(vector[k], Math.floor(vector[k]/0.2 + 1), "\n");
|
||||
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["Djster.µbus[" + i + "]::scale"]);
|
||||
break;
|
||||
case 16 :
|
||||
//val = "2 2 2";
|
||||
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["Djster.µbus[" + i + "]::meter"]);
|
||||
break;
|
||||
case 18 :
|
||||
//val = "4"
|
||||
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["Djster.µbus[" + i + "]::timesig_denominator"]);
|
||||
break;
|
||||
case 21 :
|
||||
val = "4"
|
||||
outlet(2, "hub::instrument::instrument-" + (i + 1), jpieces[currentPiece][parseInt(vector[k]/0.2 + 1)]["hub::instrument::instrument-" + (i + 1)]);
|
||||
break;
|
||||
case 22 :
|
||||
src[0] = scale(vector[k], 0, 1, 0, 127);
|
||||
break;
|
||||
case 23 :
|
||||
src[1] = scale(vector[k], 0, 1, 0, 127);
|
||||
outlet(2, "hub::src::src" + (i + 1), src);
|
||||
break;
|
||||
case 1 : case 9 : case 10 : case 14 : case 15 : case 19 : case 20 :
|
||||
var val = Math.round(scale(vector[k], 0, 1, DJsterParams[keys[j]][0], DJsterParams[keys[j]][1]));
|
||||
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
|
||||
break;
|
||||
default : //linear
|
||||
var val = scale(vector[k], 0, 1, DJsterParams[keys[j]][0], DJsterParams[keys[j]][1]);
|
||||
outlet(2, "Djster.µbus[" + i + "]::" + keys[j], val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function scale(x, inputmin, inputmax, outputmin, outputmax)
|
||||
{
|
||||
return (x - inputmin) / (inputmax - inputmin) * (outputmax - outputmin) + outputmin;
|
||||
}
|
22
maxnode-getmyip.js
Normal file
22
maxnode-getmyip.js
Normal file
@ -0,0 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
const Max = require('max-api');
|
||||
const os = require('os');
|
||||
let adapter = "Wi-Fi";
|
||||
//let adapter = "lo0";
|
||||
|
||||
|
||||
Max.addHandler("bang", () => {
|
||||
if (os.networkInterfaces().hasOwnProperty(adapter)) {
|
||||
let instance = os.networkInterfaces()[adapter][1]["address"];
|
||||
//Max.post(instance);
|
||||
Max.outlet(Number(instance.slice(instance.lastIndexOf(".") + 1)) - 100);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
12
node_modules/.package-lock.json
generated
vendored
Normal file
12
node_modules/.package-lock.json
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "healing-soundscapes",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"node_modules/os": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz",
|
||||
"integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ=="
|
||||
}
|
||||
}
|
||||
}
|
11
node_modules/os/README.md
generated
vendored
Normal file
11
node_modules/os/README.md
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# os
|
||||
|
||||
This is a Node.js Core Module
|
||||
|
||||
# There's no need to install through npm
|
||||
|
||||
**Really, there's no need, just require/import it :)**
|
||||
|
||||
## API
|
||||
|
||||
https://nodejs.org/api/os.html
|
1
node_modules/os/index.js
generated
vendored
Normal file
1
node_modules/os/index.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('os')
|
25
node_modules/os/package.json
generated
vendored
Normal file
25
node_modules/os/package.json
generated
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "os",
|
||||
"version": "0.1.2",
|
||||
"description": "NodeJS Core Module Extended",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/DiegoRBaquero/node-os.git"
|
||||
},
|
||||
"keywords": [
|
||||
"node",
|
||||
"os",
|
||||
"core",
|
||||
"module"
|
||||
],
|
||||
"author": "Diego Rodríguez Baquero <diegorbaquero@gmail.com> (https://diegorbaquero.com)",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/DiegoRBaquero/node-os/issues"
|
||||
},
|
||||
"homepage": "https://github.com/DiegoRBaquero/node-os#readme"
|
||||
}
|
9
npm-debug-u78521490196.log
Normal file
9
npm-debug-u78521490196.log
Normal file
@ -0,0 +1,9 @@
|
||||
npm ERR! code ENOENT
|
||||
npm ERR! syscall open
|
||||
npm ERR! path /Users/Shared/Max 8/Library/healing-soundscapes/package.json
|
||||
npm ERR! errno -2
|
||||
npm ERR! enoent ENOENT: no such file or directory, open '/Users/Shared/Max 8/Library/healing-soundscapes/package.json'
|
||||
npm ERR! enoent This is related to npm not being able to find a file.
|
||||
npm ERR! enoent
|
||||
|
||||
npm ERR! A complete log of this run can be found in: /Users/hajdu/.npm/_logs/2024-06-10T05_31_41_379Z-debug-0.log
|
17
package-lock.json
generated
Normal file
17
package-lock.json
generated
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "healing-soundscapes",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"os": "^0.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/os": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz",
|
||||
"integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ=="
|
||||
}
|
||||
}
|
||||
}
|
5
package.json
Normal file
5
package.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"os": "^0.1.2"
|
||||
}
|
||||
}
|
1486
poly-vbap.maxpat
Normal file
1486
poly-vbap.maxpat
Normal file
File diff suppressed because it is too large
Load Diff
406
public/manual.html
Normal file
406
public/manual.html
Normal file
File diff suppressed because one or more lines are too long
BIN
vbap.mxe64
Executable file
BIN
vbap.mxe64
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user