@mcptoolshop/ai_jam_session 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/LICENSE +21 -0
  2. package/README.es.md +212 -0
  3. package/README.fr.md +212 -0
  4. package/README.hi.md +212 -0
  5. package/README.it.md +212 -0
  6. package/README.ja.md +214 -0
  7. package/README.md +214 -0
  8. package/README.pt-BR.md +212 -0
  9. package/dist/audio-engine.d.ts +9 -0
  10. package/dist/audio-engine.d.ts.map +1 -0
  11. package/dist/audio-engine.js +422 -0
  12. package/dist/audio-engine.js.map +1 -0
  13. package/dist/cli.d.ts +3 -0
  14. package/dist/cli.d.ts.map +1 -0
  15. package/dist/cli.js +551 -0
  16. package/dist/cli.js.map +1 -0
  17. package/dist/index.d.ts +32 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +41 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/mcp-server.d.ts +3 -0
  22. package/dist/mcp-server.d.ts.map +1 -0
  23. package/dist/mcp-server.js +903 -0
  24. package/dist/mcp-server.js.map +1 -0
  25. package/dist/midi/parser.d.ts +16 -0
  26. package/dist/midi/parser.d.ts.map +1 -0
  27. package/dist/midi/parser.js +192 -0
  28. package/dist/midi/parser.js.map +1 -0
  29. package/dist/midi/types.d.ts +44 -0
  30. package/dist/midi/types.d.ts.map +1 -0
  31. package/dist/midi/types.js +8 -0
  32. package/dist/midi/types.js.map +1 -0
  33. package/dist/note-parser.d.ts +105 -0
  34. package/dist/note-parser.d.ts.map +1 -0
  35. package/dist/note-parser.js +278 -0
  36. package/dist/note-parser.js.map +1 -0
  37. package/dist/playback/controls.d.ts +124 -0
  38. package/dist/playback/controls.d.ts.map +1 -0
  39. package/dist/playback/controls.js +252 -0
  40. package/dist/playback/controls.js.map +1 -0
  41. package/dist/playback/midi-engine.d.ts +68 -0
  42. package/dist/playback/midi-engine.d.ts.map +1 -0
  43. package/dist/playback/midi-engine.js +227 -0
  44. package/dist/playback/midi-engine.js.map +1 -0
  45. package/dist/playback/position.d.ts +95 -0
  46. package/dist/playback/position.d.ts.map +1 -0
  47. package/dist/playback/position.js +223 -0
  48. package/dist/playback/position.js.map +1 -0
  49. package/dist/playback/timing.d.ts +31 -0
  50. package/dist/playback/timing.d.ts.map +1 -0
  51. package/dist/playback/timing.js +57 -0
  52. package/dist/playback/timing.js.map +1 -0
  53. package/dist/sample-engine.d.ts +17 -0
  54. package/dist/sample-engine.d.ts.map +1 -0
  55. package/dist/sample-engine.js +428 -0
  56. package/dist/sample-engine.js.map +1 -0
  57. package/dist/schemas.d.ts +40 -0
  58. package/dist/schemas.d.ts.map +1 -0
  59. package/dist/schemas.js +42 -0
  60. package/dist/schemas.js.map +1 -0
  61. package/dist/session.d.ts +106 -0
  62. package/dist/session.d.ts.map +1 -0
  63. package/dist/session.js +361 -0
  64. package/dist/session.js.map +1 -0
  65. package/dist/sfz-parser.d.ts +36 -0
  66. package/dist/sfz-parser.d.ts.map +1 -0
  67. package/dist/sfz-parser.js +95 -0
  68. package/dist/sfz-parser.js.map +1 -0
  69. package/dist/smoke.d.ts +2 -0
  70. package/dist/smoke.d.ts.map +1 -0
  71. package/dist/smoke.js +512 -0
  72. package/dist/smoke.js.map +1 -0
  73. package/dist/songs/config/loader.d.ts +14 -0
  74. package/dist/songs/config/loader.d.ts.map +1 -0
  75. package/dist/songs/config/loader.js +53 -0
  76. package/dist/songs/config/loader.js.map +1 -0
  77. package/dist/songs/config/schema.d.ts +70 -0
  78. package/dist/songs/config/schema.d.ts.map +1 -0
  79. package/dist/songs/config/schema.js +53 -0
  80. package/dist/songs/config/schema.js.map +1 -0
  81. package/dist/songs/index.d.ts +16 -0
  82. package/dist/songs/index.d.ts.map +1 -0
  83. package/dist/songs/index.js +20 -0
  84. package/dist/songs/index.js.map +1 -0
  85. package/dist/songs/jam.d.ts +48 -0
  86. package/dist/songs/jam.d.ts.map +1 -0
  87. package/dist/songs/jam.js +324 -0
  88. package/dist/songs/jam.js.map +1 -0
  89. package/dist/songs/loader.d.ts +27 -0
  90. package/dist/songs/loader.d.ts.map +1 -0
  91. package/dist/songs/loader.js +90 -0
  92. package/dist/songs/loader.js.map +1 -0
  93. package/dist/songs/midi/hands.d.ts +46 -0
  94. package/dist/songs/midi/hands.d.ts.map +1 -0
  95. package/dist/songs/midi/hands.js +134 -0
  96. package/dist/songs/midi/hands.js.map +1 -0
  97. package/dist/songs/midi/ingest.d.ts +8 -0
  98. package/dist/songs/midi/ingest.d.ts.map +1 -0
  99. package/dist/songs/midi/ingest.js +191 -0
  100. package/dist/songs/midi/ingest.js.map +1 -0
  101. package/dist/songs/midi/measures.d.ts +41 -0
  102. package/dist/songs/midi/measures.d.ts.map +1 -0
  103. package/dist/songs/midi/measures.js +64 -0
  104. package/dist/songs/midi/measures.js.map +1 -0
  105. package/dist/songs/midi/types.d.ts +25 -0
  106. package/dist/songs/midi/types.d.ts.map +1 -0
  107. package/dist/songs/midi/types.js +8 -0
  108. package/dist/songs/midi/types.js.map +1 -0
  109. package/dist/songs/registry.d.ts +37 -0
  110. package/dist/songs/registry.d.ts.map +1 -0
  111. package/dist/songs/registry.js +197 -0
  112. package/dist/songs/registry.js.map +1 -0
  113. package/dist/songs/types.d.ts +99 -0
  114. package/dist/songs/types.d.ts.map +1 -0
  115. package/dist/songs/types.js +27 -0
  116. package/dist/songs/types.js.map +1 -0
  117. package/dist/teaching/live-midi-feedback.d.ts +36 -0
  118. package/dist/teaching/live-midi-feedback.d.ts.map +1 -0
  119. package/dist/teaching/live-midi-feedback.js +259 -0
  120. package/dist/teaching/live-midi-feedback.js.map +1 -0
  121. package/dist/teaching/midi-feedback.d.ts +33 -0
  122. package/dist/teaching/midi-feedback.d.ts.map +1 -0
  123. package/dist/teaching/midi-feedback.js +208 -0
  124. package/dist/teaching/midi-feedback.js.map +1 -0
  125. package/dist/teaching/sing-on-midi.d.ts +77 -0
  126. package/dist/teaching/sing-on-midi.d.ts.map +1 -0
  127. package/dist/teaching/sing-on-midi.js +186 -0
  128. package/dist/teaching/sing-on-midi.js.map +1 -0
  129. package/dist/teaching.d.ts +148 -0
  130. package/dist/teaching.d.ts.map +1 -0
  131. package/dist/teaching.js +453 -0
  132. package/dist/teaching.js.map +1 -0
  133. package/dist/test-sound.d.ts +3 -0
  134. package/dist/test-sound.d.ts.map +1 -0
  135. package/dist/test-sound.js +41 -0
  136. package/dist/test-sound.js.map +1 -0
  137. package/dist/types.d.ts +229 -0
  138. package/dist/types.d.ts.map +1 -0
  139. package/dist/types.js +22 -0
  140. package/dist/types.js.map +1 -0
  141. package/dist/vmpk.d.ts +23 -0
  142. package/dist/vmpk.d.ts.map +1 -0
  143. package/dist/vmpk.js +236 -0
  144. package/dist/vmpk.js.map +1 -0
  145. package/logo.png +0 -0
  146. package/package.json +70 -0
  147. package/songs/builtin/a-change-is-gonna-come.json +95 -0
  148. package/songs/builtin/a-thousand-years.json +93 -0
  149. package/songs/builtin/aint-no-sunshine.json +98 -0
  150. package/songs/builtin/all-blues.json +92 -0
  151. package/songs/builtin/autumn-leaves.json +100 -0
  152. package/songs/builtin/baba-oriley.json +91 -0
  153. package/songs/builtin/bach-invention-no1.json +70 -0
  154. package/songs/builtin/bach-prelude-c-major-bwv846.json +1282 -0
  155. package/songs/builtin/basic-12-bar-blues.json +119 -0
  156. package/songs/builtin/beethoven-waldstein-mvt1.json +7766 -0
  157. package/songs/builtin/bennie-and-the-jets.json +92 -0
  158. package/songs/builtin/besame-mucho.json +93 -0
  159. package/songs/builtin/black-orpheus.json +92 -0
  160. package/songs/builtin/blue-bossa.json +94 -0
  161. package/songs/builtin/blues-in-g.json +92 -0
  162. package/songs/builtin/bohemian-rhapsody-intro.json +94 -0
  163. package/songs/builtin/boogie-woogie-basics.json +93 -0
  164. package/songs/builtin/bossa-nova-basic.json +95 -0
  165. package/songs/builtin/chopin-nocturne-op9-no2.json +70 -0
  166. package/songs/builtin/cinema-paradiso.json +94 -0
  167. package/songs/builtin/clair-de-lune.json +11511 -0
  168. package/songs/builtin/clocks.json +91 -0
  169. package/songs/builtin/crystal-stream.json +70 -0
  170. package/songs/builtin/desafinado.json +93 -0
  171. package/songs/builtin/dont-stop-believin.json +91 -0
  172. package/songs/builtin/dream-on.json +100 -0
  173. package/songs/builtin/easy-winners.json +70 -0
  174. package/songs/builtin/el-condor-pasa.json +93 -0
  175. package/songs/builtin/elite-syncopations.json +70 -0
  176. package/songs/builtin/evening-calm.json +70 -0
  177. package/songs/builtin/everyday-blues.json +93 -0
  178. package/songs/builtin/fly-me-to-the-moon.json +91 -0
  179. package/songs/builtin/forrest-gump-suite.json +93 -0
  180. package/songs/builtin/fur-elise.json +20094 -0
  181. package/songs/builtin/georgia-on-my-mind.json +93 -0
  182. package/songs/builtin/girl-from-ipanema.json +92 -0
  183. package/songs/builtin/gladiolus-rag.json +70 -0
  184. package/songs/builtin/great-balls-of-fire.json +92 -0
  185. package/songs/builtin/guantanamera.json +92 -0
  186. package/songs/builtin/hallelujah.json +92 -0
  187. package/songs/builtin/hedwigs-theme.json +93 -0
  188. package/songs/builtin/hotel-california.json +92 -0
  189. package/songs/builtin/imagine.json +92 -0
  190. package/songs/builtin/just-the-two-of-us.json +92 -0
  191. package/songs/builtin/la-bamba.json +92 -0
  192. package/songs/builtin/layla-piano-coda.json +93 -0
  193. package/songs/builtin/lean-on-me.json +91 -0
  194. package/songs/builtin/let-it-be.json +101 -0
  195. package/songs/builtin/lets-stay-together.json +93 -0
  196. package/songs/builtin/magnetic-rag.json +70 -0
  197. package/songs/builtin/maple-leaf-rag.json +99 -0
  198. package/songs/builtin/mia-and-sebastians-theme.json +93 -0
  199. package/songs/builtin/minor-blues-in-a.json +94 -0
  200. package/songs/builtin/misty.json +94 -0
  201. package/songs/builtin/moon-river.json +93 -0
  202. package/songs/builtin/moonlight-sonata-mvt1.json +101 -0
  203. package/songs/builtin/morning-light.json +70 -0
  204. package/songs/builtin/mountain-dawn.json +70 -0
  205. package/songs/builtin/mozart-k545-mvt1.json +2956 -0
  206. package/songs/builtin/my-girl.json +92 -0
  207. package/songs/builtin/night-train.json +92 -0
  208. package/songs/builtin/november-rain.json +93 -0
  209. package/songs/builtin/ocean-waves.json +70 -0
  210. package/songs/builtin/over-the-rainbow.json +93 -0
  211. package/songs/builtin/oye-como-va.json +93 -0
  212. package/songs/builtin/peacherine-rag.json +70 -0
  213. package/songs/builtin/piano-man.json +92 -0
  214. package/songs/builtin/pineapple-rag.json +70 -0
  215. package/songs/builtin/pink-panther.json +94 -0
  216. package/songs/builtin/ragtime-dance.json +70 -0
  217. package/songs/builtin/river-flows-in-you.json +102 -0
  218. package/songs/builtin/rocket-man.json +92 -0
  219. package/songs/builtin/satie-gymnopedie-no1.json +70 -0
  220. package/songs/builtin/satin-doll.json +93 -0
  221. package/songs/builtin/schindlers-list.json +96 -0
  222. package/songs/builtin/schumann-traumerei.json +70 -0
  223. package/songs/builtin/sitting-on-the-dock.json +91 -0
  224. package/songs/builtin/slow-blues-in-bb.json +98 -0
  225. package/songs/builtin/snowfall.json +70 -0
  226. package/songs/builtin/so-what.json +92 -0
  227. package/songs/builtin/solace.json +70 -0
  228. package/songs/builtin/someone-like-you.json +92 -0
  229. package/songs/builtin/spirited-away.json +94 -0
  230. package/songs/builtin/st-louis-blues.json +93 -0
  231. package/songs/builtin/stairway-intro.json +93 -0
  232. package/songs/builtin/starlight-waltz.json +70 -0
  233. package/songs/builtin/stay-with-me.json +93 -0
  234. package/songs/builtin/stormy-monday.json +94 -0
  235. package/songs/builtin/superstition.json +93 -0
  236. package/songs/builtin/sweet-home-chicago.json +93 -0
  237. package/songs/builtin/take-five.json +92 -0
  238. package/songs/builtin/take-the-a-train.json +93 -0
  239. package/songs/builtin/the-entertainer.json +98 -0
  240. package/songs/builtin/the-godfather-waltz.json +93 -0
  241. package/songs/builtin/thrill-is-gone.json +94 -0
  242. package/songs/builtin/twilight-garden.json +70 -0
  243. package/songs/builtin/watermark.json +70 -0
  244. package/songs/builtin/wave.json +93 -0
  245. package/songs/builtin/whats-going-on.json +93 -0
  246. package/songs/builtin/yesterday.json +92 -0
@@ -0,0 +1,101 @@
1
+ {
2
+ "id": "moonlight-sonata-mvt1",
3
+ "title": "Moonlight Sonata, Mvt. 1 (Adagio sostenuto)",
4
+ "genre": "classical",
5
+ "composer": "Ludwig van Beethoven",
6
+ "difficulty": "intermediate",
7
+ "key": "C# minor",
8
+ "tempo": 56,
9
+ "timeSignature": "4/4",
10
+ "durationSeconds": 90,
11
+ "tags": [
12
+ "beethoven",
13
+ "sonata",
14
+ "romantic",
15
+ "arpeggios",
16
+ "iconic",
17
+ "nocturnal"
18
+ ],
19
+ "source": "Public domain — simplified arrangement (first 8 bars)",
20
+ "musicalLanguage": {
21
+ "description": "The famous opening of Beethoven's 'Moonlight' Sonata — a hypnotic wash of broken triads over a deep bass pedal. The right hand spins continuous triplet arpeggios while the left provides the harmonic foundation. It's one of the most recognizable openings in all of classical music.",
22
+ "structure": "Through-composed (this excerpt covers the opening 8 bars of the exposition)",
23
+ "keyMoments": [
24
+ "Bar 1: The iconic C# minor triplet pattern establishes the moonlit atmosphere",
25
+ "Bar 5: The melody emerges in the top voice of the arpeggios — listen for the singing tone",
26
+ "Bar 7-8: Harmonic shift toward the dominant (G# major) creates gentle tension"
27
+ ],
28
+ "teachingGoals": [
29
+ "Even triplet rhythm — all three notes equal, no accents on beat 1",
30
+ "Pedal technique: long pedal changes per harmony, not per beat",
31
+ "Voicing: bring out the top note of each triplet group as the melody"
32
+ ],
33
+ "styleTips": [
34
+ "pp throughout — this is moonlight, not a thunderstorm",
35
+ "Sustain pedal changes with the harmony, not mechanically per bar",
36
+ "Let the top voice sing; the inner notes are accompaniment texture"
37
+ ]
38
+ },
39
+ "measures": [
40
+ {
41
+ "number": 1,
42
+ "rightHand": "G#3:e E4:e G#4:e G#3:e E4:e G#4:e G#3:e E4:e G#4:e G#3:e E4:e G#4:e",
43
+ "leftHand": "C#2:h C#3:h",
44
+ "fingering": "RH: 1-2-4 repeating, LH: 5-1",
45
+ "teachingNote": "Keep the triplets perfectly even — count 'one-and-a two-and-a three-and-a four-and-a'",
46
+ "dynamics": "pp"
47
+ },
48
+ {
49
+ "number": 2,
50
+ "rightHand": "G#3:e E4:e G#4:e G#3:e E4:e G#4:e G#3:e E4:e G#4:e G#3:e E4:e G#4:e",
51
+ "leftHand": "B1:h B2:h",
52
+ "fingering": "RH: 1-2-4 repeating, LH: 5-1",
53
+ "teachingNote": "Same pattern, new bass note — let the harmony shift color the mood"
54
+ },
55
+ {
56
+ "number": 3,
57
+ "rightHand": "A3:e E4:e A4:e A3:e E4:e A4:e A3:e E4:e A4:e A3:e E4:e A4:e",
58
+ "leftHand": "A1:h A2:h",
59
+ "fingering": "RH: 1-2-5 repeating, LH: 5-1",
60
+ "teachingNote": "Notice how A natural brightens the color — we've moved to A major briefly"
61
+ },
62
+ {
63
+ "number": 4,
64
+ "rightHand": "G#3:e E4:e G#4:e G#3:e E4:e G#4:e G#3:e D#4:e F#4:e G#3:e D#4:e F#4:e",
65
+ "leftHand": "F#1:h F#2:h",
66
+ "fingering": "RH: 1-2-4 then 1-2-3, LH: 5-1",
67
+ "teachingNote": "The second half introduces D# and F# — the harmony is shifting toward the dominant"
68
+ },
69
+ {
70
+ "number": 5,
71
+ "rightHand": "G#3:e C#4:e E4:e G#3:e C#4:e E4:e G#3:e C#4:e E4:e G#3:e C#4:e E4:e",
72
+ "leftHand": "C#2:h G#2:h",
73
+ "fingering": "RH: 1-2-4, LH: 5-2",
74
+ "teachingNote": "Back to C# minor — the melody note (E) now sits on top. Voice it louder than the others.",
75
+ "dynamics": "pp"
76
+ },
77
+ {
78
+ "number": 6,
79
+ "rightHand": "G#3:e B3:e E4:e G#3:e B3:e E4:e G#3:e B3:e E4:e G#3:e B3:e E4:e",
80
+ "leftHand": "E2:h B2:h",
81
+ "fingering": "RH: 1-2-4, LH: 5-2",
82
+ "teachingNote": "E major chord — a moment of warmth before the music darkens again"
83
+ },
84
+ {
85
+ "number": 7,
86
+ "rightHand": "A3:e C#4:e E4:e A3:e C#4:e E4:e G#3:e B#3:e E4:e G#3:e B#3:e E4:e",
87
+ "leftHand": "A1:h G#1:h",
88
+ "fingering": "RH: 1-2-4, LH: 5 then 5",
89
+ "teachingNote": "B# (enharmonic C) in the second half creates the augmented chord tension — lean into it slightly",
90
+ "dynamics": "crescendo"
91
+ },
92
+ {
93
+ "number": 8,
94
+ "rightHand": "G#3:e C#4:e E4:e G#3:e C#4:e E4:e G#3:e C#4:e E4:e G#3:e C#4:e E4:e",
95
+ "leftHand": "C#2:w",
96
+ "fingering": "RH: 1-2-4, LH: 5",
97
+ "teachingNote": "Resolution back to C# minor — let the tension dissolve. Breathe.",
98
+ "dynamics": "pp"
99
+ }
100
+ ]
101
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "id": "morning-light",
3
+ "title": "Morning Light",
4
+ "genre": "new-age",
5
+ "composer": "Claude (original)",
6
+ "difficulty": "beginner",
7
+ "key": "G major",
8
+ "tempo": 72,
9
+ "timeSignature": "4/4",
10
+ "durationSeconds": 27,
11
+ "tags": ["new-age", "bright", "arpeggios", "beginner", "uplifting"],
12
+ "source": "Claude arrangement",
13
+ "musicalLanguage": {
14
+ "description": "A bright, uplifting piece built on simple arpeggiated patterns that evoke sunlight gradually filling a room. The harmony moves gently through diatonic chords in G major, creating warmth and optimism.",
15
+ "structure": "Through-composed ascending arpeggio piece (8 bars)",
16
+ "keyMoments": ["Sunrise arpeggio in measure 1", "Warm climax in measure 5"],
17
+ "teachingGoals": ["Practice basic arpeggio patterns across both hands", "Learn to create a sense of musical growth and direction"],
18
+ "styleTips": ["Gradually grow from very soft to moderately warm", "Each arpeggio should flow smoothly into the next"]
19
+ },
20
+ "measures": [
21
+ {
22
+ "number": 1,
23
+ "rightHand": "G4:e B4:e D5:e G5:e D5:e B4:e G4:q",
24
+ "leftHand": "G3:h D4:h",
25
+ "dynamics": "p"
26
+ },
27
+ {
28
+ "number": 2,
29
+ "rightHand": "A4:e C5:e E5:e A5:e E5:e C5:e A4:q",
30
+ "leftHand": "A3:h E4:h",
31
+ "dynamics": "p"
32
+ },
33
+ {
34
+ "number": 3,
35
+ "rightHand": "B4:e D5:e G5:e B5:e G5:e D5:e B4:q",
36
+ "leftHand": "G3:h D4:h",
37
+ "dynamics": "mp"
38
+ },
39
+ {
40
+ "number": 4,
41
+ "rightHand": "C5:e E5:e G5:e C6:e G5:e E5:e C5:q",
42
+ "leftHand": "C4:h G3:h",
43
+ "dynamics": "mp"
44
+ },
45
+ {
46
+ "number": 5,
47
+ "rightHand": "D5:e G5:e B5:e D6:e B5:e G5:e D5:q",
48
+ "leftHand": "G3:h B3:h",
49
+ "dynamics": "mf"
50
+ },
51
+ {
52
+ "number": 6,
53
+ "rightHand": "C5:e E5:e A5:e C6:e A5:e E5:e C5:q",
54
+ "leftHand": "A3:h E4:h",
55
+ "dynamics": "mf"
56
+ },
57
+ {
58
+ "number": 7,
59
+ "rightHand": "B4:e D5:e F#5:e A5:e F#5:e D5:e B4:q",
60
+ "leftHand": "D3:h A3:h",
61
+ "dynamics": "mp"
62
+ },
63
+ {
64
+ "number": 8,
65
+ "rightHand": "G4:e B4:e D5:e G5:e D5:h",
66
+ "leftHand": "G3:h G2:h",
67
+ "dynamics": "p"
68
+ }
69
+ ]
70
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "id": "mountain-dawn",
3
+ "title": "Mountain Dawn",
4
+ "genre": "new-age",
5
+ "composer": "Claude (original)",
6
+ "difficulty": "intermediate",
7
+ "key": "Eb major",
8
+ "tempo": 72,
9
+ "timeSignature": "4/4",
10
+ "durationSeconds": 27,
11
+ "tags": ["new-age", "majestic", "dawn", "intermediate", "spacious"],
12
+ "source": "Claude arrangement",
13
+ "musicalLanguage": {
14
+ "description": "A majestic, spacious piece evoking the first light breaking over a mountain range. Open fifths and octaves in both hands create a sense of vastness, while the melody climbs upward like the sun rising above the peaks.",
15
+ "structure": "Through-composed ascending piece (8 bars)",
16
+ "keyMoments": ["Vast open fifth at the start", "Climactic octave melody in measure 6"],
17
+ "teachingGoals": ["Practice wide intervals and open voicings", "Develop a sense of musical space and grandeur"],
18
+ "styleTips": ["Play with a sense of grandeur and space", "Let the wide intervals ring out with full pedal"]
19
+ },
20
+ "measures": [
21
+ {
22
+ "number": 1,
23
+ "rightHand": "Eb4:h Bb4:h",
24
+ "leftHand": "Eb2:e Bb2:e Eb3:e Bb2:e Eb2:e Bb2:e Eb3:e Bb2:e",
25
+ "dynamics": "p"
26
+ },
27
+ {
28
+ "number": 2,
29
+ "rightHand": "G4:h Ab4:h",
30
+ "leftHand": "Ab2:e Eb3:e Ab3:e Eb3:e Ab2:e Eb3:e Ab3:e Eb3:e",
31
+ "dynamics": "p"
32
+ },
33
+ {
34
+ "number": 3,
35
+ "rightHand": "Bb4:q G4:q Eb5:q D5:q",
36
+ "leftHand": "Eb2:e Bb2:e Eb3:e Bb2:e Bb2:e F3:e Bb3:e F3:e",
37
+ "dynamics": "mp"
38
+ },
39
+ {
40
+ "number": 4,
41
+ "rightHand": "C5:h Bb4:h",
42
+ "leftHand": "Ab2:e Eb3:e Ab3:e Eb3:e Bb2:e F3:e Bb3:e F3:e",
43
+ "dynamics": "mp"
44
+ },
45
+ {
46
+ "number": 5,
47
+ "rightHand": "Eb5:q F5:q G5:q Ab5:q",
48
+ "leftHand": "Eb2:e Bb2:e Eb3:e Bb2:e Ab2:e Eb3:e Ab3:e Eb3:e",
49
+ "dynamics": "mf"
50
+ },
51
+ {
52
+ "number": 6,
53
+ "rightHand": "Bb5:q Ab5:q G5:q F5:q",
54
+ "leftHand": "Bb2:e F3:e Bb3:e F3:e Bb2:e F3:e Bb3:e F3:e",
55
+ "dynamics": "f"
56
+ },
57
+ {
58
+ "number": 7,
59
+ "rightHand": "Eb5:q D5:q C5:q Bb4:q",
60
+ "leftHand": "Ab2:e Eb3:e Ab3:e Eb3:e Bb2:e F3:e Bb3:e F3:e",
61
+ "dynamics": "mp"
62
+ },
63
+ {
64
+ "number": 8,
65
+ "rightHand": "Eb5:w",
66
+ "leftHand": "Eb2:e Bb2:e Eb3:e Bb2:e Eb2:h",
67
+ "dynamics": "p"
68
+ }
69
+ ]
70
+ }