├── README.md
├── Tidal-MaxMsp
├── code
│ └── haddock-util.js
├── externals
│ └── OSC-route.mxo
│ │ └── Contents
│ │ ├── Info.plist
│ │ └── MacOS
│ │ └── OSC-route
├── media
│ ├── hslogo-16.png
│ ├── minus.gif
│ ├── plus.gif
│ ├── synopsis.png
│ └── tidal-max.gif
├── other
│ ├── LICENSE
│ ├── MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.conf
│ ├── MaxMspOsc.cabal
│ ├── MaxMspOsc.dyn_hi
│ ├── MaxMspOsc.dyn_o
│ ├── MaxMspOsc.haddock
│ ├── MaxMspOsc.hi
│ ├── MaxMspOsc.hs
│ ├── MaxMspOsc.o
│ ├── MaxMspOsc.p_hi
│ ├── MaxMspOsc.p_o
│ ├── Paths_MaxMspOsc.hs
│ ├── README.md
│ ├── Setup.hs
│ ├── Sound-Tidal-MaxMspOsc.html
│ ├── cabal_macros.h
│ ├── doc-index.html
│ ├── frames.html
│ ├── index-frames.html
│ ├── index.html
│ ├── libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH-ghc8.0.1.dylib
│ ├── libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.a
│ ├── libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH_p.a
│ ├── mini_Sound-Tidal-MaxMspOsc.html
│ ├── ocean.css
│ ├── package.cache
│ └── setup-config
├── patchers
│ ├── tidal-maxmsp.maxpat
│ └── tidal-osc-parse.maxpat
└── tidal-maxmsp.maxproj
└── tidal
├── MaxMspOsc
├── LICENSE
├── MaxMspOsc.cabal
├── README.md
├── Setup.hs
├── dist
│ ├── build
│ │ ├── Sound
│ │ │ └── Tidal
│ │ │ │ ├── MaxMspOsc.dyn_hi
│ │ │ │ ├── MaxMspOsc.dyn_o
│ │ │ │ ├── MaxMspOsc.hi
│ │ │ │ ├── MaxMspOsc.o
│ │ │ │ ├── MaxMspOsc.p_hi
│ │ │ │ └── MaxMspOsc.p_o
│ │ ├── autogen
│ │ │ ├── Paths_MaxMspOsc.hs
│ │ │ └── cabal_macros.h
│ │ ├── libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH-ghc8.0.1.dylib
│ │ ├── libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.a
│ │ └── libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH_p.a
│ ├── doc
│ │ └── html
│ │ │ └── MaxMspOsc
│ │ │ ├── MaxMspOsc.haddock
│ │ │ ├── Sound-Tidal-MaxMspOsc.html
│ │ │ ├── doc-index.html
│ │ │ ├── frames.html
│ │ │ ├── haddock-util.js
│ │ │ ├── hslogo-16.png
│ │ │ ├── index-frames.html
│ │ │ ├── index.html
│ │ │ ├── mini_Sound-Tidal-MaxMspOsc.html
│ │ │ ├── minus.gif
│ │ │ ├── ocean.css
│ │ │ ├── plus.gif
│ │ │ └── synopsis.png
│ ├── package.conf.inplace
│ │ ├── MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.conf
│ │ └── package.cache
│ └── setup-config
└── src
│ └── Sound
│ └── Tidal
│ └── MaxMspOsc.hs
└── tidal-maxmsp-example.tidal
/README.md:
--------------------------------------------------------------------------------
1 | # tidal-maxmsp
2 | Connecting the Tidal live coding environment to MaxMSP
3 |
4 | This is a very simple example of how to connect the Haskell based live coding environment Tidal Cycles to MaxMsp via an OSC connection.
5 |
6 | It lets you receive and manipulate data from Tidal parameters and either control visuals in Jitter, use MaxMsp as a synthesis engine for Tidal or whatever your heart desires.
7 |
8 | To be able to use it you need to have Tidal Cycles installed as well as cabal (see https://tidalcycles.org/getting_started.html ).
9 |
10 | ## NOTE: Not tested with Tidal 1.0+
11 |
12 | 
13 |
14 | ### How to install:
15 | 1. Download this repo and save it somewhere you can reach it.
16 | 2. Open up a terminal and run `cd tidal/MaxMspOsc` in the folder you downloaded from this github and then run `cabal install`. This should install a Haskell module on your computer that you will import later on. You only need to do this once.
17 | 3. Open `tidal-maxmsp.maxproj` in Max Msp. This is where you will receive the data from Tidal.
18 | 4. Open up `tidal-maxmsp-example.tidal` and evaluate the import line, one or more of the lines starting with `max1 <-...` and then the last line.
19 | 5. Go back to max and see if you receive the data for the velocity parameter that is currently running in Tidal. If you do, congratulations you are now able to live code MaxMsp from Tidal. If not, go check the post window in Tidal for clues and errors.
20 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/code/haddock-util.js:
--------------------------------------------------------------------------------
1 | // Haddock JavaScript utilities
2 |
3 | var rspace = /\s\s+/g,
4 | rtrim = /^\s+|\s+$/g;
5 |
6 | function spaced(s) { return (" " + s + " ").replace(rspace, " "); }
7 | function trim(s) { return s.replace(rtrim, ""); }
8 |
9 | function hasClass(elem, value) {
10 | var className = spaced(elem.className || "");
11 | return className.indexOf( " " + value + " " ) >= 0;
12 | }
13 |
14 | function addClass(elem, value) {
15 | var className = spaced(elem.className || "");
16 | if ( className.indexOf( " " + value + " " ) < 0 ) {
17 | elem.className = trim(className + " " + value);
18 | }
19 | }
20 |
21 | function removeClass(elem, value) {
22 | var className = spaced(elem.className || "");
23 | className = className.replace(" " + value + " ", " ");
24 | elem.className = trim(className);
25 | }
26 |
27 | function toggleClass(elem, valueOn, valueOff, bool) {
28 | if (bool == null) { bool = ! hasClass(elem, valueOn); }
29 | if (bool) {
30 | removeClass(elem, valueOff);
31 | addClass(elem, valueOn);
32 | }
33 | else {
34 | removeClass(elem, valueOn);
35 | addClass(elem, valueOff);
36 | }
37 | return bool;
38 | }
39 |
40 |
41 | function makeClassToggle(valueOn, valueOff)
42 | {
43 | return function(elem, bool) {
44 | return toggleClass(elem, valueOn, valueOff, bool);
45 | }
46 | }
47 |
48 | toggleShow = makeClassToggle("show", "hide");
49 | toggleCollapser = makeClassToggle("collapser", "expander");
50 |
51 | function toggleSection(id)
52 | {
53 | var b = toggleShow(document.getElementById("section." + id));
54 | toggleCollapser(document.getElementById("control." + id), b);
55 | rememberCollapsed(id, b);
56 | return b;
57 | }
58 |
59 | var collapsed = {};
60 | function rememberCollapsed(id, b)
61 | {
62 | if(b)
63 | delete collapsed[id]
64 | else
65 | collapsed[id] = null;
66 |
67 | var sections = [];
68 | for(var i in collapsed)
69 | {
70 | if(collapsed.hasOwnProperty(i))
71 | sections.push(i);
72 | }
73 | // cookie specific to this page; don't use setCookie which sets path=/
74 | document.cookie = "collapsed=" + escape(sections.join('+'));
75 | }
76 |
77 | function restoreCollapsed()
78 | {
79 | var cookie = getCookie("collapsed");
80 | if(!cookie)
81 | return;
82 |
83 | var ids = cookie.split('+');
84 | for(var i in ids)
85 | {
86 | if(document.getElementById("section." + ids[i]))
87 | toggleSection(ids[i]);
88 | }
89 | }
90 |
91 | function setCookie(name, value) {
92 | document.cookie = name + "=" + escape(value) + ";path=/;";
93 | }
94 |
95 | function clearCookie(name) {
96 | document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
97 | }
98 |
99 | function getCookie(name) {
100 | var nameEQ = name + "=";
101 | var ca = document.cookie.split(';');
102 | for(var i=0;i < ca.length;i++) {
103 | var c = ca[i];
104 | while (c.charAt(0)==' ') c = c.substring(1,c.length);
105 | if (c.indexOf(nameEQ) == 0) {
106 | return unescape(c.substring(nameEQ.length,c.length));
107 | }
108 | }
109 | return null;
110 | }
111 |
112 |
113 |
114 | var max_results = 75; // 50 is not enough to search for map in the base libraries
115 | var shown_range = null;
116 | var last_search = null;
117 |
118 | function quick_search()
119 | {
120 | perform_search(false);
121 | }
122 |
123 | function full_search()
124 | {
125 | perform_search(true);
126 | }
127 |
128 |
129 | function perform_search(full)
130 | {
131 | var text = document.getElementById("searchbox").value.toLowerCase();
132 | if (text == last_search && !full) return;
133 | last_search = text;
134 |
135 | var table = document.getElementById("indexlist");
136 | var status = document.getElementById("searchmsg");
137 | var children = table.firstChild.childNodes;
138 |
139 | // first figure out the first node with the prefix
140 | var first = bisect(-1);
141 | var last = (first == -1 ? -1 : bisect(1));
142 |
143 | if (first == -1)
144 | {
145 | table.className = "";
146 | status.innerHTML = "No results found, displaying all";
147 | }
148 | else if (first == 0 && last == children.length - 1)
149 | {
150 | table.className = "";
151 | status.innerHTML = "";
152 | }
153 | else if (last - first >= max_results && !full)
154 | {
155 | table.className = "";
156 | status.innerHTML = "More than " + max_results + ", press Search to display";
157 | }
158 | else
159 | {
160 | // decide what you need to clear/show
161 | if (shown_range)
162 | setclass(shown_range[0], shown_range[1], "indexrow");
163 | setclass(first, last, "indexshow");
164 | shown_range = [first, last];
165 | table.className = "indexsearch";
166 | status.innerHTML = "";
167 | }
168 |
169 |
170 | function setclass(first, last, status)
171 | {
172 | for (var i = first; i <= last; i++)
173 | {
174 | children[i].className = status;
175 | }
176 | }
177 |
178 |
179 | // do a binary search, treating 0 as ...
180 | // return either -1 (no 0's found) or location of most far match
181 | function bisect(dir)
182 | {
183 | var first = 0, finish = children.length - 1;
184 | var mid, success = false;
185 |
186 | while (finish - first > 3)
187 | {
188 | mid = Math.floor((finish + first) / 2);
189 |
190 | var i = checkitem(mid);
191 | if (i == 0) i = dir;
192 | if (i == -1)
193 | finish = mid;
194 | else
195 | first = mid;
196 | }
197 | var a = (dir == 1 ? first : finish);
198 | var b = (dir == 1 ? finish : first);
199 | for (var i = b; i != a - dir; i -= dir)
200 | {
201 | if (checkitem(i) == 0) return i;
202 | }
203 | return -1;
204 | }
205 |
206 |
207 | // from an index, decide what the result is
208 | // 0 = match, -1 is lower, 1 is higher
209 | function checkitem(i)
210 | {
211 | var s = getitem(i).toLowerCase().substr(0, text.length);
212 | if (s == text) return 0;
213 | else return (s > text ? -1 : 1);
214 | }
215 |
216 |
217 | // from an index, get its string
218 | // this abstracts over alternates
219 | function getitem(i)
220 | {
221 | for ( ; i >= 0; i--)
222 | {
223 | var s = children[i].firstChild.firstChild.data;
224 | if (s.indexOf(' ') == -1)
225 | return s;
226 | }
227 | return ""; // should never be reached
228 | }
229 | }
230 |
231 | function setSynopsis(filename) {
232 | if (parent.window.synopsis && parent.window.synopsis.location) {
233 | if (parent.window.synopsis.location.replace) {
234 | // In Firefox this avoids adding the change to the history.
235 | parent.window.synopsis.location.replace(filename);
236 | } else {
237 | parent.window.synopsis.location = filename;
238 | }
239 | }
240 | }
241 |
242 | function addMenuItem(html) {
243 | var menu = document.getElementById("page-menu");
244 | if (menu) {
245 | var btn = menu.firstChild.cloneNode(false);
246 | btn.innerHTML = html;
247 | menu.appendChild(btn);
248 | }
249 | }
250 |
251 | function adjustForFrames() {
252 | var bodyCls;
253 |
254 | if (parent.location.href == window.location.href) {
255 | // not in frames, so add Frames button
256 | addMenuItem("Frames");
257 | bodyCls = "no-frame";
258 | }
259 | else {
260 | bodyCls = "in-frame";
261 | }
262 | addClass(document.body, bodyCls);
263 | }
264 |
265 | function reframe() {
266 | setCookie("haddock-reframe", document.URL);
267 | window.location = "frames.html";
268 | }
269 |
270 | function postReframe() {
271 | var s = getCookie("haddock-reframe");
272 | if (s) {
273 | parent.window.main.location = s;
274 | clearCookie("haddock-reframe");
275 | }
276 | }
277 |
278 | function styles() {
279 | var i, a, es = document.getElementsByTagName("link"), rs = [];
280 | for (i = 0; a = es[i]; i++) {
281 | if(a.rel.indexOf("style") != -1 && a.title) {
282 | rs.push(a);
283 | }
284 | }
285 | return rs;
286 | }
287 |
288 | function addStyleMenu() {
289 | var as = styles();
290 | var i, a, btns = "";
291 | for(i=0; a = as[i]; i++) {
292 | btns += "
"
294 | + a.title + ""
295 | }
296 | if (as.length > 1) {
297 | var h = "";
301 | addMenuItem(h);
302 | }
303 | }
304 |
305 | function setActiveStyleSheet(title) {
306 | var as = styles();
307 | var i, a, found;
308 | for(i=0; a = as[i]; i++) {
309 | a.disabled = true;
310 | // need to do this always, some browsers are edge triggered
311 | if(a.title == title) {
312 | found = a;
313 | }
314 | }
315 | if (found) {
316 | found.disabled = false;
317 | setCookie("haddock-style", title);
318 | }
319 | else {
320 | as[0].disabled = false;
321 | clearCookie("haddock-style");
322 | }
323 | styleMenu(false);
324 | }
325 |
326 | function resetStyle() {
327 | var s = getCookie("haddock-style");
328 | if (s) setActiveStyleSheet(s);
329 | }
330 |
331 |
332 | function styleMenu(show) {
333 | var m = document.getElementById('style-menu');
334 | if (m) toggleShow(m, show);
335 | }
336 |
337 |
338 | function pageLoad() {
339 | addStyleMenu();
340 | adjustForFrames();
341 | resetStyle();
342 | restoreCollapsed();
343 | }
344 |
345 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/externals/OSC-route.mxo/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 14E46
7 | CFBundleDevelopmentRegion
8 | English
9 | CFBundleExecutable
10 | OSC-route
11 | CFBundleIdentifier
12 | com.cnmat.OSC-route
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundlePackageType
16 | iLaX
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1.0
21 | CSResourcesFileMapped
22 |
23 | DTCompiler
24 | com.apple.compilers.llvm.clang.1_0
25 | DTPlatformBuild
26 | 6E35b
27 | DTPlatformVersion
28 | GM
29 | DTSDKBuild
30 | 14D125
31 | DTSDKName
32 | macosx10.10
33 | DTXcode
34 | 0640
35 | DTXcodeBuild
36 | 6E35b
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/externals/OSC-route.mxo/Contents/MacOS/OSC-route:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/externals/OSC-route.mxo/Contents/MacOS/OSC-route
--------------------------------------------------------------------------------
/Tidal-MaxMsp/media/hslogo-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/media/hslogo-16.png
--------------------------------------------------------------------------------
/Tidal-MaxMsp/media/minus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/media/minus.gif
--------------------------------------------------------------------------------
/Tidal-MaxMsp/media/plus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/media/plus.gif
--------------------------------------------------------------------------------
/Tidal-MaxMsp/media/synopsis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/media/synopsis.png
--------------------------------------------------------------------------------
/Tidal-MaxMsp/media/tidal-max.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/media/tidal-max.gif
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Author name here (c) 2018
2 |
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 |
8 | * Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 |
11 | * Redistributions in binary form must reproduce the above
12 | copyright notice, this list of conditions and the following
13 | disclaimer in the documentation and/or other materials provided
14 | with the distribution.
15 |
16 | * Neither the name of Author name here nor the names of other
17 | contributors may be used to endorse or promote products derived
18 | from this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.conf:
--------------------------------------------------------------------------------
1 | name: MaxMspOsc
2 | version: 0.1.0.0
3 | id: MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH
4 | key: MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH
5 | license: BSD3
6 | copyright: 2018 Author name here
7 | maintainer: example@example.com
8 | homepage: https://github.com/githubuser/MaxMspOsc#readme
9 | category: Web
10 | author: Author name here
11 | exposed: True
12 | exposed-modules:
13 | Sound.Tidal.MaxMspOsc
14 | abi:
15 | trusted: False
16 | import-dirs: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build
17 | library-dirs: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build
18 | data-dir: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc
19 | hs-libraries: HSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH
20 | depends:
21 | base-4.9.0.0 tidal-0.9.6-KGZzHkkaZ4355BtcG1PTOw
22 | haddock-interfaces: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock
23 | haddock-html: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc
24 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.cabal:
--------------------------------------------------------------------------------
1 | name: MaxMspOsc
2 | version: 0.1.0.0
3 | -- synopsis:
4 | -- description:
5 | homepage: https://github.com/githubuser/MaxMspOsc#readme
6 | license: BSD3
7 | license-file: LICENSE
8 | author: Author name here
9 | maintainer: example@example.com
10 | copyright: 2018 Author name here
11 | category: Web
12 | build-type: Simple
13 | extra-source-files: README.md
14 | cabal-version: >=1.10
15 |
16 | library
17 | hs-source-dirs: src
18 | exposed-modules: Sound.Tidal.MaxMspOsc
19 | build-depends: base >= 4.7 && < 5, tidal
20 | default-language: Haskell2010
21 | default-extensions: OverloadedStrings
22 |
23 | source-repository head
24 | type: git
25 | location: https://github.com/githubuser/MaxMspOsc
26 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.dyn_hi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.dyn_hi
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.dyn_o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.dyn_o
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.haddock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.haddock
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.hi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.hi
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.hs:
--------------------------------------------------------------------------------
1 | module Sound.Tidal.MaxMspOsc where
2 |
3 | import Sound.Tidal.Context
4 | import Sound.Tidal.Scales
5 | import Sound.Tidal.Chords
6 | import Sound.Tidal.OscStream
7 | --
8 | -- Send OSC via TIDAL
9 | -- taken from: http://ask.tidalcycles.org/question/367/how-to-define-a-custom-osc-message/
10 | --
11 |
12 | maxmspShape = Shape {
13 | -- Define the parameters. The first bit is the type - S for
14 | -- string, F for float, I for integer. The second part is the
15 | -- name of the parameter. The third is the default value for the
16 | -- parameter (only used if 'namedParams' defined below is set to
17 | -- 'False', so set to Nothing here).
18 | params = [
19 | I "note" Nothing,
20 | F "param1" Nothing,
21 | F "velocity" (Just 1),
22 | F "param2" Nothing,
23 | F "param3" Nothing,
24 | F "param4" Nothing,
25 | F "param5" Nothing,
26 | F "param6" Nothing,
27 | F "param7" Nothing,
28 | F "param8" Nothing,
29 | F "warp" Nothing,
30 | F "fold" Nothing,
31 | F "filterenv" Nothing,
32 | F "pitchenv" Nothing,
33 | F "lfo1" Nothing,
34 | F "lfo2" Nothing,
35 | F "lfo3" Nothing
36 | ],
37 | -- Whether to add the current cycles per second to the message
38 | cpsStamp = True,
39 | -- How far ahead of time to send the message
40 | latency = 0
41 | }
42 | --
43 | maxmspSlang streamNo = OscSlang {
44 | -- the OSC 'path'
45 | path = "/fromTidal/" ++ (show streamNo), -- Will become something like /fromTidal/1 or /fromTidal/2 etc
46 | -- Whether to timestamp the message with
47 | -- its logical time - can be 'BundleStamp'
48 | -- (put in a timestamped bundle),
49 | -- 'MessageStamp' (put in the message
50 | -- parameters), or 'NoStamp' (don't timestamp)
51 | timestamp = NoStamp,
52 | -- Whether to interleave the parameter
53 | -- names in the message. If this isn't
54 | -- set, all parameters will be sent, using
55 | -- defaults set above if they're not
56 | -- given in a tidal pattern
57 | namedParams = True,
58 | -- Parameters to stick on the beginning of
59 | -- a message
60 | preamble = []
61 | }
62 | -- a function to start your OSC stream, where "127.0.0.1" is the
63 | -- target host and 7000 the port number
64 | maxmspStream targetip targetport streamNo = do
65 | s <- makeConnection targetip targetport (maxmspSlang streamNo)
66 | stream (Backend s $ (\_ _ _ -> return ())) maxmspShape
67 | -- pattern parameter functions, where makeS is for string, makeF for floats, and so on.
68 | -- Many parameter functions are already defined and don't need re-defining, see here:
69 | -- https://github.com/tidalcycles/Tidal/blob/master/Sound/Tidal/Params.hs
70 | --
71 | warp = makeF maxmspShape "warp"
72 | fold = makeF maxmspShape "fold"
73 | filterenv = makeF maxmspShape "filterenv"
74 | pitchenv = makeF maxmspShape "pitchenv"
75 | lfo1 = makeF maxmspShape "lfo1"
76 | lfo2 = makeF maxmspShape "lfo2"
77 | lfo3 = makeF maxmspShape "lfo3"
78 | --
79 | param1 = makeF maxmspShape "param1"
80 | param2 = makeF maxmspShape "param2"
81 | param3 = makeF maxmspShape "param3"
82 | param4 = makeF maxmspShape "param4"
83 | param5 = makeF maxmspShape "param5"
84 | param6 = makeF maxmspShape "param6"
85 | param7 = makeF maxmspShape "param7"
86 | param8 = makeF maxmspShape "param8"
87 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.o
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.p_hi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.p_hi
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/MaxMspOsc.p_o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/MaxMspOsc.p_o
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/Paths_MaxMspOsc.hs:
--------------------------------------------------------------------------------
1 | {-# LANGUAGE CPP #-}
2 | {-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
3 | {-# OPTIONS_GHC -fno-warn-implicit-prelude #-}
4 | module Paths_MaxMspOsc (
5 | version,
6 | getBinDir, getLibDir, getDataDir, getLibexecDir,
7 | getDataFileName, getSysconfDir
8 | ) where
9 |
10 | import qualified Control.Exception as Exception
11 | import Data.Version (Version(..))
12 | import System.Environment (getEnv)
13 | import Prelude
14 |
15 | #if defined(VERSION_base)
16 |
17 | #if MIN_VERSION_base(4,0,0)
18 | catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
19 | #else
20 | catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
21 | #endif
22 |
23 | #else
24 | catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
25 | #endif
26 | catchIO = Exception.catch
27 |
28 | version :: Version
29 | version = Version [0,1,0,0] []
30 | bindir, libdir, datadir, libexecdir, sysconfdir :: FilePath
31 |
32 | bindir = "/Users/madskjeldgaard/Library/Haskell/bin"
33 | libdir = "/Users/madskjeldgaard/Library/Haskell/ghc-8.0.1-x86_64/lib/MaxMspOsc-0.1.0.0"
34 | datadir = "/Users/madskjeldgaard/Library/Haskell/share/ghc-8.0.1-x86_64/MaxMspOsc-0.1.0.0"
35 | libexecdir = "/Users/madskjeldgaard/Library/Haskell/libexec"
36 | sysconfdir = "/Users/madskjeldgaard/Library/Haskell/etc"
37 |
38 | getBinDir, getLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath
39 | getBinDir = catchIO (getEnv "MaxMspOsc_bindir") (\_ -> return bindir)
40 | getLibDir = catchIO (getEnv "MaxMspOsc_libdir") (\_ -> return libdir)
41 | getDataDir = catchIO (getEnv "MaxMspOsc_datadir") (\_ -> return datadir)
42 | getLibexecDir = catchIO (getEnv "MaxMspOsc_libexecdir") (\_ -> return libexecdir)
43 | getSysconfDir = catchIO (getEnv "MaxMspOsc_sysconfdir") (\_ -> return sysconfdir)
44 |
45 | getDataFileName :: FilePath -> IO FilePath
46 | getDataFileName name = do
47 | dir <- getDataDir
48 | return (dir ++ "/" ++ name)
49 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/README.md:
--------------------------------------------------------------------------------
1 | # MaxMspOsc
2 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/Setup.hs:
--------------------------------------------------------------------------------
1 | import Distribution.Simple
2 | main = defaultMain
3 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/Sound-Tidal-MaxMspOsc.html:
--------------------------------------------------------------------------------
1 | Sound.Tidal.MaxMspOsc
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/cabal_macros.h:
--------------------------------------------------------------------------------
1 | /* DO NOT EDIT: This file is automatically generated by Cabal */
2 |
3 | /* package MaxMspOsc-0.1.0.0 */
4 | #define VERSION_MaxMspOsc "0.1.0.0"
5 | #define MIN_VERSION_MaxMspOsc(major1,major2,minor) (\
6 | (major1) < 0 || \
7 | (major1) == 0 && (major2) < 1 || \
8 | (major1) == 0 && (major2) == 1 && (minor) <= 0)
9 |
10 | /* package base-4.9.0.0 */
11 | #define VERSION_base "4.9.0.0"
12 | #define MIN_VERSION_base(major1,major2,minor) (\
13 | (major1) < 4 || \
14 | (major1) == 4 && (major2) < 9 || \
15 | (major1) == 4 && (major2) == 9 && (minor) <= 0)
16 |
17 | /* package tidal-0.9.6 */
18 | #define VERSION_tidal "0.9.6"
19 | #define MIN_VERSION_tidal(major1,major2,minor) (\
20 | (major1) < 0 || \
21 | (major1) == 0 && (major2) < 9 || \
22 | (major1) == 0 && (major2) == 9 && (minor) <= 6)
23 |
24 | /* tool cpphs-1.20.2 */
25 | #define TOOL_VERSION_cpphs "1.20.2"
26 | #define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\
27 | (major1) < 1 || \
28 | (major1) == 1 && (major2) < 20 || \
29 | (major1) == 1 && (major2) == 20 && (minor) <= 2)
30 |
31 | /* tool gcc-4.2.1 */
32 | #define TOOL_VERSION_gcc "4.2.1"
33 | #define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
34 | (major1) < 4 || \
35 | (major1) == 4 && (major2) < 2 || \
36 | (major1) == 4 && (major2) == 2 && (minor) <= 1)
37 |
38 | /* tool ghc-8.0.1 */
39 | #define TOOL_VERSION_ghc "8.0.1"
40 | #define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
41 | (major1) < 8 || \
42 | (major1) == 8 && (major2) < 0 || \
43 | (major1) == 8 && (major2) == 0 && (minor) <= 1)
44 |
45 | /* tool ghc-pkg-8.0.1 */
46 | #define TOOL_VERSION_ghc_pkg "8.0.1"
47 | #define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
48 | (major1) < 8 || \
49 | (major1) == 8 && (major2) < 0 || \
50 | (major1) == 8 && (major2) == 0 && (minor) <= 1)
51 |
52 | /* tool haddock-2.17.2 */
53 | #define TOOL_VERSION_haddock "2.17.2"
54 | #define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
55 | (major1) < 2 || \
56 | (major1) == 2 && (major2) < 17 || \
57 | (major1) == 2 && (major2) == 17 && (minor) <= 2)
58 |
59 | /* tool happy-1.19.5 */
60 | #define TOOL_VERSION_happy "1.19.5"
61 | #define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
62 | (major1) < 1 || \
63 | (major1) == 1 && (major2) < 19 || \
64 | (major1) == 1 && (major2) == 19 && (minor) <= 5)
65 |
66 | /* tool hpc-0.67 */
67 | #define TOOL_VERSION_hpc "0.67"
68 | #define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
69 | (major1) < 0 || \
70 | (major1) == 0 && (major2) < 67 || \
71 | (major1) == 0 && (major2) == 67 && (minor) <= 0)
72 |
73 | /* tool hsc2hs-0.68 */
74 | #define TOOL_VERSION_hsc2hs "0.68"
75 | #define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
76 | (major1) < 0 || \
77 | (major1) == 0 && (major2) < 68 || \
78 | (major1) == 0 && (major2) == 68 && (minor) <= 0)
79 |
80 | /* tool hscolour-1.24 */
81 | #define TOOL_VERSION_hscolour "1.24"
82 | #define MIN_TOOL_VERSION_hscolour(major1,major2,minor) (\
83 | (major1) < 1 || \
84 | (major1) == 1 && (major2) < 24 || \
85 | (major1) == 1 && (major2) == 24 && (minor) <= 0)
86 |
87 | /* tool pkg-config-0.29.2 */
88 | #define TOOL_VERSION_pkg_config "0.29.2"
89 | #define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
90 | (major1) < 0 || \
91 | (major1) == 0 && (major2) < 29 || \
92 | (major1) == 0 && (major2) == 29 && (minor) <= 2)
93 |
94 | #define CURRENT_COMPONENT_ID "MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH"
95 |
96 | #define CURRENT_PACKAGE_KEY "MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH"
97 |
98 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/doc-index.html:
--------------------------------------------------------------------------------
1 | MaxMspOsc-0.1.0.0 (Index)
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/frames.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
22 |
23 |
30 |
31 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/index-frames.html:
--------------------------------------------------------------------------------
1 | MaxMspOsc-0.1.0.0
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/index.html:
--------------------------------------------------------------------------------
1 | MaxMspOsc-0.1.0.0
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH-ghc8.0.1.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH-ghc8.0.1.dylib
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.a
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH_p.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH_p.a
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/mini_Sound-Tidal-MaxMspOsc.html:
--------------------------------------------------------------------------------
1 | Sound.Tidal.MaxMspOsc
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/ocean.css:
--------------------------------------------------------------------------------
1 | /* @group Fundamentals */
2 |
3 | * { margin: 0; padding: 0 }
4 |
5 | /* Is this portable? */
6 | html {
7 | background-color: white;
8 | width: 100%;
9 | height: 100%;
10 | }
11 |
12 | body {
13 | background: white;
14 | color: black;
15 | text-align: left;
16 | min-height: 100%;
17 | position: relative;
18 | }
19 |
20 | p {
21 | margin: 0.8em 0;
22 | }
23 |
24 | ul, ol {
25 | margin: 0.8em 0 0.8em 2em;
26 | }
27 |
28 | dl {
29 | margin: 0.8em 0;
30 | }
31 |
32 | dt {
33 | font-weight: bold;
34 | }
35 | dd {
36 | margin-left: 2em;
37 | }
38 |
39 | a { text-decoration: none; }
40 | a[href]:link { color: rgb(196,69,29); }
41 | a[href]:visited { color: rgb(171,105,84); }
42 | a[href]:hover { text-decoration:underline; }
43 |
44 | a[href].def:link, a[href].def:visited { color: black; }
45 | a[href].def:hover { color: rgb(78, 98, 114); }
46 |
47 | /* @end */
48 |
49 | /* @group Fonts & Sizes */
50 |
51 | /* Basic technique & IE workarounds from YUI 3
52 | For reasons, see:
53 | http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
54 | */
55 |
56 | body {
57 | font:13px/1.4 sans-serif;
58 | *font-size:small; /* for IE */
59 | *font:x-small; /* for IE in quirks mode */
60 | }
61 |
62 | h1 { font-size: 146.5%; /* 19pt */ }
63 | h2 { font-size: 131%; /* 17pt */ }
64 | h3 { font-size: 116%; /* 15pt */ }
65 | h4 { font-size: 100%; /* 13pt */ }
66 | h5 { font-size: 100%; /* 13pt */ }
67 |
68 | select, input, button, textarea {
69 | font:99% sans-serif;
70 | }
71 |
72 | table {
73 | font-size:inherit;
74 | font:100%;
75 | }
76 |
77 | pre, code, kbd, samp, tt, .src {
78 | font-family:monospace;
79 | *font-size:108%;
80 | line-height: 124%;
81 | }
82 |
83 | .links, .link {
84 | font-size: 85%; /* 11pt */
85 | }
86 |
87 | #module-header .caption {
88 | font-size: 182%; /* 24pt */
89 | }
90 |
91 | .info {
92 | font-size: 85%; /* 11pt */
93 | }
94 |
95 | #table-of-contents, #synopsis {
96 | /* font-size: 85%; /* 11pt */
97 | }
98 |
99 |
100 | /* @end */
101 |
102 | /* @group Common */
103 |
104 | .caption, h1, h2, h3, h4, h5, h6 {
105 | font-weight: bold;
106 | color: rgb(78,98,114);
107 | margin: 0.8em 0 0.4em;
108 | }
109 |
110 | * + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {
111 | margin-top: 2em;
112 | }
113 |
114 | h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
115 | margin-top: inherit;
116 | }
117 |
118 | ul.links {
119 | list-style: none;
120 | text-align: left;
121 | float: right;
122 | display: inline-table;
123 | margin: 0 0 0 1em;
124 | }
125 |
126 | ul.links li {
127 | display: inline;
128 | border-left: 1px solid #d5d5d5;
129 | white-space: nowrap;
130 | padding: 0;
131 | }
132 |
133 | ul.links li a {
134 | padding: 0.2em 0.5em;
135 | }
136 |
137 | .hide { display: none; }
138 | .show { display: inherit; }
139 | .clear { clear: both; }
140 |
141 | .collapser {
142 | background-image: url(minus.gif);
143 | background-repeat: no-repeat;
144 | }
145 | .expander {
146 | background-image: url(plus.gif);
147 | background-repeat: no-repeat;
148 | }
149 | .collapser, .expander {
150 | padding-left: 14px;
151 | margin-left: -14px;
152 | cursor: pointer;
153 | }
154 | p.caption.collapser,
155 | p.caption.expander {
156 | background-position: 0 0.4em;
157 | }
158 |
159 | .instance.collapser, .instance.expander {
160 | margin-left: 0px;
161 | background-position: left center;
162 | min-width: 9px;
163 | min-height: 9px;
164 | }
165 |
166 |
167 | pre {
168 | padding: 0.25em;
169 | margin: 0.8em 0;
170 | background: rgb(229,237,244);
171 | overflow: auto;
172 | border-bottom: 0.25em solid white;
173 | /* white border adds some space below the box to compensate
174 | for visual extra space that paragraphs have between baseline
175 | and the bounding box */
176 | }
177 |
178 | .src {
179 | background: #f0f0f0;
180 | padding: 0.2em 0.5em;
181 | }
182 |
183 | .keyword { font-weight: normal; }
184 | .def { font-weight: bold; }
185 |
186 | @media print {
187 | #footer { display: none; }
188 | }
189 |
190 | /* @end */
191 |
192 | /* @group Page Structure */
193 |
194 | #content {
195 | margin: 0 auto;
196 | padding: 0 2em 6em;
197 | }
198 |
199 | #package-header {
200 | background: rgb(41,56,69);
201 | border-top: 5px solid rgb(78,98,114);
202 | color: #ddd;
203 | padding: 0.2em;
204 | position: relative;
205 | text-align: left;
206 | }
207 |
208 | #package-header .caption {
209 | background: url(hslogo-16.png) no-repeat 0em;
210 | color: white;
211 | margin: 0 2em;
212 | font-weight: normal;
213 | font-style: normal;
214 | padding-left: 2em;
215 | }
216 |
217 | #package-header a:link, #package-header a:visited { color: white; }
218 | #package-header a:hover { background: rgb(78,98,114); }
219 |
220 | #module-header .caption {
221 | color: rgb(78,98,114);
222 | font-weight: bold;
223 | border-bottom: 1px solid #ddd;
224 | }
225 |
226 | table.info {
227 | float: right;
228 | padding: 0.5em 1em;
229 | border: 1px solid #ddd;
230 | color: rgb(78,98,114);
231 | background-color: #fff;
232 | max-width: 40%;
233 | border-spacing: 0;
234 | position: relative;
235 | top: -0.5em;
236 | margin: 0 0 0 2em;
237 | }
238 |
239 | .info th {
240 | padding: 0 1em 0 0;
241 | }
242 |
243 | div#style-menu-holder {
244 | position: relative;
245 | z-index: 2;
246 | display: inline;
247 | }
248 |
249 | #style-menu {
250 | position: absolute;
251 | z-index: 1;
252 | overflow: visible;
253 | background: #374c5e;
254 | margin: 0;
255 | text-align: center;
256 | right: 0;
257 | padding: 0;
258 | top: 1.25em;
259 | }
260 |
261 | #style-menu li {
262 | display: list-item;
263 | border-style: none;
264 | margin: 0;
265 | padding: 0;
266 | color: #000;
267 | list-style-type: none;
268 | }
269 |
270 | #style-menu li + li {
271 | border-top: 1px solid #919191;
272 | }
273 |
274 | #style-menu a {
275 | width: 6em;
276 | padding: 3px;
277 | display: block;
278 | }
279 |
280 | #footer {
281 | background: #ddd;
282 | border-top: 1px solid #aaa;
283 | padding: 0.5em 0;
284 | color: #666;
285 | text-align: center;
286 | position: absolute;
287 | bottom: 0;
288 | width: 100%;
289 | height: 3em;
290 | }
291 |
292 | /* @end */
293 |
294 | /* @group Front Matter */
295 |
296 | #table-of-contents {
297 | float: right;
298 | clear: right;
299 | background: #faf9dc;
300 | border: 1px solid #d8d7ad;
301 | padding: 0.5em 1em;
302 | max-width: 20em;
303 | margin: 0.5em 0 1em 1em;
304 | }
305 |
306 | #table-of-contents .caption {
307 | text-align: center;
308 | margin: 0;
309 | }
310 |
311 | #table-of-contents ul {
312 | list-style: none;
313 | margin: 0;
314 | }
315 |
316 | #table-of-contents ul ul {
317 | margin-left: 2em;
318 | }
319 |
320 | #description .caption {
321 | display: none;
322 | }
323 |
324 | #synopsis {
325 | display: none;
326 | }
327 |
328 | .no-frame #synopsis {
329 | display: block;
330 | position: fixed;
331 | right: 0;
332 | height: 80%;
333 | top: 10%;
334 | padding: 0;
335 | max-width: 75%;
336 | }
337 |
338 | #synopsis .caption {
339 | float: left;
340 | width: 29px;
341 | color: rgba(255,255,255,0);
342 | height: 110px;
343 | margin: 0;
344 | font-size: 1px;
345 | padding: 0;
346 | }
347 |
348 | #synopsis p.caption.collapser {
349 | background: url(synopsis.png) no-repeat -64px -8px;
350 | }
351 |
352 | #synopsis p.caption.expander {
353 | background: url(synopsis.png) no-repeat 0px -8px;
354 | }
355 |
356 | #synopsis ul {
357 | height: 100%;
358 | overflow: auto;
359 | padding: 0.5em;
360 | margin: 0;
361 | }
362 |
363 | #synopsis ul ul {
364 | overflow: hidden;
365 | }
366 |
367 | #synopsis ul,
368 | #synopsis ul li.src {
369 | background-color: #faf9dc;
370 | white-space: nowrap;
371 | list-style: none;
372 | margin-left: 0;
373 | }
374 |
375 | /* @end */
376 |
377 | /* @group Main Content */
378 |
379 | #interface div.top { margin: 2em 0; }
380 | #interface h1 + div.top,
381 | #interface h2 + div.top,
382 | #interface h3 + div.top,
383 | #interface h4 + div.top,
384 | #interface h5 + div.top {
385 | margin-top: 1em;
386 | }
387 | #interface .src .selflink,
388 | #interface .src .link {
389 | float: right;
390 | color: #919191;
391 | background: #f0f0f0;
392 | padding: 0 0.5em 0.2em;
393 | margin: 0 -0.5em 0 0;
394 | }
395 | #interface .src .selflink {
396 | border-left: 1px solid #919191;
397 | margin: 0 -0.5em 0 0.5em;
398 | }
399 |
400 | #interface span.fixity {
401 | color: #919191;
402 | border-left: 1px solid #919191;
403 | padding: 0.2em 0.5em 0.2em 0.5em;
404 | margin: 0 -1em 0 1em;
405 | }
406 |
407 | #interface span.rightedge {
408 | border-left: 1px solid #919191;
409 | padding: 0.2em 0 0.2em 0;
410 | margin: 0 0 0 1em;
411 | }
412 |
413 | #interface table { border-spacing: 2px; }
414 | #interface td {
415 | vertical-align: top;
416 | padding-left: 0.5em;
417 | }
418 | #interface td.src {
419 | white-space: nowrap;
420 | }
421 | #interface td.doc p {
422 | margin: 0;
423 | }
424 | #interface td.doc p + p {
425 | margin-top: 0.8em;
426 | }
427 |
428 | .clearfix:after {
429 | clear: both;
430 | content: " ";
431 | display: block;
432 | height: 0;
433 | visibility: hidden;
434 | }
435 |
436 | .subs ul {
437 | list-style: none;
438 | display: table;
439 | margin: 0;
440 | }
441 |
442 | .subs ul li {
443 | display: table-row;
444 | }
445 |
446 | .subs ul li dfn {
447 | display: table-cell;
448 | font-style: normal;
449 | font-weight: bold;
450 | margin: 1px 0;
451 | white-space: nowrap;
452 | }
453 |
454 | .subs ul li > .doc {
455 | display: table-cell;
456 | padding-left: 0.5em;
457 | margin-bottom: 0.5em;
458 | }
459 |
460 | .subs ul li > .doc p {
461 | margin: 0;
462 | }
463 |
464 | /* Render short-style data instances */
465 | .inst ul {
466 | height: 100%;
467 | padding: 0.5em;
468 | margin: 0;
469 | }
470 |
471 | .inst, .inst li {
472 | list-style: none;
473 | margin-left: 1em;
474 | }
475 |
476 | /* Workaround for bug in Firefox (issue #384) */
477 | .inst-left {
478 | float: left;
479 | }
480 |
481 | .top p.src {
482 | border-top: 1px solid #ccc;
483 | }
484 |
485 | .subs, .doc {
486 | /* use this selector for one level of indent */
487 | padding-left: 2em;
488 | }
489 |
490 | .warning {
491 | color: red;
492 | }
493 |
494 | .arguments {
495 | margin-top: -0.4em;
496 | }
497 | .arguments .caption {
498 | display: none;
499 | }
500 |
501 | .fields { padding-left: 1em; }
502 |
503 | .fields .caption { display: none; }
504 |
505 | .fields p { margin: 0 0; }
506 |
507 | /* this seems bulky to me
508 | .methods, .constructors {
509 | background: #f8f8f8;
510 | border: 1px solid #eee;
511 | }
512 | */
513 |
514 | /* @end */
515 |
516 | /* @group Auxillary Pages */
517 |
518 |
519 | .extension-list {
520 | list-style-type: none;
521 | margin-left: 0;
522 | }
523 |
524 | #mini {
525 | margin: 0 auto;
526 | padding: 0 1em 1em;
527 | }
528 |
529 | #mini > * {
530 | font-size: 93%; /* 12pt */
531 | }
532 |
533 | #mini #module-list .caption,
534 | #mini #module-header .caption {
535 | font-size: 125%; /* 15pt */
536 | }
537 |
538 | #mini #interface h1,
539 | #mini #interface h2,
540 | #mini #interface h3,
541 | #mini #interface h4 {
542 | font-size: 109%; /* 13pt */
543 | margin: 1em 0 0;
544 | }
545 |
546 | #mini #interface .top,
547 | #mini #interface .src {
548 | margin: 0;
549 | }
550 |
551 | #mini #module-list ul {
552 | list-style: none;
553 | margin: 0;
554 | }
555 |
556 | #alphabet ul {
557 | list-style: none;
558 | padding: 0;
559 | margin: 0.5em 0 0;
560 | text-align: center;
561 | }
562 |
563 | #alphabet li {
564 | display: inline;
565 | margin: 0 0.25em;
566 | }
567 |
568 | #alphabet a {
569 | font-weight: bold;
570 | }
571 |
572 | #index .caption,
573 | #module-list .caption { font-size: 131%; /* 17pt */ }
574 |
575 | #index table {
576 | margin-left: 2em;
577 | }
578 |
579 | #index .src {
580 | font-weight: bold;
581 | }
582 | #index .alt {
583 | font-size: 77%; /* 10pt */
584 | font-style: italic;
585 | padding-left: 2em;
586 | }
587 |
588 | #index td + td {
589 | padding-left: 1em;
590 | }
591 |
592 | #module-list ul {
593 | list-style: none;
594 | margin: 0 0 0 2em;
595 | }
596 |
597 | #module-list li {
598 | clear: right;
599 | }
600 |
601 | #module-list span.collapser,
602 | #module-list span.expander {
603 | background-position: 0 0.3em;
604 | }
605 |
606 | #module-list .package {
607 | float: right;
608 | }
609 |
610 | /* @end */
611 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/package.cache:
--------------------------------------------------------------------------------
1 | ghcpkg MaxMspOsc-0.1.0.0 MaxMspOsc (MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH base-4.9.0.0 "tidal-0.9.6-KGZzHkkaZ4355BtcG1PTOw I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build *HSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build h/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock V/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc Sound.Tidal.MaxMspOsc MaxMspOsc (MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH (MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH 2018 Author name here example@example.com Author name here .https://github.com/githubuser/MaxMspOsc#readme Web Sound Tidal MaxMspOsc I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build >/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc *HSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH base-4.9.0.0 "tidal-0.9.6-KGZzHkkaZ4355BtcG1PTOw h/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock V/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc
--------------------------------------------------------------------------------
/Tidal-MaxMsp/other/setup-config:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/Tidal-MaxMsp/other/setup-config
--------------------------------------------------------------------------------
/Tidal-MaxMsp/patchers/tidal-maxmsp.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 7,
6 | "minor" : 3,
7 | "revision" : 4,
8 | "architecture" : "x86",
9 | "modernui" : 1
10 | }
11 | ,
12 | "rect" : [ 102.0, 78.0, 1150.0, 738.0 ],
13 | "bglocked" : 0,
14 | "openinpresentation" : 0,
15 | "default_fontsize" : 12.0,
16 | "default_fontface" : 0,
17 | "default_fontname" : "Arial",
18 | "gridonopen" : 1,
19 | "gridsize" : [ 15.0, 15.0 ],
20 | "gridsnaponopen" : 1,
21 | "objectsnaponopen" : 1,
22 | "statusbarvisible" : 2,
23 | "toolbarvisible" : 1,
24 | "lefttoolbarpinned" : 0,
25 | "toptoolbarpinned" : 0,
26 | "righttoolbarpinned" : 0,
27 | "bottomtoolbarpinned" : 0,
28 | "toolbars_unpinned_last_save" : 0,
29 | "tallnewobj" : 0,
30 | "boxanimatetime" : 200,
31 | "enablehscroll" : 1,
32 | "enablevscroll" : 1,
33 | "devicewidth" : 0.0,
34 | "description" : "",
35 | "digest" : "",
36 | "tags" : "",
37 | "style" : "",
38 | "subpatcher_template" : "",
39 | "boxes" : [ {
40 | "box" : {
41 | "id" : "obj-11",
42 | "maxclass" : "message",
43 | "numinlets" : 2,
44 | "numoutlets" : 1,
45 | "outlettype" : [ "" ],
46 | "patching_rect" : [ 868.335144, 512.0, 29.5, 22.0 ],
47 | "style" : "",
48 | "text" : "dur"
49 | }
50 |
51 | }
52 | , {
53 | "box" : {
54 | "fontface" : 2,
55 | "fontsize" : 18.0,
56 | "id" : "obj-19",
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 268.920319, 189.0, 221.0, 27.0 ],
61 | "style" : "",
62 | "text" : "Tidal-MaxMsp example"
63 | }
64 |
65 | }
66 | , {
67 | "box" : {
68 | "id" : "obj-6",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "" ],
73 | "patching_rect" : [ 758.085205, 437.0, 72.0, 22.0 ],
74 | "style" : "",
75 | "text" : "loadmess 0"
76 | }
77 |
78 | }
79 | , {
80 | "box" : {
81 | "id" : "obj-5",
82 | "maxclass" : "newobj",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 525.502747, 437.0, 72.0, 22.0 ],
87 | "style" : "",
88 | "text" : "loadmess 1"
89 | }
90 |
91 | }
92 | , {
93 | "box" : {
94 | "fontface" : 0,
95 | "fontname" : "Arial",
96 | "fontsize" : 12.0,
97 | "id" : "obj-3",
98 | "linecount" : 2,
99 | "maxclass" : "comment",
100 | "numinlets" : 1,
101 | "numoutlets" : 0,
102 | "patching_rect" : [ 268.920319, 232.0, 628.914795, 33.0 ],
103 | "style" : "",
104 | "text" : "This is a simple example of receiving OSC data from Tidal. Info about installation and setup can be found here: https://github.com/datamads/tidal-maxmsp"
105 | }
106 |
107 | }
108 | , {
109 | "box" : {
110 | "id" : "obj-16",
111 | "maxclass" : "comment",
112 | "numinlets" : 1,
113 | "numoutlets" : 0,
114 | "patching_rect" : [ 329.0, 577.0, 97.0, 20.0 ],
115 | "presentation_rect" : [ 164.0, 449.0, 97.0, 20.0 ],
116 | "style" : "",
117 | "text" : "parameter value"
118 | }
119 |
120 | }
121 | , {
122 | "box" : {
123 | "id" : "obj-14",
124 | "maxclass" : "comment",
125 | "numinlets" : 1,
126 | "numoutlets" : 0,
127 | "patching_rect" : [ 815.835144, 577.0, 82.0, 20.0 ],
128 | "presentation_rect" : [ 650.835144, 449.0, 82.0, 20.0 ],
129 | "style" : "",
130 | "text" : "raw message"
131 | }
132 |
133 | }
134 | , {
135 | "box" : {
136 | "id" : "obj-12",
137 | "maxclass" : "message",
138 | "numinlets" : 2,
139 | "numoutlets" : 1,
140 | "outlettype" : [ "" ],
141 | "patching_rect" : [ 454.920319, 577.0, 348.0, 22.0 ],
142 | "presentation_rect" : [ 289.920319, 449.0, 348.0, 22.0 ],
143 | "style" : "",
144 | "text" : "cps 1. delta 0.05 cycle 1597.95 n 0 param1 0.093548"
145 | }
146 |
147 | }
148 | , {
149 | "box" : {
150 | "format" : 6,
151 | "id" : "obj-9",
152 | "maxclass" : "flonum",
153 | "numinlets" : 1,
154 | "numoutlets" : 2,
155 | "outlettype" : [ "", "bang" ],
156 | "parameter_enable" : 0,
157 | "patching_rect" : [ 269.0, 577.0, 50.0, 22.0 ],
158 | "presentation_rect" : [ 104.0, 449.0, 50.0, 22.0 ],
159 | "style" : ""
160 | }
161 |
162 | }
163 | , {
164 | "box" : {
165 | "id" : "obj-7",
166 | "linecount" : 8,
167 | "maxclass" : "comment",
168 | "numinlets" : 1,
169 | "numoutlets" : 0,
170 | "patching_rect" : [ 840.0, 396.0, 138.0, 114.0 ],
171 | "presentation_linecount" : 8,
172 | "presentation_rect" : [ 674.0, 335.0, 150.0, 20.0 ],
173 | "style" : "",
174 | "text" : "Choose a parameter from this dropdown box or pass a message to the parser to look for any tidal pattern. All of the parameters defined in this dropdown are 0.0-1.0 floats. "
175 | }
176 |
177 | }
178 | , {
179 | "box" : {
180 | "id" : "obj-4",
181 | "maxclass" : "comment",
182 | "numinlets" : 1,
183 | "numoutlets" : 0,
184 | "patching_rect" : [ 587.0, 472.0, 95.0, 20.0 ],
185 | "presentation_rect" : [ 423.0, 328.0, 150.0, 20.0 ],
186 | "style" : "",
187 | "text" : "stream number "
188 | }
189 |
190 | }
191 | , {
192 | "box" : {
193 | "id" : "obj-2",
194 | "maxclass" : "comment",
195 | "numinlets" : 1,
196 | "numoutlets" : 0,
197 | "patching_rect" : [ 377.920319, 294.0, 123.0, 20.0 ],
198 | "presentation_rect" : [ 221.920319, 264.0, 123.0, 20.0 ],
199 | "style" : "",
200 | "text" : "receive on port 8020\n"
201 | }
202 |
203 | }
204 | , {
205 | "box" : {
206 | "annotation" : "streamnumber",
207 | "bgcolor" : [ 0.290196, 0.309804, 0.301961, 0.46 ],
208 | "fontname" : "Ableton Sans Medium",
209 | "fontsize" : 9.5,
210 | "hint" : "streamnumber",
211 | "id" : "obj-10",
212 | "maxclass" : "number",
213 | "minimum" : 0,
214 | "numinlets" : 1,
215 | "numoutlets" : 2,
216 | "outlettype" : [ "", "bang" ],
217 | "parameter_enable" : 0,
218 | "patching_rect" : [ 525.502747, 472.0, 51.0, 18.0 ],
219 | "presentation" : 1,
220 | "presentation_rect" : [ 64.0, 129.0, 31.0, 18.0 ],
221 | "style" : "",
222 | "textcolor" : [ 0.994051, 0.710779, 0.19417, 1.0 ],
223 | "triangle" : 0,
224 | "varname" : "number[1]"
225 | }
226 |
227 | }
228 | , {
229 | "box" : {
230 | "activebgcolor" : [ 0.0, 0.0, 0.0, 0.0 ],
231 | "annotation" : "Tidal parameter to route",
232 | "bordercolor" : [ 1.0, 0.709804, 0.196078, 1.0 ],
233 | "focusbordercolor" : [ 0.994051, 0.710779, 0.19417, 1.0 ],
234 | "hint" : "Tidal parameter to route",
235 | "hltcolor" : [ 1.0, 0.709804, 0.196078, 1.0 ],
236 | "id" : "obj-35",
237 | "maxclass" : "live.menu",
238 | "numinlets" : 1,
239 | "numoutlets" : 3,
240 | "outlettype" : [ "", "", "float" ],
241 | "parameter_enable" : 1,
242 | "patching_rect" : [ 758.085205, 472.0, 71.0, 15.0 ],
243 | "presentation" : 1,
244 | "presentation_rect" : [ 135.0, 34.0, 68.0, 15.0 ],
245 | "saved_attribute_attributes" : {
246 | "valueof" : {
247 | "parameter_longname" : "Source1",
248 | "parameter_shortname" : "Source 1",
249 | "parameter_type" : 2,
250 | "parameter_enum" : [ "velocity", "pan", "attack", "release", "sustain", "warp", "fold", "filterenv", "pitchenv", "lfo1", "lfo2", "lfo3", "portamento", "size", "room", "resonance", "hresonance", "param1", "param2", "param3", "param4", "param5", "param6", "param7", "param8" ],
251 | "parameter_initial_enable" : 1,
252 | "parameter_initial" : [ 0.0 ],
253 | "parameter_annotation_name" : "tidalparam"
254 | }
255 |
256 | }
257 | ,
258 | "textcolor" : [ 1.0, 0.709804, 0.196078, 1.0 ],
259 | "tricolor" : [ 1.0, 0.709804, 0.196078, 1.0 ],
260 | "varname" : "live.menu[6]"
261 | }
262 |
263 | }
264 | , {
265 | "box" : {
266 | "id" : "obj-38",
267 | "maxclass" : "newobj",
268 | "numinlets" : 3,
269 | "numoutlets" : 2,
270 | "outlettype" : [ "", "" ],
271 | "patching_rect" : [ 268.920319, 512.0, 534.0, 22.0 ],
272 | "style" : "",
273 | "text" : "tidal-osc-parse"
274 | }
275 |
276 | }
277 | , {
278 | "box" : {
279 | "id" : "obj-39",
280 | "maxclass" : "newobj",
281 | "numinlets" : 1,
282 | "numoutlets" : 1,
283 | "outlettype" : [ "" ],
284 | "patching_rect" : [ 268.920319, 294.0, 99.0, 22.0 ],
285 | "presentation_rect" : [ 103.920326, 264.0, 99.0, 22.0 ],
286 | "style" : "",
287 | "text" : "udpreceive 8020"
288 | }
289 |
290 | }
291 | , {
292 | "box" : {
293 | "id" : "obj-40",
294 | "maxclass" : "newobj",
295 | "numinlets" : 1,
296 | "numoutlets" : 2,
297 | "outlettype" : [ "", "" ],
298 | "patching_rect" : [ 268.920319, 327.0, 125.0, 22.0 ],
299 | "presentation_rect" : [ 103.920326, 328.0, 125.0, 22.0 ],
300 | "style" : "",
301 | "text" : "OSC-route /fromTidal"
302 | }
303 |
304 | }
305 | , {
306 | "box" : {
307 | "angle" : 270.0,
308 | "bgcolor" : [ 0.337303, 0.352808, 0.54972, 1.0 ],
309 | "bordercolor" : [ 0.901961, 0.8, 0.392157, 1.0 ],
310 | "id" : "obj-1",
311 | "maxclass" : "panel",
312 | "mode" : 0,
313 | "numinlets" : 1,
314 | "numoutlets" : 0,
315 | "patching_rect" : [ 249.0, 358.5, 787.0, 277.5 ],
316 | "proportion" : 0.39,
317 | "style" : ""
318 | }
319 |
320 | }
321 | ],
322 | "lines" : [ {
323 | "patchline" : {
324 | "color" : [ 0.65, 0.65, 0.65, 0.9 ],
325 | "destination" : [ "obj-38", 1 ],
326 | "midpoints" : [ 535.002747, 500.5, 535.920288, 500.5 ],
327 | "source" : [ "obj-10", 0 ]
328 | }
329 |
330 | }
331 | , {
332 | "patchline" : {
333 | "destination" : [ "obj-38", 2 ],
334 | "source" : [ "obj-11", 0 ]
335 | }
336 |
337 | }
338 | , {
339 | "patchline" : {
340 | "destination" : [ "obj-38", 2 ],
341 | "midpoints" : [ 793.585205, 499.0, 793.420288, 499.0 ],
342 | "source" : [ "obj-35", 1 ]
343 | }
344 |
345 | }
346 | , {
347 | "patchline" : {
348 | "destination" : [ "obj-12", 1 ],
349 | "source" : [ "obj-38", 1 ]
350 | }
351 |
352 | }
353 | , {
354 | "patchline" : {
355 | "destination" : [ "obj-9", 0 ],
356 | "source" : [ "obj-38", 0 ]
357 | }
358 |
359 | }
360 | , {
361 | "patchline" : {
362 | "destination" : [ "obj-40", 0 ],
363 | "source" : [ "obj-39", 0 ]
364 | }
365 |
366 | }
367 | , {
368 | "patchline" : {
369 | "destination" : [ "obj-38", 0 ],
370 | "midpoints" : [ 278.420319, 457.5, 278.420319, 457.5 ],
371 | "source" : [ "obj-40", 0 ]
372 | }
373 |
374 | }
375 | , {
376 | "patchline" : {
377 | "destination" : [ "obj-10", 0 ],
378 | "source" : [ "obj-5", 0 ]
379 | }
380 |
381 | }
382 | , {
383 | "patchline" : {
384 | "destination" : [ "obj-35", 0 ],
385 | "source" : [ "obj-6", 0 ]
386 | }
387 |
388 | }
389 | ],
390 | "parameters" : {
391 | "obj-35" : [ "Source1", "Source 1", 0 ]
392 | }
393 | ,
394 | "dependency_cache" : [ {
395 | "name" : "tidal-osc-parse.maxpat",
396 | "bootpath" : "~/Desktop/scripts/max/tidal-max-example/tidal-maxmsp/tidal-maxmsp/patchers",
397 | "patcherrelativepath" : ".",
398 | "type" : "JSON",
399 | "implicit" : 1
400 | }
401 | , {
402 | "name" : "OSC-route.mxo",
403 | "type" : "iLaX"
404 | }
405 | ],
406 | "autosave" : 0,
407 | "styles" : [ {
408 | "name" : "AudioStatus_Menu",
409 | "default" : {
410 | "bgfillcolor" : {
411 | "type" : "color",
412 | "color" : [ 0.294118, 0.313726, 0.337255, 1 ],
413 | "color1" : [ 0.454902, 0.462745, 0.482353, 0.0 ],
414 | "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
415 | "angle" : 270.0,
416 | "proportion" : 0.39,
417 | "autogradient" : 0
418 | }
419 |
420 | }
421 | ,
422 | "parentstyle" : "",
423 | "multi" : 0
424 | }
425 | , {
426 | "name" : "Luca",
427 | "default" : {
428 | "accentcolor" : [ 0.32549, 0.345098, 0.372549, 1.0 ],
429 | "elementcolor" : [ 0.786675, 0.801885, 0.845022, 1.0 ],
430 | "selectioncolor" : [ 0.720698, 0.16723, 0.080014, 1.0 ],
431 | "color" : [ 0.475135, 0.293895, 0.251069, 1.0 ],
432 | "textcolor_inverse" : [ 0.239216, 0.254902, 0.278431, 1.0 ],
433 | "bgcolor" : [ 0.904179, 0.895477, 0.842975, 0.56 ],
434 | "bgfillcolor" : {
435 | "type" : "gradient",
436 | "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
437 | "color1" : [ 0.862745, 0.870588, 0.878431, 1.0 ],
438 | "color2" : [ 0.65098, 0.666667, 0.662745, 1.0 ],
439 | "angle" : 270.0,
440 | "proportion" : 0.39,
441 | "autogradient" : 0
442 | }
443 | ,
444 | "fontname" : [ "Open Sans Semibold" ]
445 | }
446 | ,
447 | "parentstyle" : "",
448 | "multi" : 0
449 | }
450 | , {
451 | "name" : "Matt",
452 | "default" : {
453 | "fontface" : [ 1 ],
454 | "fontsize" : [ 10.0 ]
455 | }
456 | ,
457 | "parentstyle" : "",
458 | "multi" : 0
459 | }
460 | , {
461 | "name" : "WTF",
462 | "default" : {
463 | "accentcolor" : [ 0.50764, 0.065317, 0.112129, 1.0 ],
464 | "elementcolor" : [ 0.461105, 0.492646, 0.591878, 1.0 ],
465 | "fontsize" : [ 18.0 ],
466 | "color" : [ 0.113725, 0.580392, 0.737255, 1.0 ],
467 | "patchlinecolor" : [ 0.231373, 0.121569, 0.305882, 0.9 ],
468 | "bgcolor" : [ 0.163647, 0.174699, 0.17409, 1.0 ],
469 | "bgfillcolor" : {
470 | "type" : "gradient",
471 | "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
472 | "color1" : [ 0.32549, 0.345098, 0.372549, 1.0 ],
473 | "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
474 | "angle" : 270.0,
475 | "proportion" : 0.39,
476 | "autogradient" : 0
477 | }
478 | ,
479 | "fontname" : [ "HydrogenType" ]
480 | }
481 | ,
482 | "parentstyle" : "",
483 | "multi" : 0
484 | }
485 | , {
486 | "name" : "classic",
487 | "default" : {
488 | "accentcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ],
489 | "fontsize" : [ 9.0 ],
490 | "color" : [ 0.498039, 0.498039, 0.498039, 1.0 ],
491 | "textcolor_inverse" : [ 0.0, 0.0, 0.0, 1.0 ],
492 | "patchlinecolor" : [ 0.0, 0.0, 0.0, 1.0 ],
493 | "bgcolor" : [ 0.83978, 0.839941, 0.839753, 1.0 ],
494 | "bgfillcolor" : {
495 | "type" : "color",
496 | "color1" : [ 0.83978, 0.839941, 0.839753, 1.0 ],
497 | "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
498 | "color" : [ 0.839216, 0.839216, 0.839216, 1.0 ],
499 | "angle" : 270.0,
500 | "proportion" : 0.39
501 | }
502 | ,
503 | "fontname" : [ "Geneva" ]
504 | }
505 | ,
506 | "parentstyle" : "",
507 | "multi" : 0
508 | }
509 | , {
510 | "name" : "classicButton",
511 | "default" : {
512 | "color" : [ 1.0, 0.890196, 0.090196, 1.0 ]
513 | }
514 | ,
515 | "parentstyle" : "",
516 | "multi" : 0
517 | }
518 | , {
519 | "name" : "classicDial",
520 | "default" : {
521 | "color" : [ 1.0, 0.890196, 0.090196, 1.0 ]
522 | }
523 | ,
524 | "parentstyle" : "",
525 | "multi" : 0
526 | }
527 | , {
528 | "name" : "classicGain~",
529 | "default" : {
530 | "color" : [ 0.380392, 0.380392, 0.380392, 1.0 ]
531 | }
532 | ,
533 | "parentstyle" : "",
534 | "multi" : 0
535 | }
536 | , {
537 | "name" : "classicGswitch",
538 | "default" : {
539 | "accentcolor" : [ 1.0, 1.0, 1.0, 1.0 ]
540 | }
541 | ,
542 | "parentstyle" : "",
543 | "multi" : 0
544 | }
545 | , {
546 | "name" : "classicGswitch2",
547 | "default" : {
548 | "accentcolor" : [ 1.0, 1.0, 1.0, 1.0 ]
549 | }
550 | ,
551 | "parentstyle" : "",
552 | "multi" : 0
553 | }
554 | , {
555 | "name" : "classicKslider",
556 | "default" : {
557 | "elementcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ],
558 | "selectioncolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ],
559 | "color" : [ 1.0, 1.0, 1.0, 1.0 ],
560 | "bgcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
561 | }
562 | ,
563 | "parentstyle" : "",
564 | "multi" : 0
565 | }
566 | , {
567 | "name" : "classicLed",
568 | "default" : {
569 | "elementcolor" : [ 0.6, 0.0, 0.0, 1.0 ],
570 | "color" : [ 1.0, 0.0, 0.0, 1.0 ]
571 | }
572 | ,
573 | "parentstyle" : "",
574 | "multi" : 0
575 | }
576 | , {
577 | "name" : "classicMatrixctrl",
578 | "default" : {
579 | "color" : [ 1.0, 0.0, 0.0, 1.0 ]
580 | }
581 | ,
582 | "parentstyle" : "",
583 | "multi" : 0
584 | }
585 | , {
586 | "name" : "classicMeter~",
587 | "default" : {
588 | "elementcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ],
589 | "bgcolor" : [ 0.380392, 0.380392, 0.380392, 1.0 ]
590 | }
591 | ,
592 | "parentstyle" : "",
593 | "multi" : 0
594 | }
595 | , {
596 | "name" : "classicNodes",
597 | "default" : {
598 | "elementcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ],
599 | "fontsize" : [ 9.0 ],
600 | "color" : [ 0.839216, 0.839216, 0.839216, 1.0 ]
601 | }
602 | ,
603 | "parentstyle" : "",
604 | "multi" : 0
605 | }
606 | , {
607 | "name" : "classicNslider",
608 | "default" : {
609 | "color" : [ 0.0, 0.0, 0.0, 1.0 ]
610 | }
611 | ,
612 | "parentstyle" : "",
613 | "multi" : 0
614 | }
615 | , {
616 | "name" : "classicNumber",
617 | "default" : {
618 | "selectioncolor" : [ 1.0, 0.890196, 0.0, 1.0 ]
619 | }
620 | ,
621 | "parentstyle" : "",
622 | "multi" : 0
623 | }
624 | , {
625 | "name" : "classicPictslider",
626 | "default" : {
627 | "elementcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ]
628 | }
629 | ,
630 | "parentstyle" : "",
631 | "multi" : 0
632 | }
633 | , {
634 | "name" : "classicPreset",
635 | "default" : {
636 | "color" : [ 1.0, 0.890196, 0.090196, 1.0 ]
637 | }
638 | ,
639 | "parentstyle" : "",
640 | "multi" : 0
641 | }
642 | , {
643 | "name" : "classicScope~",
644 | "default" : {
645 | "color" : [ 0.462745, 0.933333, 0.0, 1.0 ],
646 | "bgcolor" : [ 0.498039, 0.498039, 0.498039, 1.0 ]
647 | }
648 | ,
649 | "parentstyle" : "",
650 | "multi" : 0
651 | }
652 | , {
653 | "name" : "classicTab",
654 | "default" : {
655 | "elementcolor" : [ 0.839216, 0.839216, 0.839216, 1.0 ],
656 | "color" : [ 0.498039, 0.498039, 0.498039, 1.0 ]
657 | }
658 | ,
659 | "parentstyle" : "",
660 | "multi" : 0
661 | }
662 | , {
663 | "name" : "classicTextbutton",
664 | "default" : {
665 | "accentcolor" : [ 0.0, 0.0, 0.0, 1.0 ],
666 | "color" : [ 1.0, 1.0, 1.0, 1.0 ]
667 | }
668 | ,
669 | "parentstyle" : "",
670 | "multi" : 0
671 | }
672 | , {
673 | "name" : "classicToggle",
674 | "default" : {
675 | "elementcolor" : [ 0.376471, 0.384314, 0.4, 0.0 ],
676 | "color" : [ 0.380392, 0.380392, 0.380392, 1.0 ]
677 | }
678 | ,
679 | "parentstyle" : "",
680 | "multi" : 0
681 | }
682 | , {
683 | "name" : "classicUmenu",
684 | "default" : {
685 | "color" : [ 1.0, 1.0, 1.0, 1.0 ]
686 | }
687 | ,
688 | "parentstyle" : "",
689 | "multi" : 0
690 | }
691 | , {
692 | "name" : "classicWaveform~",
693 | "default" : {
694 | "selectioncolor" : [ 0.498039, 0.498039, 0.498039, 0.5 ],
695 | "color" : [ 0.380392, 0.380392, 0.380392, 1.0 ]
696 | }
697 | ,
698 | "parentstyle" : "",
699 | "multi" : 0
700 | }
701 | , {
702 | "name" : "dark-night-patch",
703 | "default" : {
704 | "accentcolor" : [ 0.952941, 0.564706, 0.098039, 1.0 ],
705 | "patchlinecolor" : [ 0.439216, 0.74902, 0.254902, 0.898039 ],
706 | "bgfillcolor" : {
707 | "type" : "gradient",
708 | "color1" : [ 0.376471, 0.384314, 0.4, 1.0 ],
709 | "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
710 | "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
711 | "angle" : 270.0,
712 | "proportion" : 0.39
713 | }
714 | ,
715 | "textcolor" : [ 0.862745, 0.870588, 0.878431, 1.0 ]
716 | }
717 | ,
718 | "parentstyle" : "",
719 | "multi" : 0
720 | }
721 | , {
722 | "name" : "jpatcher001",
723 | "parentstyle" : "",
724 | "multi" : 0
725 | }
726 | , {
727 | "name" : "jpatcher002",
728 | "default" : {
729 | "fontsize" : [ 9.5 ],
730 | "patchlinecolor" : [ 0.65098, 0.65098, 0.65098, 0.0 ],
731 | "clearcolor" : [ 0.32549, 0.345098, 0.372549, 0.0 ],
732 | "bgfillcolor" : {
733 | "type" : "color",
734 | "color1" : [ 0.32549, 0.345098, 0.372549, 0.0 ],
735 | "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
736 | "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
737 | "angle" : 270.0,
738 | "proportion" : 0.39
739 | }
740 | ,
741 | "fontname" : [ "Ableton Sans Book" ]
742 | }
743 | ,
744 | "parentstyle" : "",
745 | "multi" : 0
746 | }
747 | , {
748 | "name" : "jpink",
749 | "default" : {
750 | "accentcolor" : [ 0.619608, 0.0, 0.360784, 1.0 ],
751 | "elementcolor" : [ 0.619608, 0.0, 0.360784, 1.0 ],
752 | "selectioncolor" : [ 0.619608, 0.0, 0.360784, 1.0 ],
753 | "color" : [ 0.619608, 0.0, 0.360784, 1.0 ],
754 | "patchlinecolor" : [ 0.65, 0.65, 0.65, 1.0 ],
755 | "clearcolor" : [ 0.113725, 0.607843, 0.607843, 1.0 ],
756 | "bgcolor" : [ 0.862745, 0.870588, 0.878431, 1.0 ],
757 | "bgfillcolor" : {
758 | "type" : "color",
759 | "color" : [ 0.619608, 0.0, 0.360784, 1.0 ],
760 | "color1" : [ 0.376471, 0.384314, 0.4, 1.0 ],
761 | "color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
762 | "angle" : 270.0,
763 | "proportion" : 0.39,
764 | "autogradient" : 0
765 | }
766 | ,
767 | "textcolor" : [ 0.619608, 0.0, 0.360784, 1.0 ]
768 | }
769 | ,
770 | "parentstyle" : "",
771 | "multi" : 0
772 | }
773 | , {
774 | "name" : "ksliderWhite",
775 | "default" : {
776 | "color" : [ 1.0, 1.0, 1.0, 1.0 ]
777 | }
778 | ,
779 | "parentstyle" : "",
780 | "multi" : 0
781 | }
782 | , {
783 | "name" : "lightbutton",
784 | "default" : {
785 | "elementcolor" : [ 0.654902, 0.572549, 0.376471, 1.0 ],
786 | "bgcolor" : [ 0.309495, 0.299387, 0.299789, 1.0 ]
787 | }
788 | ,
789 | "parentstyle" : "",
790 | "multi" : 0
791 | }
792 | , {
793 | "name" : "newobjBlue-1",
794 | "default" : {
795 | "accentcolor" : [ 0.317647, 0.654902, 0.976471, 1.0 ]
796 | }
797 | ,
798 | "parentstyle" : "",
799 | "multi" : 0
800 | }
801 | , {
802 | "name" : "newobjBrown-1",
803 | "default" : {
804 | "accentcolor" : [ 0.654902, 0.572549, 0.376471, 1.0 ]
805 | }
806 | ,
807 | "parentstyle" : "",
808 | "multi" : 0
809 | }
810 | , {
811 | "name" : "newobjCyan-1",
812 | "default" : {
813 | "accentcolor" : [ 0.029546, 0.773327, 0.821113, 1.0 ]
814 | }
815 | ,
816 | "parentstyle" : "",
817 | "multi" : 0
818 | }
819 | , {
820 | "name" : "newobjGreen-1",
821 | "default" : {
822 | "accentcolor" : [ 0.0, 0.533333, 0.168627, 1.0 ]
823 | }
824 | ,
825 | "parentstyle" : "",
826 | "multi" : 0
827 | }
828 | , {
829 | "name" : "newobjRed-1",
830 | "default" : {
831 | "accentcolor" : [ 0.784314, 0.145098, 0.023529, 1.0 ]
832 | }
833 | ,
834 | "parentstyle" : "",
835 | "multi" : 0
836 | }
837 | , {
838 | "name" : "newobjYellow-1",
839 | "default" : {
840 | "accentcolor" : [ 0.82517, 0.78181, 0.059545, 1.0 ],
841 | "fontsize" : [ 12.059008 ]
842 | }
843 | ,
844 | "parentstyle" : "",
845 | "multi" : 0
846 | }
847 | , {
848 | "name" : "newobjYellow-2",
849 | "default" : {
850 | "accentcolor" : [ 0.82517, 0.78181, 0.059545, 1.0 ],
851 | "fontsize" : [ 12.059008 ]
852 | }
853 | ,
854 | "parentstyle" : "",
855 | "multi" : 0
856 | }
857 | , {
858 | "name" : "numberGold-1",
859 | "default" : {
860 | "accentcolor" : [ 0.764706, 0.592157, 0.101961, 1.0 ]
861 | }
862 | ,
863 | "parentstyle" : "",
864 | "multi" : 0
865 | }
866 | , {
867 | "name" : "purple",
868 | "default" : {
869 | "textcolor_inverse" : [ 0.701961, 0.415686, 0.886275, 1.0 ],
870 | "bgcolor" : [ 0.304029, 0.250694, 0.285628, 1.0 ]
871 | }
872 | ,
873 | "parentstyle" : "",
874 | "multi" : 0
875 | }
876 | , {
877 | "name" : "receives",
878 | "default" : {
879 | "accentcolor" : [ 0.870588, 0.415686, 0.062745, 1.0 ]
880 | }
881 | ,
882 | "parentstyle" : "",
883 | "multi" : 0
884 | }
885 | , {
886 | "name" : "rsliderGold",
887 | "default" : {
888 | "color" : [ 0.646639, 0.821777, 0.854593, 1.0 ],
889 | "bgcolor" : [ 0.764706, 0.592157, 0.101961, 1.0 ]
890 | }
891 | ,
892 | "parentstyle" : "",
893 | "multi" : 0
894 | }
895 | , {
896 | "name" : "sends",
897 | "default" : {
898 | "accentcolor" : [ 0.0, 0.533333, 0.168627, 1.0 ]
899 | }
900 | ,
901 | "parentstyle" : "",
902 | "multi" : 0
903 | }
904 | , {
905 | "name" : "tap",
906 | "default" : {
907 | "fontname" : [ "Lato Light" ]
908 | }
909 | ,
910 | "parentstyle" : "",
911 | "multi" : 0
912 | }
913 | , {
914 | "name" : "tastefulltoggle",
915 | "default" : {
916 | "color" : [ 0.941176, 0.690196, 0.196078, 1.0 ],
917 | "bgcolor" : [ 0.185512, 0.263736, 0.260626, 1.0 ]
918 | }
919 | ,
920 | "parentstyle" : "",
921 | "multi" : 0
922 | }
923 | , {
924 | "name" : "tastefultoggle",
925 | "default" : {
926 | "elementcolor" : [ 0.654902, 0.572549, 0.376471, 1.0 ],
927 | "color" : [ 0.941176, 0.690196, 0.196078, 1.0 ],
928 | "bgcolor" : [ 0.287863, 0.333333, 0.329398, 1.0 ]
929 | }
930 | ,
931 | "parentstyle" : "",
932 | "multi" : 0
933 | }
934 | , {
935 | "name" : "test",
936 | "default" : {
937 | "fontface" : [ 1 ],
938 | "fontsize" : [ 10.0 ]
939 | }
940 | ,
941 | "parentstyle" : "",
942 | "multi" : 0
943 | }
944 | , {
945 | "name" : "whitey",
946 | "default" : {
947 | "selectioncolor" : [ 0.011765, 0.396078, 0.752941, 1.0 ],
948 | "fontsize" : [ 36.0 ],
949 | "textcolor_inverse" : [ 0.65098, 0.666667, 0.662745, 1.0 ],
950 | "patchlinecolor" : [ 0.199068, 0.062496, 0.060031, 0.9 ],
951 | "fontname" : [ "Dirty Ego" ]
952 | }
953 | ,
954 | "parentstyle" : "",
955 | "multi" : 0
956 | }
957 | ]
958 | }
959 |
960 | }
961 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/patchers/tidal-osc-parse.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 7,
6 | "minor" : 3,
7 | "revision" : 4,
8 | "architecture" : "x86",
9 | "modernui" : 1
10 | }
11 | ,
12 | "rect" : [ 59.0, 103.0, 640.0, 480.0 ],
13 | "bglocked" : 0,
14 | "openinpresentation" : 0,
15 | "default_fontsize" : 12.0,
16 | "default_fontface" : 0,
17 | "default_fontname" : "Arial",
18 | "gridonopen" : 1,
19 | "gridsize" : [ 15.0, 15.0 ],
20 | "gridsnaponopen" : 1,
21 | "objectsnaponopen" : 1,
22 | "statusbarvisible" : 2,
23 | "toolbarvisible" : 1,
24 | "lefttoolbarpinned" : 0,
25 | "toptoolbarpinned" : 0,
26 | "righttoolbarpinned" : 0,
27 | "bottomtoolbarpinned" : 0,
28 | "toolbars_unpinned_last_save" : 0,
29 | "tallnewobj" : 0,
30 | "boxanimatetime" : 200,
31 | "enablehscroll" : 1,
32 | "enablevscroll" : 1,
33 | "devicewidth" : 0.0,
34 | "description" : "",
35 | "digest" : "",
36 | "tags" : "",
37 | "style" : "",
38 | "subpatcher_template" : "",
39 | "boxes" : [ {
40 | "box" : {
41 | "id" : "obj-29",
42 | "maxclass" : "comment",
43 | "numinlets" : 1,
44 | "numoutlets" : 0,
45 | "patching_rect" : [ 277.0, 449.0, 150.0, 20.0 ],
46 | "presentation_rect" : [ 277.0, 449.0, 150.0, 20.0 ],
47 | "style" : "",
48 | "text" : "tidal parameter"
49 | }
50 |
51 | }
52 | , {
53 | "box" : {
54 | "annotation" : "tidal parameter (symbol)",
55 | "comment" : "tidal parameter (symbol)",
56 | "hint" : "tidal parameter (symbol)",
57 | "id" : "obj-26",
58 | "index" : 3,
59 | "maxclass" : "inlet",
60 | "numinlets" : 0,
61 | "numoutlets" : 1,
62 | "outlettype" : [ "" ],
63 | "patching_rect" : [ 744.0, 107.0, 30.0, 30.0 ],
64 | "presentation_rect" : [ 744.0, 107.0, 30.0, 30.0 ],
65 | "style" : ""
66 | }
67 |
68 | }
69 | , {
70 | "box" : {
71 | "annotation" : "raw",
72 | "comment" : "raw",
73 | "hint" : "raw",
74 | "id" : "obj-17",
75 | "index" : 2,
76 | "maxclass" : "outlet",
77 | "numinlets" : 1,
78 | "numoutlets" : 0,
79 | "patching_rect" : [ 625.0, 574.0, 30.0, 30.0 ],
80 | "presentation_rect" : [ 625.0, 574.0, 30.0, 30.0 ],
81 | "style" : ""
82 | }
83 |
84 | }
85 | , {
86 | "box" : {
87 | "id" : "obj-20",
88 | "maxclass" : "newobj",
89 | "numinlets" : 1,
90 | "numoutlets" : 1,
91 | "outlettype" : [ "" ],
92 | "patching_rect" : [ 399.0, 214.0, 79.0, 22.0 ],
93 | "presentation_rect" : [ 399.0, 214.0, 79.0, 22.0 ],
94 | "style" : "",
95 | "text" : "loadmess #2"
96 | }
97 |
98 | }
99 | , {
100 | "box" : {
101 | "annotation" : "stream no (int)",
102 | "comment" : "stream no (int)",
103 | "hint" : "stream no (int)",
104 | "id" : "obj-19",
105 | "index" : 2,
106 | "maxclass" : "inlet",
107 | "numinlets" : 0,
108 | "numoutlets" : 1,
109 | "outlettype" : [ "" ],
110 | "patching_rect" : [ 334.0, 111.0, 30.0, 30.0 ],
111 | "presentation_rect" : [ 334.0, 111.0, 30.0, 30.0 ],
112 | "style" : ""
113 | }
114 |
115 | }
116 | , {
117 | "box" : {
118 | "id" : "obj-44",
119 | "maxclass" : "comment",
120 | "numinlets" : 1,
121 | "numoutlets" : 0,
122 | "patching_rect" : [ 394.5, 255.0, 150.0, 20.0 ],
123 | "presentation_rect" : [ 394.5, 255.0, 150.0, 20.0 ],
124 | "style" : "",
125 | "text" : "stream number from tidal"
126 | }
127 |
128 | }
129 | , {
130 | "box" : {
131 | "id" : "obj-40",
132 | "maxclass" : "newobj",
133 | "numinlets" : 1,
134 | "numoutlets" : 1,
135 | "outlettype" : [ "" ],
136 | "patching_rect" : [ 334.0, 294.0, 67.0, 22.0 ],
137 | "presentation_rect" : [ 334.0, 294.0, 67.0, 22.0 ],
138 | "style" : "",
139 | "text" : "sprintf /%d"
140 | }
141 |
142 | }
143 | , {
144 | "box" : {
145 | "id" : "obj-35",
146 | "maxclass" : "number",
147 | "numinlets" : 1,
148 | "numoutlets" : 2,
149 | "outlettype" : [ "", "bang" ],
150 | "parameter_enable" : 0,
151 | "patching_rect" : [ 334.0, 255.0, 50.0, 22.0 ],
152 | "presentation_rect" : [ 334.0, 255.0, 50.0, 22.0 ],
153 | "style" : ""
154 | }
155 |
156 | }
157 | , {
158 | "box" : {
159 | "id" : "obj-5",
160 | "maxclass" : "newobj",
161 | "numinlets" : 2,
162 | "numoutlets" : 2,
163 | "outlettype" : [ "", "" ],
164 | "patching_rect" : [ 205.5, 327.0, 51.0, 22.0 ],
165 | "presentation_rect" : [ 205.5, 327.0, 51.0, 22.0 ],
166 | "style" : "",
167 | "text" : "route /1"
168 | }
169 |
170 | }
171 | , {
172 | "box" : {
173 | "annotation" : "cps",
174 | "comment" : "cps",
175 | "hint" : "cps",
176 | "id" : "obj-2",
177 | "index" : 1,
178 | "maxclass" : "outlet",
179 | "numinlets" : 1,
180 | "numoutlets" : 0,
181 | "patching_rect" : [ 205.5, 557.0, 30.0, 30.0 ],
182 | "presentation_rect" : [ 205.5, 557.0, 30.0, 30.0 ],
183 | "style" : ""
184 | }
185 |
186 | }
187 | , {
188 | "box" : {
189 | "annotation" : "osc stream as list (everything after /)",
190 | "comment" : "osc stream as list (everything after /)",
191 | "hint" : "osc stream as list (everything after /)",
192 | "id" : "obj-1",
193 | "index" : 1,
194 | "maxclass" : "inlet",
195 | "numinlets" : 0,
196 | "numoutlets" : 1,
197 | "outlettype" : [ "" ],
198 | "patching_rect" : [ 205.5, 111.0, 30.0, 30.0 ],
199 | "presentation_rect" : [ 205.5, 111.0, 30.0, 30.0 ],
200 | "style" : ""
201 | }
202 |
203 | }
204 | , {
205 | "box" : {
206 | "format" : 6,
207 | "id" : "obj-64",
208 | "maxclass" : "flonum",
209 | "numinlets" : 1,
210 | "numoutlets" : 2,
211 | "outlettype" : [ "", "bang" ],
212 | "parameter_enable" : 0,
213 | "patching_rect" : [ 205.5, 494.0, 50.0, 22.0 ],
214 | "presentation_rect" : [ 205.5, 494.0, 50.0, 22.0 ],
215 | "style" : ""
216 | }
217 |
218 | }
219 | , {
220 | "box" : {
221 | "id" : "obj-62",
222 | "linecount" : 2,
223 | "maxclass" : "newobj",
224 | "numinlets" : 2,
225 | "numoutlets" : 2,
226 | "outlettype" : [ "", "" ],
227 | "patching_rect" : [ 205.5, 449.0, 55.0, 22.0 ],
228 | "presentation_linecount" : 2,
229 | "presentation_rect" : [ 205.5, 449.0, 55.0, 22.0 ],
230 | "style" : "",
231 | "text" : "route #1"
232 | }
233 |
234 | }
235 | , {
236 | "box" : {
237 | "id" : "obj-61",
238 | "linecount" : 2,
239 | "maxclass" : "comment",
240 | "numinlets" : 1,
241 | "numoutlets" : 0,
242 | "patching_rect" : [ 277.0, 365.0, 190.0, 33.0 ],
243 | "presentation_linecount" : 2,
244 | "presentation_rect" : [ 277.0, 365.0, 190.0, 33.0 ],
245 | "style" : "",
246 | "text" : "break the message down to lists of size 2 (parameter + value)"
247 | }
248 |
249 | }
250 | , {
251 | "box" : {
252 | "id" : "obj-56",
253 | "maxclass" : "newobj",
254 | "numinlets" : 2,
255 | "numoutlets" : 2,
256 | "outlettype" : [ "", "" ],
257 | "patching_rect" : [ 205.5, 365.0, 49.0, 22.0 ],
258 | "presentation_rect" : [ 205.5, 365.0, 49.0, 22.0 ],
259 | "style" : "",
260 | "text" : "zl iter 2"
261 | }
262 |
263 | }
264 | ],
265 | "lines" : [ {
266 | "patchline" : {
267 | "destination" : [ "obj-5", 0 ],
268 | "source" : [ "obj-1", 0 ]
269 | }
270 |
271 | }
272 | , {
273 | "patchline" : {
274 | "destination" : [ "obj-35", 0 ],
275 | "midpoints" : [ 343.5, 197.5, 343.5, 197.5 ],
276 | "source" : [ "obj-19", 0 ]
277 | }
278 |
279 | }
280 | , {
281 | "patchline" : {
282 | "destination" : [ "obj-35", 0 ],
283 | "midpoints" : [ 408.5, 245.0, 343.5, 245.0 ],
284 | "source" : [ "obj-20", 0 ]
285 | }
286 |
287 | }
288 | , {
289 | "patchline" : {
290 | "destination" : [ "obj-62", 1 ],
291 | "midpoints" : [ 753.5, 418.5, 251.0, 418.5 ],
292 | "source" : [ "obj-26", 0 ]
293 | }
294 |
295 | }
296 | , {
297 | "patchline" : {
298 | "destination" : [ "obj-40", 0 ],
299 | "source" : [ "obj-35", 0 ]
300 | }
301 |
302 | }
303 | , {
304 | "patchline" : {
305 | "destination" : [ "obj-5", 1 ],
306 | "midpoints" : [ 343.5, 321.0, 247.0, 321.0 ],
307 | "source" : [ "obj-40", 0 ]
308 | }
309 |
310 | }
311 | , {
312 | "patchline" : {
313 | "destination" : [ "obj-17", 0 ],
314 | "midpoints" : [ 215.0, 357.0, 634.5, 357.0 ],
315 | "order" : 0,
316 | "source" : [ "obj-5", 0 ]
317 | }
318 |
319 | }
320 | , {
321 | "patchline" : {
322 | "destination" : [ "obj-56", 0 ],
323 | "order" : 1,
324 | "source" : [ "obj-5", 0 ]
325 | }
326 |
327 | }
328 | , {
329 | "patchline" : {
330 | "destination" : [ "obj-62", 0 ],
331 | "midpoints" : [ 215.0, 426.0, 215.0, 426.0 ],
332 | "source" : [ "obj-56", 0 ]
333 | }
334 |
335 | }
336 | , {
337 | "patchline" : {
338 | "destination" : [ "obj-64", 0 ],
339 | "source" : [ "obj-62", 0 ]
340 | }
341 |
342 | }
343 | , {
344 | "patchline" : {
345 | "destination" : [ "obj-2", 0 ],
346 | "source" : [ "obj-64", 0 ]
347 | }
348 |
349 | }
350 | ]
351 | }
352 |
353 | }
354 |
--------------------------------------------------------------------------------
/Tidal-MaxMsp/tidal-maxmsp.maxproj:
--------------------------------------------------------------------------------
1 | {
2 | "name" : "tidal-maxmsp",
3 | "version" : 1,
4 | "creationdate" : -695672096,
5 | "modificationdate" : -695629165,
6 | "viewrect" : [ 25.0, 69.0, 300.0, 500.0 ],
7 | "autoorganize" : 1,
8 | "hideprojectwindow" : 0,
9 | "showdependencies" : 1,
10 | "autolocalize" : 0,
11 | "contents" : {
12 | "patchers" : {
13 | "tidal-maxmsp.maxpat" : {
14 | "kind" : "patcher",
15 | "local" : 1,
16 | "toplevel" : 1
17 | }
18 |
19 | }
20 | ,
21 | "externals" : {
22 |
23 | }
24 |
25 | }
26 | ,
27 | "layout" : {
28 |
29 | }
30 | ,
31 | "searchpath" : {
32 |
33 | }
34 | ,
35 | "detailsvisible" : 1,
36 | "amxdtype" : 1633771873,
37 | "readonly" : 0,
38 | "devpathtype" : 0,
39 | "devpath" : ".",
40 | "sortmode" : 0
41 | }
42 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Author name here (c) 2018
2 |
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 |
8 | * Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 |
11 | * Redistributions in binary form must reproduce the above
12 | copyright notice, this list of conditions and the following
13 | disclaimer in the documentation and/or other materials provided
14 | with the distribution.
15 |
16 | * Neither the name of Author name here nor the names of other
17 | contributors may be used to endorse or promote products derived
18 | from this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/MaxMspOsc.cabal:
--------------------------------------------------------------------------------
1 | name: MaxMspOsc
2 | version: 0.1.0.0
3 | -- synopsis:
4 | -- description:
5 | homepage: https://github.com/githubuser/MaxMspOsc#readme
6 | license: BSD3
7 | license-file: LICENSE
8 | author: Author name here
9 | maintainer: example@example.com
10 | copyright: 2018 Author name here
11 | category: Web
12 | build-type: Simple
13 | extra-source-files: README.md
14 | cabal-version: >=1.10
15 |
16 | library
17 | hs-source-dirs: src
18 | exposed-modules: Sound.Tidal.MaxMspOsc
19 | build-depends: base >= 4.7 && < 5, tidal
20 | default-language: Haskell2010
21 | default-extensions: OverloadedStrings
22 |
23 | source-repository head
24 | type: git
25 | location: https://github.com/githubuser/MaxMspOsc
26 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/README.md:
--------------------------------------------------------------------------------
1 | # MaxMspOsc
2 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/Setup.hs:
--------------------------------------------------------------------------------
1 | import Distribution.Simple
2 | main = defaultMain
3 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.dyn_hi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.dyn_hi
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.dyn_o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.dyn_o
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.hi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.hi
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.o
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.p_hi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.p_hi
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.p_o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/Sound/Tidal/MaxMspOsc.p_o
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/autogen/Paths_MaxMspOsc.hs:
--------------------------------------------------------------------------------
1 | {-# LANGUAGE CPP #-}
2 | {-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
3 | {-# OPTIONS_GHC -fno-warn-implicit-prelude #-}
4 | module Paths_MaxMspOsc (
5 | version,
6 | getBinDir, getLibDir, getDataDir, getLibexecDir,
7 | getDataFileName, getSysconfDir
8 | ) where
9 |
10 | import qualified Control.Exception as Exception
11 | import Data.Version (Version(..))
12 | import System.Environment (getEnv)
13 | import Prelude
14 |
15 | #if defined(VERSION_base)
16 |
17 | #if MIN_VERSION_base(4,0,0)
18 | catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
19 | #else
20 | catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
21 | #endif
22 |
23 | #else
24 | catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
25 | #endif
26 | catchIO = Exception.catch
27 |
28 | version :: Version
29 | version = Version [0,1,0,0] []
30 | bindir, libdir, datadir, libexecdir, sysconfdir :: FilePath
31 |
32 | bindir = "/Users/madskjeldgaard/Library/Haskell/bin"
33 | libdir = "/Users/madskjeldgaard/Library/Haskell/ghc-8.0.1-x86_64/lib/MaxMspOsc-0.1.0.0"
34 | datadir = "/Users/madskjeldgaard/Library/Haskell/share/ghc-8.0.1-x86_64/MaxMspOsc-0.1.0.0"
35 | libexecdir = "/Users/madskjeldgaard/Library/Haskell/libexec"
36 | sysconfdir = "/Users/madskjeldgaard/Library/Haskell/etc"
37 |
38 | getBinDir, getLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath
39 | getBinDir = catchIO (getEnv "MaxMspOsc_bindir") (\_ -> return bindir)
40 | getLibDir = catchIO (getEnv "MaxMspOsc_libdir") (\_ -> return libdir)
41 | getDataDir = catchIO (getEnv "MaxMspOsc_datadir") (\_ -> return datadir)
42 | getLibexecDir = catchIO (getEnv "MaxMspOsc_libexecdir") (\_ -> return libexecdir)
43 | getSysconfDir = catchIO (getEnv "MaxMspOsc_sysconfdir") (\_ -> return sysconfdir)
44 |
45 | getDataFileName :: FilePath -> IO FilePath
46 | getDataFileName name = do
47 | dir <- getDataDir
48 | return (dir ++ "/" ++ name)
49 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/autogen/cabal_macros.h:
--------------------------------------------------------------------------------
1 | /* DO NOT EDIT: This file is automatically generated by Cabal */
2 |
3 | /* package MaxMspOsc-0.1.0.0 */
4 | #define VERSION_MaxMspOsc "0.1.0.0"
5 | #define MIN_VERSION_MaxMspOsc(major1,major2,minor) (\
6 | (major1) < 0 || \
7 | (major1) == 0 && (major2) < 1 || \
8 | (major1) == 0 && (major2) == 1 && (minor) <= 0)
9 |
10 | /* package base-4.9.0.0 */
11 | #define VERSION_base "4.9.0.0"
12 | #define MIN_VERSION_base(major1,major2,minor) (\
13 | (major1) < 4 || \
14 | (major1) == 4 && (major2) < 9 || \
15 | (major1) == 4 && (major2) == 9 && (minor) <= 0)
16 |
17 | /* package tidal-0.9.6 */
18 | #define VERSION_tidal "0.9.6"
19 | #define MIN_VERSION_tidal(major1,major2,minor) (\
20 | (major1) < 0 || \
21 | (major1) == 0 && (major2) < 9 || \
22 | (major1) == 0 && (major2) == 9 && (minor) <= 6)
23 |
24 | /* tool cpphs-1.20.2 */
25 | #define TOOL_VERSION_cpphs "1.20.2"
26 | #define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\
27 | (major1) < 1 || \
28 | (major1) == 1 && (major2) < 20 || \
29 | (major1) == 1 && (major2) == 20 && (minor) <= 2)
30 |
31 | /* tool gcc-4.2.1 */
32 | #define TOOL_VERSION_gcc "4.2.1"
33 | #define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
34 | (major1) < 4 || \
35 | (major1) == 4 && (major2) < 2 || \
36 | (major1) == 4 && (major2) == 2 && (minor) <= 1)
37 |
38 | /* tool ghc-8.0.1 */
39 | #define TOOL_VERSION_ghc "8.0.1"
40 | #define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
41 | (major1) < 8 || \
42 | (major1) == 8 && (major2) < 0 || \
43 | (major1) == 8 && (major2) == 0 && (minor) <= 1)
44 |
45 | /* tool ghc-pkg-8.0.1 */
46 | #define TOOL_VERSION_ghc_pkg "8.0.1"
47 | #define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
48 | (major1) < 8 || \
49 | (major1) == 8 && (major2) < 0 || \
50 | (major1) == 8 && (major2) == 0 && (minor) <= 1)
51 |
52 | /* tool haddock-2.17.2 */
53 | #define TOOL_VERSION_haddock "2.17.2"
54 | #define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
55 | (major1) < 2 || \
56 | (major1) == 2 && (major2) < 17 || \
57 | (major1) == 2 && (major2) == 17 && (minor) <= 2)
58 |
59 | /* tool happy-1.19.5 */
60 | #define TOOL_VERSION_happy "1.19.5"
61 | #define MIN_TOOL_VERSION_happy(major1,major2,minor) (\
62 | (major1) < 1 || \
63 | (major1) == 1 && (major2) < 19 || \
64 | (major1) == 1 && (major2) == 19 && (minor) <= 5)
65 |
66 | /* tool hpc-0.67 */
67 | #define TOOL_VERSION_hpc "0.67"
68 | #define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
69 | (major1) < 0 || \
70 | (major1) == 0 && (major2) < 67 || \
71 | (major1) == 0 && (major2) == 67 && (minor) <= 0)
72 |
73 | /* tool hsc2hs-0.68 */
74 | #define TOOL_VERSION_hsc2hs "0.68"
75 | #define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
76 | (major1) < 0 || \
77 | (major1) == 0 && (major2) < 68 || \
78 | (major1) == 0 && (major2) == 68 && (minor) <= 0)
79 |
80 | /* tool hscolour-1.24 */
81 | #define TOOL_VERSION_hscolour "1.24"
82 | #define MIN_TOOL_VERSION_hscolour(major1,major2,minor) (\
83 | (major1) < 1 || \
84 | (major1) == 1 && (major2) < 24 || \
85 | (major1) == 1 && (major2) == 24 && (minor) <= 0)
86 |
87 | /* tool pkg-config-0.29.2 */
88 | #define TOOL_VERSION_pkg_config "0.29.2"
89 | #define MIN_TOOL_VERSION_pkg_config(major1,major2,minor) (\
90 | (major1) < 0 || \
91 | (major1) == 0 && (major2) < 29 || \
92 | (major1) == 0 && (major2) == 29 && (minor) <= 2)
93 |
94 | #define CURRENT_COMPONENT_ID "MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH"
95 |
96 | #define CURRENT_PACKAGE_KEY "MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH"
97 |
98 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH-ghc8.0.1.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH-ghc8.0.1.dylib
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.a
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/build/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH_p.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/build/libHSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH_p.a
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/Sound-Tidal-MaxMspOsc.html:
--------------------------------------------------------------------------------
1 | Sound.Tidal.MaxMspOsc
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/doc-index.html:
--------------------------------------------------------------------------------
1 | MaxMspOsc-0.1.0.0 (Index)
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/frames.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/haddock-util.js:
--------------------------------------------------------------------------------
1 | // Haddock JavaScript utilities
2 |
3 | var rspace = /\s\s+/g,
4 | rtrim = /^\s+|\s+$/g;
5 |
6 | function spaced(s) { return (" " + s + " ").replace(rspace, " "); }
7 | function trim(s) { return s.replace(rtrim, ""); }
8 |
9 | function hasClass(elem, value) {
10 | var className = spaced(elem.className || "");
11 | return className.indexOf( " " + value + " " ) >= 0;
12 | }
13 |
14 | function addClass(elem, value) {
15 | var className = spaced(elem.className || "");
16 | if ( className.indexOf( " " + value + " " ) < 0 ) {
17 | elem.className = trim(className + " " + value);
18 | }
19 | }
20 |
21 | function removeClass(elem, value) {
22 | var className = spaced(elem.className || "");
23 | className = className.replace(" " + value + " ", " ");
24 | elem.className = trim(className);
25 | }
26 |
27 | function toggleClass(elem, valueOn, valueOff, bool) {
28 | if (bool == null) { bool = ! hasClass(elem, valueOn); }
29 | if (bool) {
30 | removeClass(elem, valueOff);
31 | addClass(elem, valueOn);
32 | }
33 | else {
34 | removeClass(elem, valueOn);
35 | addClass(elem, valueOff);
36 | }
37 | return bool;
38 | }
39 |
40 |
41 | function makeClassToggle(valueOn, valueOff)
42 | {
43 | return function(elem, bool) {
44 | return toggleClass(elem, valueOn, valueOff, bool);
45 | }
46 | }
47 |
48 | toggleShow = makeClassToggle("show", "hide");
49 | toggleCollapser = makeClassToggle("collapser", "expander");
50 |
51 | function toggleSection(id)
52 | {
53 | var b = toggleShow(document.getElementById("section." + id));
54 | toggleCollapser(document.getElementById("control." + id), b);
55 | rememberCollapsed(id, b);
56 | return b;
57 | }
58 |
59 | var collapsed = {};
60 | function rememberCollapsed(id, b)
61 | {
62 | if(b)
63 | delete collapsed[id]
64 | else
65 | collapsed[id] = null;
66 |
67 | var sections = [];
68 | for(var i in collapsed)
69 | {
70 | if(collapsed.hasOwnProperty(i))
71 | sections.push(i);
72 | }
73 | // cookie specific to this page; don't use setCookie which sets path=/
74 | document.cookie = "collapsed=" + escape(sections.join('+'));
75 | }
76 |
77 | function restoreCollapsed()
78 | {
79 | var cookie = getCookie("collapsed");
80 | if(!cookie)
81 | return;
82 |
83 | var ids = cookie.split('+');
84 | for(var i in ids)
85 | {
86 | if(document.getElementById("section." + ids[i]))
87 | toggleSection(ids[i]);
88 | }
89 | }
90 |
91 | function setCookie(name, value) {
92 | document.cookie = name + "=" + escape(value) + ";path=/;";
93 | }
94 |
95 | function clearCookie(name) {
96 | document.cookie = name + "=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
97 | }
98 |
99 | function getCookie(name) {
100 | var nameEQ = name + "=";
101 | var ca = document.cookie.split(';');
102 | for(var i=0;i < ca.length;i++) {
103 | var c = ca[i];
104 | while (c.charAt(0)==' ') c = c.substring(1,c.length);
105 | if (c.indexOf(nameEQ) == 0) {
106 | return unescape(c.substring(nameEQ.length,c.length));
107 | }
108 | }
109 | return null;
110 | }
111 |
112 |
113 |
114 | var max_results = 75; // 50 is not enough to search for map in the base libraries
115 | var shown_range = null;
116 | var last_search = null;
117 |
118 | function quick_search()
119 | {
120 | perform_search(false);
121 | }
122 |
123 | function full_search()
124 | {
125 | perform_search(true);
126 | }
127 |
128 |
129 | function perform_search(full)
130 | {
131 | var text = document.getElementById("searchbox").value.toLowerCase();
132 | if (text == last_search && !full) return;
133 | last_search = text;
134 |
135 | var table = document.getElementById("indexlist");
136 | var status = document.getElementById("searchmsg");
137 | var children = table.firstChild.childNodes;
138 |
139 | // first figure out the first node with the prefix
140 | var first = bisect(-1);
141 | var last = (first == -1 ? -1 : bisect(1));
142 |
143 | if (first == -1)
144 | {
145 | table.className = "";
146 | status.innerHTML = "No results found, displaying all";
147 | }
148 | else if (first == 0 && last == children.length - 1)
149 | {
150 | table.className = "";
151 | status.innerHTML = "";
152 | }
153 | else if (last - first >= max_results && !full)
154 | {
155 | table.className = "";
156 | status.innerHTML = "More than " + max_results + ", press Search to display";
157 | }
158 | else
159 | {
160 | // decide what you need to clear/show
161 | if (shown_range)
162 | setclass(shown_range[0], shown_range[1], "indexrow");
163 | setclass(first, last, "indexshow");
164 | shown_range = [first, last];
165 | table.className = "indexsearch";
166 | status.innerHTML = "";
167 | }
168 |
169 |
170 | function setclass(first, last, status)
171 | {
172 | for (var i = first; i <= last; i++)
173 | {
174 | children[i].className = status;
175 | }
176 | }
177 |
178 |
179 | // do a binary search, treating 0 as ...
180 | // return either -1 (no 0's found) or location of most far match
181 | function bisect(dir)
182 | {
183 | var first = 0, finish = children.length - 1;
184 | var mid, success = false;
185 |
186 | while (finish - first > 3)
187 | {
188 | mid = Math.floor((finish + first) / 2);
189 |
190 | var i = checkitem(mid);
191 | if (i == 0) i = dir;
192 | if (i == -1)
193 | finish = mid;
194 | else
195 | first = mid;
196 | }
197 | var a = (dir == 1 ? first : finish);
198 | var b = (dir == 1 ? finish : first);
199 | for (var i = b; i != a - dir; i -= dir)
200 | {
201 | if (checkitem(i) == 0) return i;
202 | }
203 | return -1;
204 | }
205 |
206 |
207 | // from an index, decide what the result is
208 | // 0 = match, -1 is lower, 1 is higher
209 | function checkitem(i)
210 | {
211 | var s = getitem(i).toLowerCase().substr(0, text.length);
212 | if (s == text) return 0;
213 | else return (s > text ? -1 : 1);
214 | }
215 |
216 |
217 | // from an index, get its string
218 | // this abstracts over alternates
219 | function getitem(i)
220 | {
221 | for ( ; i >= 0; i--)
222 | {
223 | var s = children[i].firstChild.firstChild.data;
224 | if (s.indexOf(' ') == -1)
225 | return s;
226 | }
227 | return ""; // should never be reached
228 | }
229 | }
230 |
231 | function setSynopsis(filename) {
232 | if (parent.window.synopsis && parent.window.synopsis.location) {
233 | if (parent.window.synopsis.location.replace) {
234 | // In Firefox this avoids adding the change to the history.
235 | parent.window.synopsis.location.replace(filename);
236 | } else {
237 | parent.window.synopsis.location = filename;
238 | }
239 | }
240 | }
241 |
242 | function addMenuItem(html) {
243 | var menu = document.getElementById("page-menu");
244 | if (menu) {
245 | var btn = menu.firstChild.cloneNode(false);
246 | btn.innerHTML = html;
247 | menu.appendChild(btn);
248 | }
249 | }
250 |
251 | function adjustForFrames() {
252 | var bodyCls;
253 |
254 | if (parent.location.href == window.location.href) {
255 | // not in frames, so add Frames button
256 | addMenuItem("Frames");
257 | bodyCls = "no-frame";
258 | }
259 | else {
260 | bodyCls = "in-frame";
261 | }
262 | addClass(document.body, bodyCls);
263 | }
264 |
265 | function reframe() {
266 | setCookie("haddock-reframe", document.URL);
267 | window.location = "frames.html";
268 | }
269 |
270 | function postReframe() {
271 | var s = getCookie("haddock-reframe");
272 | if (s) {
273 | parent.window.main.location = s;
274 | clearCookie("haddock-reframe");
275 | }
276 | }
277 |
278 | function styles() {
279 | var i, a, es = document.getElementsByTagName("link"), rs = [];
280 | for (i = 0; a = es[i]; i++) {
281 | if(a.rel.indexOf("style") != -1 && a.title) {
282 | rs.push(a);
283 | }
284 | }
285 | return rs;
286 | }
287 |
288 | function addStyleMenu() {
289 | var as = styles();
290 | var i, a, btns = "";
291 | for(i=0; a = as[i]; i++) {
292 | btns += ""
294 | + a.title + ""
295 | }
296 | if (as.length > 1) {
297 | var h = "";
301 | addMenuItem(h);
302 | }
303 | }
304 |
305 | function setActiveStyleSheet(title) {
306 | var as = styles();
307 | var i, a, found;
308 | for(i=0; a = as[i]; i++) {
309 | a.disabled = true;
310 | // need to do this always, some browsers are edge triggered
311 | if(a.title == title) {
312 | found = a;
313 | }
314 | }
315 | if (found) {
316 | found.disabled = false;
317 | setCookie("haddock-style", title);
318 | }
319 | else {
320 | as[0].disabled = false;
321 | clearCookie("haddock-style");
322 | }
323 | styleMenu(false);
324 | }
325 |
326 | function resetStyle() {
327 | var s = getCookie("haddock-style");
328 | if (s) setActiveStyleSheet(s);
329 | }
330 |
331 |
332 | function styleMenu(show) {
333 | var m = document.getElementById('style-menu');
334 | if (m) toggleShow(m, show);
335 | }
336 |
337 |
338 | function pageLoad() {
339 | addStyleMenu();
340 | adjustForFrames();
341 | resetStyle();
342 | restoreCollapsed();
343 | }
344 |
345 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/hslogo-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/hslogo-16.png
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/index-frames.html:
--------------------------------------------------------------------------------
1 | MaxMspOsc-0.1.0.0
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/index.html:
--------------------------------------------------------------------------------
1 | MaxMspOsc-0.1.0.0
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/mini_Sound-Tidal-MaxMspOsc.html:
--------------------------------------------------------------------------------
1 | Sound.Tidal.MaxMspOsc
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/minus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/minus.gif
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/ocean.css:
--------------------------------------------------------------------------------
1 | /* @group Fundamentals */
2 |
3 | * { margin: 0; padding: 0 }
4 |
5 | /* Is this portable? */
6 | html {
7 | background-color: white;
8 | width: 100%;
9 | height: 100%;
10 | }
11 |
12 | body {
13 | background: white;
14 | color: black;
15 | text-align: left;
16 | min-height: 100%;
17 | position: relative;
18 | }
19 |
20 | p {
21 | margin: 0.8em 0;
22 | }
23 |
24 | ul, ol {
25 | margin: 0.8em 0 0.8em 2em;
26 | }
27 |
28 | dl {
29 | margin: 0.8em 0;
30 | }
31 |
32 | dt {
33 | font-weight: bold;
34 | }
35 | dd {
36 | margin-left: 2em;
37 | }
38 |
39 | a { text-decoration: none; }
40 | a[href]:link { color: rgb(196,69,29); }
41 | a[href]:visited { color: rgb(171,105,84); }
42 | a[href]:hover { text-decoration:underline; }
43 |
44 | a[href].def:link, a[href].def:visited { color: black; }
45 | a[href].def:hover { color: rgb(78, 98, 114); }
46 |
47 | /* @end */
48 |
49 | /* @group Fonts & Sizes */
50 |
51 | /* Basic technique & IE workarounds from YUI 3
52 | For reasons, see:
53 | http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
54 | */
55 |
56 | body {
57 | font:13px/1.4 sans-serif;
58 | *font-size:small; /* for IE */
59 | *font:x-small; /* for IE in quirks mode */
60 | }
61 |
62 | h1 { font-size: 146.5%; /* 19pt */ }
63 | h2 { font-size: 131%; /* 17pt */ }
64 | h3 { font-size: 116%; /* 15pt */ }
65 | h4 { font-size: 100%; /* 13pt */ }
66 | h5 { font-size: 100%; /* 13pt */ }
67 |
68 | select, input, button, textarea {
69 | font:99% sans-serif;
70 | }
71 |
72 | table {
73 | font-size:inherit;
74 | font:100%;
75 | }
76 |
77 | pre, code, kbd, samp, tt, .src {
78 | font-family:monospace;
79 | *font-size:108%;
80 | line-height: 124%;
81 | }
82 |
83 | .links, .link {
84 | font-size: 85%; /* 11pt */
85 | }
86 |
87 | #module-header .caption {
88 | font-size: 182%; /* 24pt */
89 | }
90 |
91 | .info {
92 | font-size: 85%; /* 11pt */
93 | }
94 |
95 | #table-of-contents, #synopsis {
96 | /* font-size: 85%; /* 11pt */
97 | }
98 |
99 |
100 | /* @end */
101 |
102 | /* @group Common */
103 |
104 | .caption, h1, h2, h3, h4, h5, h6 {
105 | font-weight: bold;
106 | color: rgb(78,98,114);
107 | margin: 0.8em 0 0.4em;
108 | }
109 |
110 | * + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {
111 | margin-top: 2em;
112 | }
113 |
114 | h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
115 | margin-top: inherit;
116 | }
117 |
118 | ul.links {
119 | list-style: none;
120 | text-align: left;
121 | float: right;
122 | display: inline-table;
123 | margin: 0 0 0 1em;
124 | }
125 |
126 | ul.links li {
127 | display: inline;
128 | border-left: 1px solid #d5d5d5;
129 | white-space: nowrap;
130 | padding: 0;
131 | }
132 |
133 | ul.links li a {
134 | padding: 0.2em 0.5em;
135 | }
136 |
137 | .hide { display: none; }
138 | .show { display: inherit; }
139 | .clear { clear: both; }
140 |
141 | .collapser {
142 | background-image: url(minus.gif);
143 | background-repeat: no-repeat;
144 | }
145 | .expander {
146 | background-image: url(plus.gif);
147 | background-repeat: no-repeat;
148 | }
149 | .collapser, .expander {
150 | padding-left: 14px;
151 | margin-left: -14px;
152 | cursor: pointer;
153 | }
154 | p.caption.collapser,
155 | p.caption.expander {
156 | background-position: 0 0.4em;
157 | }
158 |
159 | .instance.collapser, .instance.expander {
160 | margin-left: 0px;
161 | background-position: left center;
162 | min-width: 9px;
163 | min-height: 9px;
164 | }
165 |
166 |
167 | pre {
168 | padding: 0.25em;
169 | margin: 0.8em 0;
170 | background: rgb(229,237,244);
171 | overflow: auto;
172 | border-bottom: 0.25em solid white;
173 | /* white border adds some space below the box to compensate
174 | for visual extra space that paragraphs have between baseline
175 | and the bounding box */
176 | }
177 |
178 | .src {
179 | background: #f0f0f0;
180 | padding: 0.2em 0.5em;
181 | }
182 |
183 | .keyword { font-weight: normal; }
184 | .def { font-weight: bold; }
185 |
186 | @media print {
187 | #footer { display: none; }
188 | }
189 |
190 | /* @end */
191 |
192 | /* @group Page Structure */
193 |
194 | #content {
195 | margin: 0 auto;
196 | padding: 0 2em 6em;
197 | }
198 |
199 | #package-header {
200 | background: rgb(41,56,69);
201 | border-top: 5px solid rgb(78,98,114);
202 | color: #ddd;
203 | padding: 0.2em;
204 | position: relative;
205 | text-align: left;
206 | }
207 |
208 | #package-header .caption {
209 | background: url(hslogo-16.png) no-repeat 0em;
210 | color: white;
211 | margin: 0 2em;
212 | font-weight: normal;
213 | font-style: normal;
214 | padding-left: 2em;
215 | }
216 |
217 | #package-header a:link, #package-header a:visited { color: white; }
218 | #package-header a:hover { background: rgb(78,98,114); }
219 |
220 | #module-header .caption {
221 | color: rgb(78,98,114);
222 | font-weight: bold;
223 | border-bottom: 1px solid #ddd;
224 | }
225 |
226 | table.info {
227 | float: right;
228 | padding: 0.5em 1em;
229 | border: 1px solid #ddd;
230 | color: rgb(78,98,114);
231 | background-color: #fff;
232 | max-width: 40%;
233 | border-spacing: 0;
234 | position: relative;
235 | top: -0.5em;
236 | margin: 0 0 0 2em;
237 | }
238 |
239 | .info th {
240 | padding: 0 1em 0 0;
241 | }
242 |
243 | div#style-menu-holder {
244 | position: relative;
245 | z-index: 2;
246 | display: inline;
247 | }
248 |
249 | #style-menu {
250 | position: absolute;
251 | z-index: 1;
252 | overflow: visible;
253 | background: #374c5e;
254 | margin: 0;
255 | text-align: center;
256 | right: 0;
257 | padding: 0;
258 | top: 1.25em;
259 | }
260 |
261 | #style-menu li {
262 | display: list-item;
263 | border-style: none;
264 | margin: 0;
265 | padding: 0;
266 | color: #000;
267 | list-style-type: none;
268 | }
269 |
270 | #style-menu li + li {
271 | border-top: 1px solid #919191;
272 | }
273 |
274 | #style-menu a {
275 | width: 6em;
276 | padding: 3px;
277 | display: block;
278 | }
279 |
280 | #footer {
281 | background: #ddd;
282 | border-top: 1px solid #aaa;
283 | padding: 0.5em 0;
284 | color: #666;
285 | text-align: center;
286 | position: absolute;
287 | bottom: 0;
288 | width: 100%;
289 | height: 3em;
290 | }
291 |
292 | /* @end */
293 |
294 | /* @group Front Matter */
295 |
296 | #table-of-contents {
297 | float: right;
298 | clear: right;
299 | background: #faf9dc;
300 | border: 1px solid #d8d7ad;
301 | padding: 0.5em 1em;
302 | max-width: 20em;
303 | margin: 0.5em 0 1em 1em;
304 | }
305 |
306 | #table-of-contents .caption {
307 | text-align: center;
308 | margin: 0;
309 | }
310 |
311 | #table-of-contents ul {
312 | list-style: none;
313 | margin: 0;
314 | }
315 |
316 | #table-of-contents ul ul {
317 | margin-left: 2em;
318 | }
319 |
320 | #description .caption {
321 | display: none;
322 | }
323 |
324 | #synopsis {
325 | display: none;
326 | }
327 |
328 | .no-frame #synopsis {
329 | display: block;
330 | position: fixed;
331 | right: 0;
332 | height: 80%;
333 | top: 10%;
334 | padding: 0;
335 | max-width: 75%;
336 | }
337 |
338 | #synopsis .caption {
339 | float: left;
340 | width: 29px;
341 | color: rgba(255,255,255,0);
342 | height: 110px;
343 | margin: 0;
344 | font-size: 1px;
345 | padding: 0;
346 | }
347 |
348 | #synopsis p.caption.collapser {
349 | background: url(synopsis.png) no-repeat -64px -8px;
350 | }
351 |
352 | #synopsis p.caption.expander {
353 | background: url(synopsis.png) no-repeat 0px -8px;
354 | }
355 |
356 | #synopsis ul {
357 | height: 100%;
358 | overflow: auto;
359 | padding: 0.5em;
360 | margin: 0;
361 | }
362 |
363 | #synopsis ul ul {
364 | overflow: hidden;
365 | }
366 |
367 | #synopsis ul,
368 | #synopsis ul li.src {
369 | background-color: #faf9dc;
370 | white-space: nowrap;
371 | list-style: none;
372 | margin-left: 0;
373 | }
374 |
375 | /* @end */
376 |
377 | /* @group Main Content */
378 |
379 | #interface div.top { margin: 2em 0; }
380 | #interface h1 + div.top,
381 | #interface h2 + div.top,
382 | #interface h3 + div.top,
383 | #interface h4 + div.top,
384 | #interface h5 + div.top {
385 | margin-top: 1em;
386 | }
387 | #interface .src .selflink,
388 | #interface .src .link {
389 | float: right;
390 | color: #919191;
391 | background: #f0f0f0;
392 | padding: 0 0.5em 0.2em;
393 | margin: 0 -0.5em 0 0;
394 | }
395 | #interface .src .selflink {
396 | border-left: 1px solid #919191;
397 | margin: 0 -0.5em 0 0.5em;
398 | }
399 |
400 | #interface span.fixity {
401 | color: #919191;
402 | border-left: 1px solid #919191;
403 | padding: 0.2em 0.5em 0.2em 0.5em;
404 | margin: 0 -1em 0 1em;
405 | }
406 |
407 | #interface span.rightedge {
408 | border-left: 1px solid #919191;
409 | padding: 0.2em 0 0.2em 0;
410 | margin: 0 0 0 1em;
411 | }
412 |
413 | #interface table { border-spacing: 2px; }
414 | #interface td {
415 | vertical-align: top;
416 | padding-left: 0.5em;
417 | }
418 | #interface td.src {
419 | white-space: nowrap;
420 | }
421 | #interface td.doc p {
422 | margin: 0;
423 | }
424 | #interface td.doc p + p {
425 | margin-top: 0.8em;
426 | }
427 |
428 | .clearfix:after {
429 | clear: both;
430 | content: " ";
431 | display: block;
432 | height: 0;
433 | visibility: hidden;
434 | }
435 |
436 | .subs ul {
437 | list-style: none;
438 | display: table;
439 | margin: 0;
440 | }
441 |
442 | .subs ul li {
443 | display: table-row;
444 | }
445 |
446 | .subs ul li dfn {
447 | display: table-cell;
448 | font-style: normal;
449 | font-weight: bold;
450 | margin: 1px 0;
451 | white-space: nowrap;
452 | }
453 |
454 | .subs ul li > .doc {
455 | display: table-cell;
456 | padding-left: 0.5em;
457 | margin-bottom: 0.5em;
458 | }
459 |
460 | .subs ul li > .doc p {
461 | margin: 0;
462 | }
463 |
464 | /* Render short-style data instances */
465 | .inst ul {
466 | height: 100%;
467 | padding: 0.5em;
468 | margin: 0;
469 | }
470 |
471 | .inst, .inst li {
472 | list-style: none;
473 | margin-left: 1em;
474 | }
475 |
476 | /* Workaround for bug in Firefox (issue #384) */
477 | .inst-left {
478 | float: left;
479 | }
480 |
481 | .top p.src {
482 | border-top: 1px solid #ccc;
483 | }
484 |
485 | .subs, .doc {
486 | /* use this selector for one level of indent */
487 | padding-left: 2em;
488 | }
489 |
490 | .warning {
491 | color: red;
492 | }
493 |
494 | .arguments {
495 | margin-top: -0.4em;
496 | }
497 | .arguments .caption {
498 | display: none;
499 | }
500 |
501 | .fields { padding-left: 1em; }
502 |
503 | .fields .caption { display: none; }
504 |
505 | .fields p { margin: 0 0; }
506 |
507 | /* this seems bulky to me
508 | .methods, .constructors {
509 | background: #f8f8f8;
510 | border: 1px solid #eee;
511 | }
512 | */
513 |
514 | /* @end */
515 |
516 | /* @group Auxillary Pages */
517 |
518 |
519 | .extension-list {
520 | list-style-type: none;
521 | margin-left: 0;
522 | }
523 |
524 | #mini {
525 | margin: 0 auto;
526 | padding: 0 1em 1em;
527 | }
528 |
529 | #mini > * {
530 | font-size: 93%; /* 12pt */
531 | }
532 |
533 | #mini #module-list .caption,
534 | #mini #module-header .caption {
535 | font-size: 125%; /* 15pt */
536 | }
537 |
538 | #mini #interface h1,
539 | #mini #interface h2,
540 | #mini #interface h3,
541 | #mini #interface h4 {
542 | font-size: 109%; /* 13pt */
543 | margin: 1em 0 0;
544 | }
545 |
546 | #mini #interface .top,
547 | #mini #interface .src {
548 | margin: 0;
549 | }
550 |
551 | #mini #module-list ul {
552 | list-style: none;
553 | margin: 0;
554 | }
555 |
556 | #alphabet ul {
557 | list-style: none;
558 | padding: 0;
559 | margin: 0.5em 0 0;
560 | text-align: center;
561 | }
562 |
563 | #alphabet li {
564 | display: inline;
565 | margin: 0 0.25em;
566 | }
567 |
568 | #alphabet a {
569 | font-weight: bold;
570 | }
571 |
572 | #index .caption,
573 | #module-list .caption { font-size: 131%; /* 17pt */ }
574 |
575 | #index table {
576 | margin-left: 2em;
577 | }
578 |
579 | #index .src {
580 | font-weight: bold;
581 | }
582 | #index .alt {
583 | font-size: 77%; /* 10pt */
584 | font-style: italic;
585 | padding-left: 2em;
586 | }
587 |
588 | #index td + td {
589 | padding-left: 1em;
590 | }
591 |
592 | #module-list ul {
593 | list-style: none;
594 | margin: 0 0 0 2em;
595 | }
596 |
597 | #module-list li {
598 | clear: right;
599 | }
600 |
601 | #module-list span.collapser,
602 | #module-list span.expander {
603 | background-position: 0 0.3em;
604 | }
605 |
606 | #module-list .package {
607 | float: right;
608 | }
609 |
610 | /* @end */
611 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/plus.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/plus.gif
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/synopsis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/doc/html/MaxMspOsc/synopsis.png
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/package.conf.inplace/MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH.conf:
--------------------------------------------------------------------------------
1 | name: MaxMspOsc
2 | version: 0.1.0.0
3 | id: MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH
4 | key: MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH
5 | license: BSD3
6 | copyright: 2018 Author name here
7 | maintainer: example@example.com
8 | homepage: https://github.com/githubuser/MaxMspOsc#readme
9 | category: Web
10 | author: Author name here
11 | exposed: True
12 | exposed-modules:
13 | Sound.Tidal.MaxMspOsc
14 | abi:
15 | trusted: False
16 | import-dirs: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build
17 | library-dirs: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build
18 | data-dir: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc
19 | hs-libraries: HSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH
20 | depends:
21 | base-4.9.0.0 tidal-0.9.6-KGZzHkkaZ4355BtcG1PTOw
22 | haddock-interfaces: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock
23 | haddock-html: /Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc
24 |
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/package.conf.inplace/package.cache:
--------------------------------------------------------------------------------
1 | ghcpkg MaxMspOsc-0.1.0.0 MaxMspOsc (MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH base-4.9.0.0 "tidal-0.9.6-KGZzHkkaZ4355BtcG1PTOw I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build *HSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build h/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock V/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc Sound.Tidal.MaxMspOsc MaxMspOsc (MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH (MaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH 2018 Author name here example@example.com Author name here .https://github.com/githubuser/MaxMspOsc#readme Web Sound Tidal MaxMspOsc I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build I/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/build >/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc *HSMaxMspOsc-0.1.0.0-CK6siUG6FC5HHsg7Bo0rkH base-4.9.0.0 "tidal-0.9.6-KGZzHkkaZ4355BtcG1PTOw h/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc/MaxMspOsc.haddock V/Users/madskjeldgaard/Desktop/scripts/tidal/Packages/MaxMspOsc/dist/doc/html/MaxMspOsc
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/dist/setup-config:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madskjeldgaard/tidal-maxmsp/4feb314d494ac1a17cf776897466c036b1862956/tidal/MaxMspOsc/dist/setup-config
--------------------------------------------------------------------------------
/tidal/MaxMspOsc/src/Sound/Tidal/MaxMspOsc.hs:
--------------------------------------------------------------------------------
1 | module Sound.Tidal.MaxMspOsc where
2 |
3 | import Sound.Tidal.Context
4 | import Sound.Tidal.Scales
5 | import Sound.Tidal.Chords
6 | import Sound.Tidal.OscStream
7 | --
8 | -- Send OSC via TIDAL
9 | -- taken from: http://ask.tidalcycles.org/question/367/how-to-define-a-custom-osc-message/
10 | --
11 |
12 | maxmspShape = Shape {
13 | -- Define the parameters. The first bit is the type - S for
14 | -- string, F for float, I for integer. The second part is the
15 | -- name of the parameter. The third is the default value for the
16 | -- parameter (only used if 'namedParams' defined below is set to
17 | -- 'False', so set to Nothing here).
18 | params = [
19 | I "note" Nothing,
20 | F "param1" Nothing,
21 | F "velocity" (Just 1),
22 | F "param2" Nothing,
23 | F "param3" Nothing,
24 | F "param4" Nothing,
25 | F "param5" Nothing,
26 | F "param6" Nothing,
27 | F "param7" Nothing,
28 | F "param8" Nothing,
29 | F "warp" Nothing,
30 | F "fold" Nothing,
31 | F "filterenv" Nothing,
32 | F "pitchenv" Nothing,
33 | F "lfo1" Nothing,
34 | F "lfo2" Nothing,
35 | F "lfo3" Nothing
36 | ],
37 | -- Whether to add the current cycles per second to the message
38 | cpsStamp = True,
39 | -- How far ahead of time to send the message
40 | latency = 0
41 | }
42 | --
43 | maxmspSlang streamNo = OscSlang {
44 | -- the OSC 'path'
45 | path = "/fromTidal/" ++ (show streamNo), -- Will become something like /fromTidal/1 or /fromTidal/2 etc
46 | -- Whether to timestamp the message with
47 | -- its logical time - can be 'BundleStamp'
48 | -- (put in a timestamped bundle),
49 | -- 'MessageStamp' (put in the message
50 | -- parameters), or 'NoStamp' (don't timestamp)
51 | timestamp = NoStamp,
52 | -- Whether to interleave the parameter
53 | -- names in the message. If this isn't
54 | -- set, all parameters will be sent, using
55 | -- defaults set above if they're not
56 | -- given in a tidal pattern
57 | namedParams = True,
58 | -- Parameters to stick on the beginning of
59 | -- a message
60 | preamble = []
61 | }
62 | -- a function to start your OSC stream, where "127.0.0.1" is the
63 | -- target host and 7000 the port number
64 | maxmspStream targetip targetport streamNo = do
65 | s <- makeConnection targetip targetport (maxmspSlang streamNo)
66 | stream (Backend s $ (\_ _ _ -> return ())) maxmspShape
67 | -- pattern parameter functions, where makeS is for string, makeF for floats, and so on.
68 | -- Many parameter functions are already defined and don't need re-defining, see here:
69 | -- https://github.com/tidalcycles/Tidal/blob/master/Sound/Tidal/Params.hs
70 | --
71 | warp = makeF maxmspShape "warp"
72 | fold = makeF maxmspShape "fold"
73 | filterenv = makeF maxmspShape "filterenv"
74 | pitchenv = makeF maxmspShape "pitchenv"
75 | lfo1 = makeF maxmspShape "lfo1"
76 | lfo2 = makeF maxmspShape "lfo2"
77 | lfo3 = makeF maxmspShape "lfo3"
78 | --
79 | param1 = makeF maxmspShape "param1"
80 | param2 = makeF maxmspShape "param2"
81 | param3 = makeF maxmspShape "param3"
82 | param4 = makeF maxmspShape "param4"
83 | param5 = makeF maxmspShape "param5"
84 | param6 = makeF maxmspShape "param6"
85 | param7 = makeF maxmspShape "param7"
86 | param8 = makeF maxmspShape "param8"
87 |
--------------------------------------------------------------------------------
/tidal/tidal-maxmsp-example.tidal:
--------------------------------------------------------------------------------
1 | -- 1. Import the Max Msp module which defines an osc stream and what to send + how
2 | -- It basically sends data off as a list of pairs (parameter, value) to the url /fromTidal/
3 | import Sound.Tidal.MaxMspOsc
4 |
5 | -- 2. Open up a connection
6 | --
7 | -- You can make as many of these connections as you want, just remember to
8 | -- choose an unused stream (or port) when you make a new one
9 | max1 <- maxmspStream "127.0.0.1" 8020 1 -- Destination ip (default is your own computer), port and streamNumber
10 |
11 | max2 <- maxmspStream "127.0.0.1" 8020 2
12 |
13 | max3 <- maxmspStream "127.0.0.1" 8020 3
14 |
15 | -- 3. Start live coding
16 | max1 $ velocity "0 0.25 0.5 1.0"
17 |
--------------------------------------------------------------------------------