-
Notifications
You must be signed in to change notification settings - Fork 0
/
pop-n-music-controller.html
355 lines (323 loc) · 26.4 KB
/
pop-n-music-controller.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
<!DOCTYPE html>
<html class="nojs html css_verticalspacer" lang="en-US">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
<meta name="generator" content="2018.1.0.386"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<script type="text/javascript">
// Update the 'nojs'/'js' class on the html node
document.documentElement.className = document.documentElement.className.replace(/\bnojs\b/g, 'js');
// Check that all required assets are uploaded and up-to-date
if(typeof Muse == "undefined") window.Muse = {}; window.Muse.assets = {"required":["museutils.js", "museconfig.js", "jquery.musemenu.js", "jquery.watch.js", "require.js", "webpro.js", "musewpslideshow.js", "jquery.museoverlay.js", "touchswipe.js", "pop-n-music-controller.css"], "outOfDate":[]};
</script>
<link rel="shortcut icon" href="images/favicon.ico?crc=332278209"/>
<title>Pop'n Music Controller</title>
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="css/site_global.css?crc=444006867"/>
<link rel="stylesheet" type="text/css" href="css/master_a-master.css?crc=219984344"/>
<link rel="stylesheet" type="text/css" href="css/pop-n-music-controller.css?crc=4036625583" id="pagesheet"/>
<!-- IE-only CSS -->
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="css/iefonts_pop-n-music-controller.css?crc=4273394815"/>
<![endif]-->
<!-- Other scripts -->
<script type="text/javascript">
var __adobewebfontsappname__ = "muse";
</script>
<!-- JS includes -->
<script src="https://webfonts.creativecloud.com/roboto:n9,n7,n4,n5:default.js" type="text/javascript"></script>
<!--[if lt IE 9]>
<script src="scripts/html5shiv.js?crc=4241844378" type="text/javascript"></script>
<![endif]-->
<!--HTML Widget code-->
<script>
alert = function(){};
alert("Welcome!");
</script>
</head>
<body>
<!--HTML Widget code-->
<!------------------------------------------------------------------------------
================================================================================
--------------------------------------------------------------------------------
_ ____ ____ ________
/ \ |_ \ / _| |_ __ |
/ _ \ | \/ | | |_ \_|
/ ___ \ | |\ /| | | _| _
_/ / \ \_ _| |_\/_| |_ _| |__/ |
|____| |____| |_____||_____| |________|
This website uses widget(s) from AdobeMuseExpert.com // This widgets are fee
to use and available for download at: http://adobemuseexpert.com/
--------------------------------------------------------------------------------
================================================================================
------------------------------------------------------------------------------->
<div class="clearfix borderbox" id="page"><!-- group -->
<div class="clearfix grpelem" id="pu859"><!-- group -->
<div class="browser_width" id="u859-bw">
<div id="u859"><!-- simple frame --></div>
</div>
<nav class="MenuBar clearfix" id="menuu865"><!-- horizontal box -->
<div class="MenuItemContainer clearfix grpelem" id="u873"><!-- vertical box -->
<a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix colelem" id="u874" href="index.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u875-4"><!-- content --><p>Portfolio ▾</p></div></a>
<div class="SubMenu MenuLevel1 clearfix" id="u878"><!-- vertical box -->
<ul class="SubMenuView clearfix colelem" id="u879"><!-- vertical box -->
<li class="MenuItemContainer clearfix colelem" id="u4168"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u4169" href="dance-dance-revolution-controller.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u4172-4"><!-- content --><div id="u4172-3"><p>Dance Dance Revolution Controller</p></div></div></a></li>
<li class="MenuItemContainer clearfix colelem" id="u910"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u912" href="30lb-combat-robot.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u916-4"><!-- content --><div id="u916-3"><p>30lb Combat Robot</p></div></div></a></li>
<li class="MenuItemContainer clearfix colelem" id="u931"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu MuseMenuActive borderbox clearfix grpelem" id="u934" href="pop-n-music-controller.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u935-4"><!-- content --><div id="u935-3"><p>Pop'n Music Controller</p></div></div></a></li>
<li class="MenuItemContainer clearfix colelem" id="u988"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u989" href="mindsumo-challenge-awards-%e2%96%be.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u991-4"><!-- content --><div id="u991-3"><p>MindSumo Challenge Awards ▾</p></div></div></a><div class="SubMenu MenuLevel2 clearfix" id="u993"><!-- vertical box --><ul class="SubMenuView clearfix colelem" id="u994"><!-- vertical box --><li class="MenuItemContainer clearfix colelem" id="u1195"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u1197" href="pet-treat-extrusion-braider.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u1201-4"><!-- content --><div id="u1201-3"><p>Pet Treat Extrusion Braider</p></div></div></a></li><li class="MenuItemContainer clearfix colelem" id="u1351"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u1352" href="kitchen-cabinet-accessibility.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u1355-4"><!-- content --><div id="u1355-3"><p>Kitchen Cabinet Accessibility</p></div></div></a></li><li class="MenuItemContainer clearfix colelem" id="u1240"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u1243" href="water-saving-faucet.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u1246-4"><!-- content --><div id="u1246-3"><p>Water-Saving Faucet</p></div></div></a></li></ul></div></li>
<li class="MenuItemContainer clearfix colelem" id="u960"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u963" href="coregains-promotional-video.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u965-4"><!-- content --><div id="u965-3"><p>CoreGains Promotional Video</p></div></div></a></li>
<li class="MenuItemContainer clearfix colelem" id="u1016"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u1017" href="rip10-banner-and-marquee.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u1018-4"><!-- content --><div id="u1018-3"><p>RIP10 Banner and Marquee</p></div></div></a></li>
<li class="MenuItemContainer clearfix colelem" id="u1044"><!-- horizontal box --><a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix grpelem" id="u1045" href="real-estate-flyer-design.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u1048-4"><!-- content --><div id="u1048-3"><p>Real Estate Flyer Design</p></div></div></a></li>
</ul>
</div>
</div>
<div class="MenuItemContainer clearfix grpelem" id="u866"><!-- vertical box -->
<a class="nonblock nontext MenuItem MenuItemWithSubMenu borderbox clearfix colelem" id="u867" href="about.html"><!-- horizontal box --><div class="MenuItemLabel NoWrap clearfix grpelem" id="u868-4"><!-- content --><p>About</p></div></a>
</div>
</nav>
<div class="clearfix" id="u1098-4"><!-- content -->
<p>OSCAR WONG</p>
</div>
</div>
<div class="clearfix grpelem" id="pu2239-4"><!-- column -->
<div class="clearfix colelem" id="u2239-4"><!-- content -->
<p>POP'N MUSIC CONTROLLER BUILD</p>
</div>
<div class="clearfix colelem" id="u2240-6"><!-- content -->
<div id="u2240-5">
<p>This was a personal project in which I build a replica of the controller for the arcade game Pop’n Music on a college budget.</p>
<p>The first part of this project was getting the buttons. Official buttons by Sanwa are available for sale, but are far outside of my price range at over 40 dollars each, so I ordered some identically dimensioned buttons from China off eBay and waited for them to arrive a few weeks later. These came with LEDs and microswitches, which would allow me to detect button presses.</p>
</div>
</div>
<div class="clearfix colelem" id="pu2303"><!-- group -->
<div class="clip_frame grpelem" id="u2303"><!-- image -->
<img class="block" id="u2303_img" src="images/1.jpg?crc=440287890" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="size_fixed grpelem" id="u4386" data-sizePolicy="fixed" data-pintopage="page_fluidx"><!-- custom html -->
</div>
</div>
<div class="clearfix colelem" id="u2243-4"><!-- content -->
<div id="u2243-3">
<p>The buttons, microswitches, and LEDs, fresh out of the box.</p>
</div>
</div>
<div class="clearfix colelem" id="u2244-7"><!-- content -->
<div id="u2244-6">
<p>Total cost so far: $75.26</p>
<p> </p>
<p>The next part was buying the wires and other electronic components necessary to interface these buttons with my computer. Since I do not own a soldering iron, I decided to use quick-connect crimp terminals, which would create solid connections to the switches and allow me to swap out components for future repair. I already had a spare Arduino and USB cable sitting around, which I would wire the buttons to. A quick trip to the ECE Supply Center provided me with a spool of 22ga solid core wire, crimp connectors in two different sizes (for the microswitch and LED terminals), and some rubber feet, which would hold the entire controller steady.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2313"><!-- image -->
<img class="block" id="u2313_img" src="images/2.jpg?crc=3942185803" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2247-4"><!-- content -->
<div id="u2247-3">
<p>Parts from the ECE Supply Center.</p>
</div>
</div>
<div class="clearfix colelem" id="u2248-10"><!-- content -->
<div id="u2248-9">
<p>Cost of parts: $10.51</p>
<p> </p>
<p>Total cost so far: $85.77</p>
<p> </p>
<p>Next, I needed to mount the buttons to a faceplate of some sort (these are typically made out of MDF, acrylic, sheet metal, etc) before I could wire them up. I was conveniently provided with these dimensions of the buttons from the eBay listing, as well as this diagram of the button spacings for the actual controller online.</p>
</div>
</div>
<div class="SlideShowWidget clearfix colelem" id="slideshowu2558" data-sizePolicy="fixed" data-pintopage="page_fluidx"><!-- none box -->
<div class="popup_anchor" id="u2568popup">
<div class="SlideShowContentPanel clearfix" id="u2568" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- stack box -->
<div class="SSSlide clip_frame grpelem" id="u2569" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- image -->
<img class="block ImageInclude" id="u2569_img" data-src="images/3.jpg?crc=123974698" src="images/blank.gif?crc=4208392903" alt="" data-width="393" data-height="393"/>
</div>
<div class="SSSlide invi clip_frame grpelem" id="u2621" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- image -->
<img class="block ImageInclude" id="u2621_img" data-src="images/4.jpg?crc=4093163300" src="images/blank.gif?crc=4208392903" alt="" data-width="524" data-height="221"/>
</div>
</div>
</div>
<div class="popup_anchor" id="u2566popup">
<div class="SlideShowCaptionPanel clearfix" id="u2566" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- stack box -->
<div class="SSSlideCaption clearfix grpelem" id="u2567-4" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- content -->
<p>Button dimensions, showing additional mounting nubs.</p>
</div>
<div class="SSSlideCaption invi clearfix grpelem" id="u2637-4" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- content -->
<p>Button spacing diagram.</p>
</div>
</div>
</div>
<div class="popup_anchor" id="u2564-4popup">
<div class="SlideShowLabel SSSlideCount clearfix" id="u2564-4" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- content -->
<p>1 - 2</p>
</div>
</div>
<div class="popup_anchor" id="u2565-4popup">
<div class="SSPreviousButton clearfix" id="u2565-4" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- content -->
<p><</p>
</div>
</div>
<div class="popup_anchor" id="u2563-4popup">
<div class="SSNextButton clearfix" id="u2563-4" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"><!-- content -->
<p>></p>
</div>
</div>
</div>
<div class="clearfix colelem" id="u2252-4"><!-- content -->
<div id="u2252-3">
<p>The easiest way to create arbitrary, well dimensioned cuts on a flat sheet of non-reflective material is a laser cutter, which the school has available at the Fab Lab. They take PDF files, and will vector cut any lines with a thickness of .001 inches. With this in mind, I created a PDF file in Illustrator that would cut out holes with the given dimensions spaced correctly apart. One requirement was that the controller would have to fit into a space no larger than 24” - the length of the largest luggage I have. Unfortunately, since the proper dimensions of the controller exceed 28”, I designed it to be laser cut on two sheets, each made of three parts. This would assemble together into a single solid unit, and could later be disassembled into 6 separate parts, with the longest at 22”.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2664"><!-- image -->
<img class="block" id="u2664_img" src="images/5.jpg?crc=530961724" alt="" data-heightwidthratio="0.5515463917525774" data-image-width="776" data-image-height="428"/>
</div>
<div class="clearfix colelem" id="u2647-4"><!-- content -->
<div id="u2647-3">
<p>An overview of the entire controller.</p>
</div>
</div>
<div class="clearfix colelem" id="u2648-22"><!-- content -->
<div id="u2648-21">
<p>In this overview of the entire Illustrator file, the green lines are vector cuts on the top sheet, the dark blue lines are vector cuts on the bottom sheet, and the dark grey and black lines are to be rastered on the top sheet, simulating the arcade artwork. Red lines are vector cuts on both sheets for nuts and bolts to hold the whole thing together.</p>
<p> </p>
<p>The next step was actually getting massive sheets of acrylic. Unfortunately, since 12x30” is not a standard size, I had to head to the next largest size - a massive 18x32”, which was one and a half times the acrylic I needed. I picked two sheets up at Blackline Supply, one black and one clear, so that the engraved design on the clear layer would pop out in contrast.</p>
<p> </p>
<p>Cost of acrylic: $47.42</p>
<p> </p>
<p>Total cost so far: $133.19</p>
<p> </p>
<p>I followed this up with a trip to the Fab Lab to use their laser cutter. Overall it took about 80 minutes to cut and engrave both sheets; the Fab Lab charges a dollar per 5 minutes of laser time. This sums up external expenses.</p>
<p> </p>
<p>Cost of laser time: $16.00</p>
<p> </p>
<p>Final cost: $149.19</p>
</div>
</div>
<div class="clip_frame colelem" id="u2674"><!-- image -->
<img class="block" id="u2674_img" src="images/8.jpg?crc=3762996236" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2684-4"><!-- content -->
<div id="u2684-3">
<p>The laser cutter.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2687"><!-- image -->
<img class="block" id="u2687_img" src="images/9.jpg?crc=228935408" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2697-4"><!-- content -->
<div id="u2697-3">
<p>The bottom sheet.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2700"><!-- image -->
<img class="block" id="u2700_img" src="images/10.jpg?crc=4063628335" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2719-4"><!-- content -->
<div id="u2719-3">
<p>The top clear sheet, with the protective paper still on, to be removed during assembly.</p>
</div>
</div>
<div class="clearfix colelem" id="u2722-4"><!-- content -->
<div id="u2722-3">
<p>With all parts fabricated, I had to assemble the controller body. I had two 12x15x3” boxes laying around, so I stitched them together with some long bolts to make a 12x30” box, which was just the right size for the acrylic sheets I had cut out. The acrylic was then assembled on top and loosely bolted into place after cutting out holes in the cardboard box. The buttons were then inserted and and tightened, along with the bolts.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2725"><!-- image -->
<img class="block" id="u2725_img" src="images/11.jpg?crc=419775342" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2735-4"><!-- content -->
<div id="u2735-3">
<p>The final exterior look of the controller.</p>
</div>
</div>
<div class="clearfix colelem" id="u2736-4"><!-- content -->
<div id="u2736-3">
<p>The hardware was in place, and now had to be wired. I strapped the Arduino down with a piece of cardboard to stop it from shifting around during gameplay, then proceeded to wire up the buttons using the crimp connectors and wire I bought previously at the ECE Supply Center. I daisy chained all the LED Highs to the 5V port, and also daisy chained all the microswitch grounds. Then, for each button, I connected LED Low, the microswitch NO terminal, and a convenient port on the Arduino.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2741"><!-- image -->
<img class="block" id="u2741_img" src="images/12.jpg?crc=490511039" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2751-4"><!-- content -->
<div id="u2751-3">
<p>The strapped down Arduino.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2754"><!-- image -->
<img class="block" id="u2754_img" src="images/13.jpg?crc=3822636053" alt="" data-heightwidthratio="0.5631443298969072" data-image-width="776" data-image-height="437"/>
</div>
<div class="clearfix colelem" id="u2764-4"><!-- content -->
<div id="u2764-3">
<p>The completed wiring.</p>
</div>
</div>
<div class="clearfix colelem" id="u2767-4"><!-- content -->
<div id="u2767-3">
<p>Next, I had to code the Arduino to act as a game controller. I picked up a few public libraries and example code, then modified it to fit.</p>
</div>
</div>
<div class="clip_frame colelem" id="u2770"><!-- image -->
<img class="block" id="u2770_img" src="images/14.jpg?crc=406243062" alt="" data-heightwidthratio="1.6412213740458015" data-image-width="524" data-image-height="860"/>
</div>
<div class="clearfix colelem" id="u2783-4"><!-- content -->
<div id="u2783-3">
<p>The Arduino code.</p>
</div>
</div>
<div class="clearfix colelem" id="u2786-4"><!-- content -->
<div id="u2786-3">
<p>A quick test showed that all the buttons registered as gamepad inputs, and all the LEDs lit up whenever the buttons were pressed. A success!</p>
</div>
</div>
</div>
<div class="verticalspacer" data-offset-top="7322" data-content-above-spacer="7321" data-content-below-spacer="79" data-sizePolicy="fixed" data-pintopage="page_fixedLeft"></div>
<div class="browser_width grpelem" id="u1380-bw">
<div id="u1380"><!-- group -->
<div class="clearfix" id="u1380_align_to_page">
<div class="clearfix grpelem" id="u1388-4"><!-- content -->
<p>OSCAR WONG 2018</p>
</div>
<div class="size_fixed grpelem" id="u1383" data-sizePolicy="fixed" data-pintopage="page_fluidx"><!-- custom html -->
<a href="http://www.adobe.com/go/made_with_muse_link"><img class="actAsDiv" width="115" src="http://musebadge.com/assets/madewithmuse-en_US.png" data-hidpi-src="http://musebadge.com/assets/madewithmuse-2x-en_US.png" alt="Made with Adobe Muse"/></a>
</div>
</div>
</div>
</div>
</div>
<!-- JS includes -->
<script type="text/javascript">
if (document.location.protocol != 'https:') document.write('\x3Cscript src="http://musecdn.businesscatalyst.com/scripts/4.0/jquery-1.8.3.min.js" type="text/javascript">\x3C/script>');
</script>
<script type="text/javascript">
window.jQuery || document.write('\x3Cscript src="scripts/jquery-1.8.3.min.js?crc=209076791" type="text/javascript">\x3C/script>');
</script>
<!-- Other scripts -->
<script type="text/javascript">
// Decide whether to suppress missing file error or not based on preference setting
var suppressMissingFileError = false
</script>
<script type="text/javascript">
window.Muse.assets.check=function(c){if(!window.Muse.assets.checked){window.Muse.assets.checked=!0;var b={},d=function(a,b){if(window.getComputedStyle){var c=window.getComputedStyle(a,null);return c&&c.getPropertyValue(b)||c&&c[b]||""}if(document.documentElement.currentStyle)return(c=a.currentStyle)&&c[b]||a.style&&a.style[b]||"";return""},a=function(a){if(a.match(/^rgb/))return a=a.replace(/\s+/g,"").match(/([\d\,]+)/gi)[0].split(","),(parseInt(a[0])<<16)+(parseInt(a[1])<<8)+parseInt(a[2]);if(a.match(/^\#/))return parseInt(a.substr(1),
16);return 0},f=function(f){for(var g=document.getElementsByTagName("link"),j=0;j<g.length;j++)if("text/css"==g[j].type){var l=(g[j].href||"").match(/\/?css\/([\w\-]+\.css)\?crc=(\d+)/);if(!l||!l[1]||!l[2])break;b[l[1]]=l[2]}g=document.createElement("div");g.className="version";g.style.cssText="display:none; width:1px; height:1px;";document.getElementsByTagName("body")[0].appendChild(g);for(j=0;j<Muse.assets.required.length;){var l=Muse.assets.required[j],k=l.match(/([\w\-\.]+)\.(\w+)$/),i=k&&k[1]?
k[1]:null,k=k&&k[2]?k[2]:null;switch(k.toLowerCase()){case "css":i=i.replace(/\W/gi,"_").replace(/^([^a-z])/gi,"_$1");g.className+=" "+i;i=a(d(g,"color"));k=a(d(g,"backgroundColor"));i!=0||k!=0?(Muse.assets.required.splice(j,1),"undefined"!=typeof b[l]&&(i!=b[l]>>>24||k!=(b[l]&16777215))&&Muse.assets.outOfDate.push(l)):j++;g.className="version";break;case "js":j++;break;default:throw Error("Unsupported file type: "+k);}}c?c().jquery!="1.8.3"&&Muse.assets.outOfDate.push("jquery-1.8.3.min.js"):Muse.assets.required.push("jquery-1.8.3.min.js");
g.parentNode.removeChild(g);if(Muse.assets.outOfDate.length||Muse.assets.required.length)g="Some files on the server may be missing or incorrect. Clear browser cache and try again. If the problem persists please contact website author.",f&&Muse.assets.outOfDate.length&&(g+="\nOut of date: "+Muse.assets.outOfDate.join(",")),f&&Muse.assets.required.length&&(g+="\nMissing: "+Muse.assets.required.join(",")),suppressMissingFileError?(g+="\nUse SuppressMissingFileError key in AppPrefs.xml to show missing file error pop up.",console.log(g)):alert(g)};location&&location.search&&location.search.match&&location.search.match(/muse_debug/gi)?
setTimeout(function(){f(!0)},5E3):f()}};
var muse_init=function(){require.config({baseUrl:""});require(["jquery","museutils","whatinput","jquery.musemenu","webpro","musewpslideshow","jquery.museoverlay","touchswipe","jquery.watch"],function(c){var $ = c;$(document).ready(function(){try{
window.Muse.assets.check($);/* body */
Muse.Utils.transformMarkupToFixBrowserProblemsPreInit();/* body */
Muse.Utils.prepHyperlinks(true);/* body */
Muse.Utils.resizeHeight('.browser_width');/* resize height */
Muse.Utils.requestAnimationFrame(function() { $('body').addClass('initialized'); });/* mark body as initialized */
Muse.Utils.makeButtonsVisibleAfterSettingMinWidth();/* body */
Muse.Utils.initWidget('.MenuBar', ['#bp_infinity'], function(elem) { return $(elem).museMenu(); });/* unifiedNavBar */
Muse.Utils.initWidget('#slideshowu2558', ['#bp_infinity'], function(elem) { var widget = new WebPro.Widget.ContentSlideShow(elem, {autoPlay:true,displayInterval:3000,slideLinkStopsSlideShow:false,transitionStyle:'fading',lightboxEnabled_runtime:false,shuffle:false,transitionDuration:500,enableSwipe:true,elastic:'off',resumeAutoplay:true,resumeAutoplayInterval:3000,playOnce:false,autoActivate_runtime:false,isResponsive:false}); $(elem).data('widget', widget); return widget; });/* #slideshowu2558 */
Muse.Utils.fullPage('#page');/* 100% height page */
Muse.Utils.showWidgetsWhenReady();/* body */
Muse.Utils.transformMarkupToFixBrowserProblems();/* body */
}catch(b){if(b&&"function"==typeof b.notify?b.notify():Muse.Assert.fail("Error calling selector function: "+b),false)throw b;}})})};
</script>
<!-- RequireJS script -->
<script src="scripts/require.js?crc=7928878" type="text/javascript" async data-main="scripts/museconfig.js?crc=4286661555" onload="if (requirejs) requirejs.onError = function(requireType, requireModule) { if (requireType && requireType.toString && requireType.toString().indexOf && 0 <= requireType.toString().indexOf('#scripterror')) window.Muse.assets.check(); }" onerror="window.Muse.assets.check();"></script>
<!--HTML Widget code-->
<script>console.log("%cWidget from AdobeMuseExpert.com 😊","font: 2em roboto; color: #00bcd4;");</script>
</body>
</html>