Files
smnp-kt/examples/bohemian_rhapsody.mus

68 lines
2.6 KiB
Plaintext

import smnp.io;
import smnp.audio.midi;
import smnp.music;
import smnp.collection;
println("Bohemian Rhapsody :: part");
println("by Queen");
#B
## Melody
M1 = (2 ^ 1) + $ 4/4 @d:8 @d:8 + 2 8 @b3:8 | @c:8 @d:16 @d:16 + 4 4 8 @d:16 @d:16 |
@eb:8 @f:8 @eb:8 @d:8 @c @c:8 @d:8 | @eb:16 @f:8 @eb:8d @d:8 @c 4 |
@d:8 @d:8 + 2 @d:8 @f:8 | @a:8d @g:16 @g:2 8 @g:8 |
@b:8 @b:8 @b:8 @b:8 @b:8d @g:16 @d:8d @c:16 | @c:2 2 ||;
## Piano measures
p_B = $ 4/4 @d:8 @f3:8 @b3:8 @d:8 @g:8 @f3:8 @f:8 + 8 ||;
p_g = $ 4/4 @d:8 @g3:8 @b3:8 @d:8 @a:8 @g3:8 @g:8 @b3:8 ||;
p_c = $ 4/4 @g:8 @c:8 @eb:8 @g:8 @d5:8 @c:8 @c5:8 @c:8 ||;
p_cF = $ 4/4 @b:8 @c:8 @eb:8 @g:8 @a:8 @eb:8 @f:8 @c:8 ||;
p1 = $ 4/4 @eb:8 @c:8 @eb:8 @g:8 @eb:8 @g:8 @eb:8 @g:8 | @eb:8 @a3:8 @eb:8 @g:8 @eb:8 @g:8 @eb:8 @g:8 ||;
## Piano
P1 = p_B + p_B + p_B + p_g + p_c + p_cF + p_B + p_g + p1;
## Bass
B1 = $ 4/4 @b3:1 | @b3:1 | @b3:1 | @g3:1 | @c3:1 | @c3:2 @f3:2 | @b3:2d @a3 | @g3:1 | @c3:2 @h2 @b2 | @a2:2 @ab2 @g2 ||;
# Eb
## Melody
M2 = $ 4/4 @g:16 @g:16 + 2 8 @f:8 @g:16 @ab:16 | @g:2 4 8 @g:16 @g:16 |
@ab:8d @g:16 @g:8 @f:16 @f:2 @b3:16 | @b3:8 @f:8 @f:8 @g:16 @g:8d @ab:8 @ab:8 @b:16 @ab:16 |
@ab:8 @g:8 8 @f:16 @g:16 @b:4d @f:16 @g:16 | @eb:4d @b3:16 @b3:16 @h3:8 @db:8 @h3:16 @db:16 @h3:8 |
@b3:2 2 ||;
## Piano measures
p_Eb = $ 4/4 @b:8 @eb:8 @eb5:8 @eb:8 @b:8 @eb:8 @f:8 @b:8 ||;
p_f = $ 4/4 @ab:8 @f:8 @ab:8 @ab:8 @ab:8 @eb:8 @ab:8 @d:8 ||;
p_B = $ 4/4 @d @f @g @ab ||;
p_EbB = $ 4/4 @b:8 @eb:8 @eb5:8 @eb:8 @b:8 @d:8 @b:8 @d:8 ||;
p_cf = $ 4/4 @g:8 @c:8 @g:8 @c:8 @h3:2 ||;
## Piano
P2 = p_Eb + p_c + p_f + p_B + p_EbB + p_cf;
## Bass
B2 = $ 4/4 @eb3:2d @d3 | @c3:1 | @f3:4d @e3:8 @eb3 @d3 | @b2 @b2 @b2 @b2 | @eb3:2 @d3:2 |@c2:2 @f2:2 | @eb2:2 2 ||;
# Combine part 1 and part 2
M = M1 + M2;
P = P1 + P2;
B = B1 + B2;
# Drums
D = [
(10 ^ 1) + (6 ^ $ 4/4 @C2:8 8 8 16 @C2:16 @C2:8 @C2:8 4 ||).flatten(),
(10 ^ 1) + (6 ^ $ 4/4 4 @E2 4 @E2 ||).flatten(),
(10 ^ 1) + (6 ^ $ 4/4 @F#2:8 @F#2:8 @F#2:8 @F#2:8 @F#2:8 @F#2:8 @F#2:8 @F#2:8 ||).flatten()
];
midi({ bpm -> 72 }, {
1 -> [transpose(12, M)],
2 -> [P],
3 -> [B],
10 -> D
});