Skip to content

Commit 9c16f80

Browse files
Zapritdanilofuchs
andauthored
Added doom and cantina band (#4)
* Added doom and cantina band * Update ForceTouchPlayer/Songs/Doom.swift Changed note padding Co-authored-by: Danilo Campana Fuchs <danilo_fuchs@hotmail.com> * Updated README Co-authored-by: Danilo Campana Fuchs <danilo_fuchs@hotmail.com>
1 parent 190b840 commit 9c16f80

File tree

5 files changed

+219
-0
lines changed

5 files changed

+219
-0
lines changed

ForceTouchPlayer.xcodeproj/project.pbxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
31ED4854252FFA15002B9BAD /* Tetris.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31ED4853252FFA15002B9BAD /* Tetris.swift */; };
2222
7D830402253FB48E002466B0 /* HedwigsTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D830401253FB48E002466B0 /* HedwigsTheme.swift */; };
2323
7DDC3568253DC8D000F48DCD /* ImperialMarch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DDC3567253DC8D000F48DCD /* ImperialMarch.swift */; };
24+
BA357D2725D6B85900300A5E /* CantinaBand.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA357D2525D6B85900300A5E /* CantinaBand.swift */; };
25+
BA357D2825D6B85900300A5E /* Doom.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA357D2625D6B85900300A5E /* Doom.swift */; };
2426
/* End PBXBuildFile section */
2527

2628
/* Begin PBXFileReference section */
@@ -41,6 +43,8 @@
4143
31ED4853252FFA15002B9BAD /* Tetris.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Tetris.swift; sourceTree = "<group>"; };
4244
7D830401253FB48E002466B0 /* HedwigsTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HedwigsTheme.swift; sourceTree = "<group>"; };
4345
7DDC3567253DC8D000F48DCD /* ImperialMarch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImperialMarch.swift; sourceTree = "<group>"; };
46+
BA357D2525D6B85900300A5E /* CantinaBand.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CantinaBand.swift; sourceTree = "<group>"; };
47+
BA357D2625D6B85900300A5E /* Doom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Doom.swift; sourceTree = "<group>"; };
4448
/* End PBXFileReference section */
4549

4650
/* Begin PBXFrameworksBuildPhase section */
@@ -99,6 +103,8 @@
99103
31ED4850252FE116002B9BAD /* Songs */ = {
100104
isa = PBXGroup;
101105
children = (
106+
BA357D2525D6B85900300A5E /* CantinaBand.swift */,
107+
BA357D2625D6B85900300A5E /* Doom.swift */,
102108
31ED4853252FFA15002B9BAD /* Tetris.swift */,
103109
31ED4851252FE128002B9BAD /* TwinkleTwinkleLittleStar.swift */,
104110
31A156D22530030800777E42 /* HappyBirthday.swift */,
@@ -181,12 +187,14 @@
181187
buildActionMask = 2147483647;
182188
files = (
183189
31ED484D252FE058002B9BAD /* Song.swift in Sources */,
190+
BA357D2825D6B85900300A5E /* Doom.swift in Sources */,
184191
311A7A9C252D08620072A16B /* ContentView.swift in Sources */,
185192
7D830402253FB48E002466B0 /* HedwigsTheme.swift in Sources */,
186193
31ED4854252FFA15002B9BAD /* Tetris.swift in Sources */,
187194
7DDC3568253DC8D000F48DCD /* ImperialMarch.swift in Sources */,
188195
31A156D525300B6B00777E42 /* Extensions.swift in Sources */,
189196
31ED484F252FE0DA002B9BAD /* SongsRepository.swift in Sources */,
197+
BA357D2725D6B85900300A5E /* CantinaBand.swift in Sources */,
190198
317A217C2541277B00A96DF2 /* CMajorScale.swift in Sources */,
191199
31ED4852252FE128002B9BAD /* TwinkleTwinkleLittleStar.swift in Sources */,
192200
31A156D32530030800777E42 /* HappyBirthday.swift in Sources */,
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import Foundation
2+
3+
// Transcribed from the arduinosongs repo
4+
let cantinaBand = Song(
5+
name: "Cantina Band",
6+
defaultTempo: 200.0,
7+
rawNotes: [
8+
(NOTE_B1, 1.5),
9+
(NOTE_E2, 1.5),
10+
(NOTE_B1, 1.5),
11+
(NOTE_E2, 1.5),
12+
(NOTE_B1, 0.5),
13+
(NOTE_E2, 1.5),
14+
(NOTE_B1, 0.5),
15+
(REST, 0.5),
16+
(NOTE_AS1, 0.5),
17+
(NOTE_B1, 0.5),
18+
(NOTE_B1, 0.5),
19+
(NOTE_AS1, 0.5),
20+
(NOTE_B1, 0.5),
21+
(NOTE_A1, 0.5),
22+
(REST, 0.5),
23+
(NOTE_GS1, 0.5),
24+
(NOTE_A1, 0.5),
25+
(NOTE_G1, 0.5),
26+
(NOTE_G1, 1),
27+
(NOTE_E1, 3),
28+
(NOTE_B1, 1.5),
29+
(NOTE_E2, 1.5),
30+
(NOTE_B1, 1.5),
31+
(NOTE_E2, 1.5),
32+
(NOTE_B1, 0.5),
33+
(NOTE_E2, 1.5),
34+
(NOTE_B1, 0.5),
35+
(REST, 0.5),
36+
(NOTE_AS1, 0.5),
37+
(NOTE_B1, 0.5),
38+
(NOTE_A1, 1.5),
39+
(NOTE_A1, 1.5),
40+
(NOTE_GS1, 0.5),
41+
(NOTE_A1, 1.5),
42+
(NOTE_D2, 0.5),
43+
(NOTE_C2, 1.5),
44+
(NOTE_B1, 1.5),
45+
(NOTE_A1, 1.5),
46+
(NOTE_B1, 1.5),
47+
(NOTE_E2, 1.5),
48+
(NOTE_B1, 1.5),
49+
(NOTE_E2, 1.5),
50+
(NOTE_B1, 0.5),
51+
(NOTE_E2, 1.5),
52+
(NOTE_B1, 0.5),
53+
(REST, 0.5),
54+
(NOTE_AS1, 0.5),
55+
(NOTE_B1, 0.5),
56+
(NOTE_D2, 1),
57+
(NOTE_D2, 1.5),
58+
(NOTE_B1, 0.5),
59+
(NOTE_A1, 1.5),
60+
(NOTE_G1, 1.5),
61+
(NOTE_E1, 3),
62+
(NOTE_E1, 2),
63+
(NOTE_G1, 2),
64+
(NOTE_B1, 2),
65+
(NOTE_D2, 2),
66+
(NOTE_F2, 1.5),
67+
(NOTE_E2, 1.5),
68+
(NOTE_AS1, 0.5),
69+
(NOTE_AS1, 0.5),
70+
(NOTE_B1, 1),
71+
(NOTE_G1, 1)
72+
]
73+
)

ForceTouchPlayer/Songs/Doom.swift

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
//
2+
// Doom.swift
3+
// ForceTouchPlayer
4+
//
5+
// Created by Henry Asbridge on 12/02/2021.
6+
//
7+
8+
// Transcribed from the arduinosongs repo
9+
import Foundation
10+
11+
let doomE1M1 = Song(
12+
name: "Doom E1M1",
13+
defaultTempo: 300.0,
14+
padding: Note(frequency: 0, value: 0.15),
15+
rawNotes: [part1, part2, part3].flatMap { $0 }
16+
)
17+
// Had to break this into pieces, the compiler™ went brrr™
18+
private let part1: [RawNote] = [
19+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
20+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
21+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
22+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
23+
24+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
25+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
26+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
27+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
28+
29+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
30+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
31+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
32+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
33+
34+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
35+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
36+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
37+
(NOTE_FS2, 0.375), (NOTE_D2, 0.375), (NOTE_B1, 0.375), (NOTE_A2, 0.375), (NOTE_FS2, 0.375), (NOTE_B1, 0.375), (NOTE_D2, 0.375), (NOTE_FS2, 0.375), (NOTE_A2, 0.375), (NOTE_FS2, 0.375), (NOTE_D2, 0.375), (NOTE_B1, 0.375)]
38+
39+
private let part2: [RawNote] = [
40+
41+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
42+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
43+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
44+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
45+
46+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
47+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
48+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
49+
(NOTE_B2, 0.375), (NOTE_G2, 0.375), (NOTE_E2, 0.375), (NOTE_G2, 0.375), (NOTE_B2, 0.375), (NOTE_E3, 0.375), (NOTE_G2, 0.375), (NOTE_B2, 0.375), (NOTE_E3, 0.375), (NOTE_B2, 0.375), (NOTE_G3, 0.375), (NOTE_B3, 0.375),
50+
51+
(NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_A2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_G2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5),
52+
(NOTE_F2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_DS2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_E2, 0.5), (NOTE_F2, 0.5),
53+
(NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_A2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_G2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5),
54+
(NOTE_F2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_DS2, 3),
55+
56+
(NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_A2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_G2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), //29
57+
(NOTE_F2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_DS2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_E2, 0.5), (NOTE_F2, 0.5),
58+
(NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_A2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_G2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5),
59+
(NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_D2, 0.375), (NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_D2, 0.375), (NOTE_C3, 0.375), (NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_D2, 0.375),
60+
61+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //33
62+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
63+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
64+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
65+
66+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //37
67+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
68+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
69+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
70+
]
71+
72+
private let part3: [RawNote] = [
73+
(NOTE_CS2, 0.5), (NOTE_CS2, 0.5), (NOTE_CS3, 0.5), (NOTE_CS2, 0.5), (NOTE_CS2, 0.5), (NOTE_B2, 0.5), (NOTE_CS2, 0.5), (NOTE_CS2, 0.5), //41
74+
(NOTE_A2, 0.5), (NOTE_CS2, 0.5), (NOTE_CS2, 0.5), (NOTE_G2, 0.5), (NOTE_CS2, 0.5), (NOTE_CS2, 0.5), (NOTE_GS3, 0.5), (NOTE_A2, 0.5),
75+
(NOTE_B1, 0.5), (NOTE_B1, 0.5), (NOTE_B2, 0.5), (NOTE_B1, 0.5), (NOTE_B1, 0.5), (NOTE_A2, 0.5), (NOTE_B1, 0.5), (NOTE_B1, 0.5),
76+
(NOTE_G2, 0.5), (NOTE_B1, 0.5), (NOTE_B1, 0.5), (NOTE_F2, 3),
77+
78+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //45
79+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
80+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
81+
(NOTE_B2, 0.375), (NOTE_G2, 0.375), (NOTE_E2, 0.375), (NOTE_G2, 0.375), (NOTE_B2, 0.375), (NOTE_E3, 0.375), (NOTE_G2, 0.375), (NOTE_B2, 0.375), (NOTE_E3, 0.375), (NOTE_B2, 0.375), (NOTE_G3, 0.375), (NOTE_B3, 0.375),
82+
83+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //49
84+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
85+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
86+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
87+
88+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //53
89+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
90+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
91+
(NOTE_FS2, 0.375), (NOTE_DS2, 0.375), (NOTE_B1, 0.375), (NOTE_FS2, 0.375), (NOTE_DS2, 0.375), (NOTE_B1, 0.375), (NOTE_G2, 0.375), (NOTE_D2, 0.375), (NOTE_B1, 0.375), (NOTE_DS3, 0.375), (NOTE_DS2, 0.375), (NOTE_B1, 0.375),
92+
93+
// -/-
94+
95+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //57
96+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
97+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
98+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
99+
100+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //61
101+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
102+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
103+
(NOTE_E3, 0.375), (NOTE_B2, 0.375), (NOTE_G2, 0.375), (NOTE_G3, 0.375), (NOTE_E3, 0.375), (NOTE_G2, 0.375), (NOTE_B2, 0.375), (NOTE_D3, 0.375), (NOTE_E3, 0.375), (NOTE_G3, 0.375), (NOTE_E3, 0.375), (NOTE_G2, 0.375),
104+
105+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //65
106+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
107+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
108+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
109+
110+
(NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_A2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_G2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), //69
111+
(NOTE_F2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_DS2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_E2, 0.5), (NOTE_F2, 0.5),
112+
(NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_A2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5), (NOTE_G2, 0.5), (NOTE_A1, 0.5), (NOTE_A1, 0.5),
113+
(NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_D2, 0.375), (NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_D2, 0.375), (NOTE_C3, 0.375), (NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_A2, 0.375), (NOTE_F2, 0.375), (NOTE_D2, 0.375),
114+
115+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //73
116+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
117+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
118+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
119+
120+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //77
121+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
122+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
123+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
124+
125+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //81
126+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
127+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
128+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 3),
129+
130+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), //73
131+
(NOTE_C2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_AS1, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_B1, 0.5), (NOTE_C2, 0.5),
132+
(NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_E2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5), (NOTE_D2, 0.5), (NOTE_E1, 0.5), (NOTE_E1, 0.5),
133+
(NOTE_B2, 0.375), (NOTE_G2, 0.375), (NOTE_E2, 0.375), (NOTE_B1, 0.375), (NOTE_E2, 0.375), (NOTE_G2, 0.375), (NOTE_C3, 0.375), (NOTE_B2, 0.375), (NOTE_G2, 0.375), (NOTE_B2, 0.375), (NOTE_G2, 0.375), (NOTE_E2, 0.375),
134+
]

ForceTouchPlayer/SongsRepository.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ struct SongsRepository {
88
imperialMarch,
99
hedwigsTheme,
1010
cMajorScale,
11+
cantinaBand,
12+
doomE1M1
1113
]
1214

1315
func listSongs() -> [Song] {

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ _Needs macOS 10.15 (Catalina) or later_
4444
- Happy Birthday to You™
4545
- The Imperial March™
4646
- Hedwig's Theme™
47+
- Cantina Band™
48+
- DooM™ E1M1
4749

4850
(that's it)
4951

0 commit comments

Comments
 (0)