아케이드 티딩 가이드 목록으로
🚀 직접 따라해보기

뮤직 플레이어 만들기 (Zune Style)

💡 참고: 이 가이드는 메이크코드 아케이드 튜토리얼 Make a Music Player를 바탕으로 제작되었습니다.

🎯 학습 목표:

  • 컨트롤러 버튼 이벤트를 사용하여 음악을 재생하고 멈춥니다.
  • 변수(Variable)를 사용하여 현재 선택된 노래를 저장합니다.
  • 배경 이미지를 변경하여 앨범 아트를 표시합니다.
1

소개

기술이 시장에 출시되기 전에 많은 변화를 겪습니다. 오늘, 2005년 Zune(준) 프로토타입 팀에 속해 있는 것을 상상해보세요.

💡 Zune이란?
2006년에 출시된 Microsoft의 휴대용 미디어 플레이어입니다. 음악, 비디오, 그림을 저장할 수 있었습니다.
💡 프로토타입이란?
생산될 예정인 무언가의 초기 모델입니다. 아이디어가 실제 세계에서 어떻게 작동할지 볼 수 있도록 합니다.
Zune outline
2

로딩 화면 만들기

먼저 플레이어의 로딩 화면을 설정해 봅시다.

||scene:장면|| 카테고리를 열고 ||scene:배경 이미지 설정 [ ]|| 블록을 비어 있는 ||loops:시작하면|| 컨테이너에 끌어다 놓으세요.

// @highlight
scene.setBackgroundImage(img`.`)
3

아트워크 선택

로딩 화면에 보여질 이미지를 선택합니다.

||scene(noclick):배경 이미지 설정|| 블록의 빈 회색 상자를 클릭하여 이미지 편집기를 엽니다.

갤러리 탭을 클릭해서 Zune 화면이나 마음에 드는 이미지를 선택하세요.

Zune Splash Screen
// @highlight
scene.setBackgroundImage(sprites.background.forest1)
4

노래 설정 (위쪽 화살표)

위쪽 화살표(UP)를 누르면 노래가 로드되도록 만들어 봅시다.

||controller:컨트롤러||에서 ||controller:[업] 버튼을 [누를 때]|| 블록을 작업 공간의 빈 영역으로 가져오세요.

controller.up.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong()
    scene.setBackgroundImage(img`.`)
})
5

음악 만들기

► 비어 있는 ||music(noclick):노래 [ ]|| 블록을 클릭해서 음악 편집기를 엽니다.

► 직접 노래를 만들거나, 갤러리(또는 내 애셋) 탭에서 미리 만들어진 노래(예: curious-blob)를 선택하세요.

My Assets
controller.up.onEvent(ControllerButtonEvent.Pressed, function () {
    // @highlight
    thisSong = music.createSong(hex`006e000408040400001c00010a006400f401640000040000000000000000000000000005000004ae0000000100010a06000700010a0e000f00010f0f001000011110001100011214001500011118001900010f1c001d00010a20002100014b26002700014b30003100011232003300011433003400011234003500011138003900010f3c003d00014b40004100010a46004700010a5c005e00010a60006200014b66006800014b7000710001167200730001577300740001167400750001147600780001167800790001127a007b0001147c007d00011105001c000f0a006400f4010a0000040000000000000000000000000000000002900000000200010a06000700010a0e000f00010f0f001000011110001200011214001600011118001a00010f1c001d00010a20002200014b26002700014b30003100011232003300011433003400011234003600011138003a00010f3c003e00014b40004200010a46004800010a5c005e00010a60006200014b66006800014b70007200010a76007700014b7c007d00014b06001c00010a006400f401640000040000000000000000000000000000000002600000000200010a06000800010a1c001d00010a20002200014b26002800014b30003200010a36003800010a3c003e00014b40004200010a46004800010a5c005e00010a60006200014b66006800014b70007200010a76007700014b7c007d00014b09010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c800450100000100020e050600070001050800090002050a0c000d000202050e000f000106120013000105140015000202061800190002120a1c001d00030e02051e001f00010620002100020e0524002500010526002700010528002900010a2a002b0001052c002d0001022e002f00010530003100020e053200330001063400350001003600370001003800390005120105080a3a003b0001063c003d0001003e003f0002000540004100020e054600470001054800490002050a4c004d000202054e004f0001065200530001055400550002020658005900010a5c005d00030e02055e005f00010660006100020e0564006500010566006700010568006900010a6a006b0001056c006d0001026e006f00010570007100020e05720073000106740075000100760077000100780079000301050a7a007b0001067c007d0001007e007f00020005`)
    scene.setBackgroundImage(img`.`)
})
6

앨범 아트 추가

노래에 어울리는 앨범 커버를 화면에 표시해 봅시다.

||scene(noclick):배경 이미지 설정|| 블록의 빈 상자를 클릭하세요.

갤러리에서 해당 노래에 맞는 앨범 아트를 선택하거나 직접 그려보세요.

controller.up.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`006e000408040400001c00010a006400f401640000040000000000000000000000000005000004ae0000000100010a06000700010a0e000f00010f0f001000011110001100011214001500011118001900010f1c001d00010a20002100014b26002700014b30003100011232003300011433003400011234003500011138003900010f3c003d00014b40004100010a46004700010a5c005e00010a60006200014b66006800014b7000710001167200730001577300740001167400750001147600780001167800790001127a007b0001147c007d00011105001c000f0a006400f4010a0000040000000000000000000000000000000002900000000200010a06000700010a0e000f00010f0f001000011110001200011214001600011118001a00010f1c001d00010a20002200014b26002700014b30003100011232003300011433003400011234003600011138003a00010f3c003e00014b40004200010a46004800010a5c005e00010a60006200014b66006800014b70007200010a76007700014b7c007d00014b06001c00010a006400f401640000040000000000000000000000000000000002600000000200010a06000800010a1c001d00010a20002200014b26002800014b30003200010a36003800010a3c003e00014b40004200010a46004800010a5c005e00010a60006200014b66006800014b70007200010a76007700014b7c007d00014b09010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c800450100000100020e050600070001050800090002050a0c000d000202050e000f000106120013000105140015000202061800190002120a1c001d00030e02051e001f00010620002100020e0524002500010526002700010528002900010a2a002b0001052c002d0001022e002f00010530003100020e053200330001063400350001003600370001003800390005120105080a3a003b0001063c003d0001003e003f0002000540004100020e054600470001054800490002050a4c004d000202054e004f0001065200530001055400550002020658005900010a5c005d00030e02055e005f00010660006100020e0564006500010566006700010568006900010a6a006b0001056c006d0001026e006f00010570007100020e05720073000106740075000100760077000100780079000301050a7a007b0001067c007d0001007e007f00020005`)
    // @highlight
    scene.setBackgroundImage(sprites.background.autumn)
})
7

재생 버튼 (A) 만들기

노래를 로드했으니 이제 재생할 차례입니다.

||controller:컨트롤러||에서 ||controller:[A] 버튼을 [누를 때]|| 블록을 가져오세요.

► 그 안에 ||music:재생 [thisSong] [배경에서 반복]|| 블록을 넣습니다. 이제 A 버튼을 누르면 thisSong 변수에 저장된 노래가 재생됩니다.

let thisSong: music.Playable = null

controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
    music.play(thisSong, music.PlaybackMode.LoopingInBackground)
})
8

오류 방지 (조건문)

만약 노래를 선택하지 않고 A 버튼을 누르면 오류가 날 수 있습니다. 이를 방지해봅시다.

||logic:논리||에서 ||logic:만약 <참> 이면|| 블록을 가져와 ||controller:[A] 버튼|| 블록 안에 감싸주세요.

||variables:변수||||variables:thisSong|| 블록을 <참> 자리에 넣습니다. 이렇게 하면 노래가 있을 때만 재생합니다.

let thisSong: music.Playable = null

controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
    // @highlight
    if (thisSong) {
        music.play(thisSong, music.PlaybackMode.LoopingInBackground)
    }
})
9

더 많은 노래 추가하기

다른 버튼에도 노래를 추가해 봅시다.

||controller:[업] 버튼을 [누를 때]|| 블록 전체를 복사하거나 새로 꺼내서, 다운, 왼쪽, 오른쪽으로 변경하세요.

► 각 버튼마다 새로운 노래새로운 앨범 아트를 설정해 주세요.

controller.down.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`00b4000408060400001c00010a006400f401640000040000000000000000000000000005000004780018001900015019001c00011222002300010d48004900011249004c0001144e004f00015552005300011472007300010d78007900011179007d00011282008300010d8e008f0001128f00920001149600970001559c009d000114a200a3000112a800a9000150b400b5000155b500b8000157be00bf00011405001c000f0a006400f4010a000004000000000000000000000000000000000290000600080001500c000e00010f12001400014e18001a00010d2e00300001503400360001503600380001503c003e00010f42004400014e48004a00010d6000620001506600680001506c006e00010f72007400014e78007a00010d8e00900001149600980001939c009e000112a200a4000150a800aa00010dae00b000010ab400b6000149ba00bc000108be00c000015006001c00010a006400f401640000040000000000000000000000000000000002b0000700080001500d000e00010f13001400014e18001900020d5c19001a00011e2e00300001503400360001503600380001503c003e00010f42004400014e48004900030d1b6149004b00025c634e004f00021e2552005300025c636000620001506600680001506c006e00010f72007400014e78007a00010d8e008f0001149600980001939c009e000112a200a4000150a800aa00010dae00b000010ab400b60002491bba00bc000108be00c00002502009010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c8008401000001000201080400050001060600070001050a000b0001060c000d00031205091200130001051600170001061800190001051c001d0001061e001f00010524002500031205092800290001052a002b0001062e002f0002010530003100030106073400350001063600370001053a003b0001063c003d00031205094200430001054600470001064800490001054c004d0001064e004f00010554005500031201095800590001015e005f00010760006100030105086400650001066600670001056a006b0001066c006d00031205097000710001057200730001067600770001067800790001057c007d0001057e007f000106820083000201068400850003120509880089000201058a008b0001068e008f000106900091000201059400950001069600970001059a009b0001069c009d0003120609a000a100020106a200a3000106a600a700020105a800a9000106ac00ad000105ae00af000106b200b300020105b400b50003120609b800b90003120509ba00bb000106be00bf00051201050809`)
    scene.setBackgroundImage(sprites.background.cityscape)
})

controller.left.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`00a0000408060206001c00010a006400f401640000040000000000000000000000000000000002f50000000100030d192701000400012906000800012a0a000c00012910001200012a1600180001291e001f0001252200240001222400260001253000310003111d2731003400012936003800012a3a003c00012940004200012a46004700012a47004900012c4e005000012a5400560001295a005c00012a5e005f0002121e60006100031420296a006c00012570007200012272007600012588008a0001228a008c0001258e009000012790009100035561279100920001689600980001279c009e000125a200a4000127a600a700021863a700a8000125ac00ae000161b200b300011eb300b4000120b800ba00011ebe00c000020d2209010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c8007f01000001000201080400050001060600070001050a000b0001060c000d00020509120013000105160017000201061800190001051c001d000201061e001f000105240025000205092800290001052a002b0001062e002f0002010530003100030106073400350001063600370001053a003b0001063c003d000205094200430001054600470001064800490001054c004d0001064e004f000201055400550001095800590001015e005f0002010760006100030105086400650001066600670001056a006b0001066c006d000205097000710001057200730001067600770001067800790001057c007d0001057e007f0001068200830002010684008500020509880089000201058a008b0001068e008f000106900091000201059400950001069600970001059a009b0001069c009d00020609a000a1000106a200a3000106a600a700020105a800a900020106ac00ad00020105ae00af00020106b200b3000105b400b50003010609b800b900020105ba00bb00020106be00bf0003010508`)
    scene.setBackgroundImage(sprites.background.desert)
})

controller.right.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`007c000408040400001c00010a006400f401640000040000000000000000000000000005000004ae000200040001570400050001160800090001140c000e0001161000120001571400160001161600180001141a001c00010d2c002e00014b2e003000014b30003100010f32003300010f34003600014b36003700010d3c003e0001084200430001574400450001164800490001144c004d00011650005100015756005700011b5c005d0001196c006d00014b6e006f00014b70007100010f72007300010f74007500014b7600770001117c007d00010d05001c000f0a006400f4010a000004000000000000000000000000000000000272000c000d00010d14001500010d1a001b00010d20002100010d2e002f00010c30003100010f32003300010f36003700010d3c003d0001084c004d00010d54005500010d5a005b00010d60006100010d6c006d00014b6e006f00014b70007100010f72007300010f7600770001117c007d00010d06001c00010a006400f4016400000400000000000000000000000000000000025a0000000100020d190c000e00020d1914001600020d191a001c00020d1920002200020d192c002e00020d193c003e00010840004100020d194c004d00020d1954005500020d195a005b00020d1960006100020d196c006e00020d1909010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c8009c0100000100020e050200030001050400050001050600070001050800090002050a0a000b0001050c000d000202050e000f000106100011000105120013000105140015000202061600170001061800190002050a1a001b0001051c001d0001071e001f000107200021000202052200230001052400250001052600270001052800290002050a2a002b0001052c002d000202052e002f00010530003100010632003300010734003500020106360037000201073800390002050a3a003b000201053c003d000201063e003f0002010740004100020e054200430001054400450001054600470001054800490002050a4a004b0001054c004d000202054e004f000105500051000105520053000105540055000202055600570001055800590002050a5a005b0001055c005d0001055e005f000105600061000202056200630001056400650001056600670001056800690002050a6a006b0001056c006d000202056e006f0001057000710002010672007300010774007500020106760077000201077800790001077a007b000201057c007d000201077e007f00020107`)
    scene.setBackgroundImage(sprites.background.cityscape2)
})
10

음악 겹침 방지

새로운 노래를 재생할 때 이전 노래가 계속 나오고 있으면 시끄럽겠죠?

||music:음악|| 카테고리의 ||music:모든 소리 끄기|| 블록을 ||controller:[A] 버튼|| 블록의 맨 위에 넣으세요.

이제 새로운 노래가 시작되기 전에 기존 소리가 멈춥니다.

controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
    // @highlight
    music.stopAllSounds()
    if (thisSong) {
        music.play(thisSong, music.PlaybackMode.LoopingInBackground)
    }
})
11

정지 버튼 (B) 만들기

음악을 완전히 끄고 싶을 때를 위해 정지 버튼을 만들어 봅시다.

||controller:[B] 버튼을 [누를 때]|| 블록을 꺼내고, 그 안에 ||music:모든 소리 끄기||를 넣으세요.

controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
    music.stopAllSounds()
})
🎉

완성!

수고하셨습니다! 자신만의 Zune 뮤직 플레이어를 완성했습니다.

방향키로 노래를 선택하고(앨범 아트가 바뀝니다), A 버튼으로 재생, B 버튼으로 정지해보세요.

아래는 전체 완성 코드입니다.

let thisSong: music.Playable = null

// 시작 시 로딩 화면
scene.setBackgroundImage(sprites.background.forest1)

// A 버튼: 재생
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
    music.stopAllSounds()
    if (thisSong) {
        music.play(thisSong, music.PlaybackMode.LoopingInBackground)
    }
})

// B 버튼: 정지
controller.B.onEvent(ControllerButtonEvent.Pressed, function () {
    music.stopAllSounds()
})

// 방향키: 노래 및 앨범 아트 선택
controller.up.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`006e000408040400001c00010a006400f401640000040000000000000000000000000005000004ae0000000100010a06000700010a0e000f00010f0f001000011110001100011214001500011118001900010f1c001d00010a20002100014b26002700014b30003100011232003300011433003400011234003500011138003900010f3c003d00014b40004100010a46004700010a5c005e00010a60006200014b66006800014b7000710001167200730001577300740001167400750001147600780001167800790001127a007b0001147c007d00011105001c000f0a006400f4010a0000040000000000000000000000000000000002900000000200010a06000700010a0e000f00010f0f001000011110001200011214001600011118001a00010f1c001d00010a20002200014b26002700014b30003100011232003300011433003400011234003600011138003a00010f3c003e00014b40004200010a46004800010a5c005e00010a60006200014b66006800014b70007200010a76007700014b7c007d00014b06001c00010a006400f401640000040000000000000000000000000000000002600000000200010a06000800010a1c001d00010a20002200014b26002800014b30003200010a36003800010a3c003e00014b40004200010a46004800010a5c005e00010a60006200014b66006800014b70007200010a76007700014b7c007d00014b09010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c800450100000100020e050600070001050800090002050a0c000d000202050e000f000106120013000105140015000202061800190002120a1c001d00030e02051e001f00010620002100020e0524002500010526002700010528002900010a2a002b0001052c002d0001022e002f00010530003100020e053200330001063400350001003600370001003800390005120105080a3a003b0001063c003d0001003e003f0002000540004100020e054600470001054800490002050a4c004d000202054e004f0001065200530001055400550002020658005900010a5c005d00030e02055e005f00010660006100020e0564006500010566006700010568006900010a6a006b0001056c006d0001026e006f00010570007100020e05720073000106740075000100760077000100780079000301050a7a007b0001067c007d0001007e007f00020005`)
    scene.setBackgroundImage(sprites.background.autumn)
})

controller.down.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`00b4000408060400001c00010a006400f401640000040000000000000000000000000005000004780018001900015019001c00011222002300010d48004900011249004c0001144e004f00015552005300011472007300010d78007900011179007d00011282008300010d8e008f0001128f00920001149600970001559c009d000114a200a3000112a800a9000150b400b5000155b500b8000157be00bf00011405001c000f0a006400f4010a000004000000000000000000000000000000000290000600080001500c000e00010f12001400014e18001a00010d2e00300001503400360001503600380001503c003e00010f42004400014e48004a00010d6000620001506600680001506c006e00010f72007400014e78007a00010d8e00900001149600980001939c009e000112a200a4000150a800aa00010dae00b000010ab400b6000149ba00bc000108be00c000015006001c00010a006400f401640000040000000000000000000000000000000002b0000700080001500d000e00010f13001400014e18001900020d5c19001a00011e2e00300001503400360001503600380001503c003e00010f42004400014e48004900030d1b6149004b00025c634e004f00021e2552005300025c636000620001506600680001506c006e00010f72007400014e78007a00010d8e008f0001149600980001939c009e000112a200a4000150a800aa00010dae00b000010ab400b60002491bba00bc000108be00c00002502009010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c8008401000001000201080400050001060600070001050a000b0001060c000d00031205091200130001051600170001061800190001051c001d0001061e001f00010524002500031205092800290001052a002b0001062e002f0002010530003100030106073400350001063600370001053a003b0001063c003d00031205094200430001054600470001064800490001054c004d0001064e004f00010554005500031201095800590001015e005f00010760006100030105086400650001066600670001056a006b0001066c006d00031205097000710001057200730001067600770001067800790001057c007d0001057e007f000106820083000201068400850003120509880089000201058a008b0001068e008f000106900091000201059400950001069600970001059a009b0001069c009d0003120609a000a100020106a200a3000106a600a700020105a800a9000106ac00ad000105ae00af000106b200b300020105b400b50003120609b800b90003120509ba00bb000106be00bf00051201050809`)
    scene.setBackgroundImage(sprites.background.cityscape)
})

controller.left.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`00a0000408060206001c00010a006400f401640000040000000000000000000000000000000002f50000000100030d192701000400012906000800012a0a000c00012910001200012a1600180001291e001f0001252200240001222400260001253000310003111d2731003400012936003800012a3a003c00012940004200012a46004700012a47004900012c4e005000012a5400560001295a005c00012a5e005f0002121e60006100031420296a006c00012570007200012272007600012588008a0001228a008c0001258e009000012790009100035561279100920001689600980001279c009e000125a200a4000127a600a700021863a700a8000125ac00ae000161b200b300011eb300b4000120b800ba00011ebe00c000020d2209010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c8007f01000001000201080400050001060600070001050a000b0001060c000d00020509120013000105160017000201061800190001051c001d000201061e001f000105240025000205092800290001052a002b0001062e002f0002010530003100030106073400350001063600370001053a003b0001063c003d000205094200430001054600470001064800490001054c004d0001064e004f000201055400550001095800590001015e005f0002010760006100030105086400650001066600670001056a006b0001066c006d000205097000710001057200730001067600770001067800790001057c007d0001057e007f0001068200830002010684008500020509880089000201058a008b0001068e008f000106900091000201059400950001069600970001059a009b0001069c009d00020609a000a1000106a200a3000106a600a700020105a800a900020106ac00ad00020105ae00af00020106b200b3000105b400b50003010609b800b900020105ba00bb00020106be00bf0003010508`)
    scene.setBackgroundImage(sprites.background.desert)
})

controller.right.onEvent(ControllerButtonEvent.Pressed, function () {
    thisSong = music.createSong(hex`007c000408040400001c00010a006400f401640000040000000000000000000000000005000004ae000200040001570400050001160800090001140c000e0001161000120001571400160001161600180001141a001c00010d2c002e00014b2e003000014b30003100010f32003300010f34003600014b36003700010d3c003e0001084200430001574400450001164800490001144c004d00011650005100015756005700011b5c005d0001196c006d00014b6e006f00014b70007100010f72007300010f74007500014b7600770001117c007d00010d05001c000f0a006400f4010a000004000000000000000000000000000000000272000c000d00010d14001500010d1a001b00010d20002100010d2e002f00010c30003100010f32003300010f36003700010d3c003d0001084c004d00010d54005500010d5a005b00010d60006100010d6c006d00014b6e006f00014b70007100010f72007300010f7600770001117c007d00010d06001c00010a006400f4016400000400000000000000000000000000000000025a0000000100020d190c000e00020d1914001600020d191a001c00020d1920002200020d192c002e00020d193c003e00010840004100020d194c004d00020d1954005500020d195a005b00020d1960006100020d196c006e00020d1909010e02026400000403780000040a000301000000640001c80000040100000000640001640000040100000000fa0004af00000401c80000040a00019600000414000501006400140005010000002c0104dc00000401fa0000040a0001c8000004140005d0076400140005d0070000c800029001f40105c201f4010a0005900114001400039001000005c201f4010500058403050032000584030000fa00049001000005c201f4010500058403c80032000584030500640005840300009001049001000005c201f4010500058403c80064000584030500c8000584030000f40105ac0d000404a00f00000a0004ac0d2003010004a00f0000280004ac0d9001010004a00f0000280002d00700040408070f0064000408070000c80003c800c8000e7d00c80019000e64000f0032000e78000000fa00032c01c8000ee100c80019000ec8000f0032000edc000000fa0003f401c8000ea901c80019000e90010f0032000ea4010000fa0001c8000004014b000000c800012c01000401c8000000c8000190010004012c010000c80002c800000404c8000f0064000496000000c80002c2010004045e010f006400042c010000640002c409000404c4096400960004f6090000f40102b80b000404b80b64002c0104f40b0000f401022003000004200300040a000420030000ea01029001000004900100040a000490010000900102d007000410d0076400960010d0070000c8009c0100000100020e050200030001050400050001050600070001050800090002050a0a000b0001050c000d000202050e000f000106100011000105120013000105140015000202061600170001061800190002050a1a001b0001051c001d0001071e001f000107200021000202052200230001052400250001052600270001052800290002050a2a002b0001052c002d000202052e002f00010530003100010632003300010734003500020106360037000201073800390002050a3a003b000201053c003d000201063e003f0002010740004100020e054200430001054400450001054600470001054800490002050a4a004b0001054c004d000202054e004f000105500051000105520053000105540055000202055600570001055800590002050a5a005b0001055c005d0001055e005f000105600061000202056200630001056400650001056600670001056800690002050a6a006b0001056c006d000202056e006f0001057000710002010672007300010774007500020106760077000201077800790001077a007b000201057c007d000201077e007f00020107`)
    scene.setBackgroundImage(sprites.background.cityscape2)
})