From 0494b1470b0138d414ea864932bfe34b7aebd461 Mon Sep 17 00:00:00 2001 From: LupiNexMedia Date: Tue, 28 Apr 2026 10:54:54 +0200 Subject: [PATCH] initial commit --- Arp Test.js | 37 +++++++++++ Mixer Template.js | 82 ++++++++++++++++++++++++ Psytrance Triplets.js | 23 +++++++ Songs/Mortal Kombat - Techno Syndrome.js | 35 ++++++++++ Songs/Tetris.js | 68 ++++++++++++++++++++ Trance Trap.js | 24 +++++++ Trance test.js | 31 +++++++++ 7 files changed, 300 insertions(+) create mode 100644 Arp Test.js create mode 100644 Mixer Template.js create mode 100644 Psytrance Triplets.js create mode 100644 Songs/Mortal Kombat - Techno Syndrome.js create mode 100644 Songs/Tetris.js create mode 100644 Trance Trap.js create mode 100644 Trance test.js diff --git a/Arp Test.js b/Arp Test.js new file mode 100644 index 0000000..8ed1628 --- /dev/null +++ b/Arp Test.js @@ -0,0 +1,37 @@ +// Genre: Psytrance +// Taktart: 4/4 +// Key: F# Moll +// BPM: 140 + + +setcpm(140/4) + +let key = 'f#' +let triplet = 140/3 + +// samples +samples({ + kick: 'Drums/Kicks/Kick - Crrisis.wav', + mainBass: 'Bass/Phull On Bass/Phull On Bass F#.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav' +}, 'https://cdn.lupinexmedia.de/samples') + +// Mixer +let master = slider(1, 0, 1) +let drumGroup = slider(0.48, 0, 1) +let arpGroup = slider(0, 0, 1) + +stack( + // Key Base w Drums + stack( + s("kick").fast(4).cutoff(rand.range(500,650)).velocity(.7), + s("mainBass").every(24,x=>x.fast(3)).every(24,x=>x.late(.5).fast(2)).late(1).cpm(140/3).fast(9).velocity(rand.range(.4,.7)).room(.2), + s("closedHat").every(16,x=>x.fast(10)).late(.5).fast(4).cutoff(3000).velocity(0) + ).gain(drumGroup), + + // Arps + stack( + n("0,2,4").when("<0 0 1>", x=>x.n("3,6,8")).scale("F:minor").arp("[0 1 2]*<12 16 20>").when("<0 0 0 1>", x=>x.rev()).s("square").fm(".1 .5 2").gain(saw.range(1, 0).slow(1)).room(.2) + ).gain(arpGroup) + +).postgain(master) \ No newline at end of file diff --git a/Mixer Template.js b/Mixer Template.js new file mode 100644 index 0000000..4bbdac2 --- /dev/null +++ b/Mixer Template.js @@ -0,0 +1,82 @@ +// Techno +setcpm(132/4) +const n = note + + +// Samples +samples({ + kick: 'Drums/Kicks/Kick - Crrisis.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav', + backsnare: 'Drums/Snares/Techno Snare 04.wav', + snare: 'Drums/Snares/BK-72 - 909 ish.wav', + + bassF: 'Bass/Lili Bass/Lili Bass F.wav' +}, 'https://cdn.lupinexmedia.de/samples/') + +// Group Muting +const drumMute = 33 * 0 +const bassMute = 33 * 0 +const instMute = 33 * 0 +const vocMute = 33 * 0 + +// Velocity (Volume Changer, Mixer) +const masterVolume = slider(1, 0, 1) // Master Volume (Postgain) + +const drumGroupGain = slider(1, 0, 1) // Group Volume (Drums, Gain) +const bassGroupVolume = slider(1, 0, 1) // Group Volume (Bass, Gain) +const instGroupVolume = slider(1, 0, 1) // Group Volume (Instrument, Gain) +const vocalGroupVolume = slider(1, 0, 1) // Group Volume (Vocals, Gain) + +const kickVelo = slider(0.8, 0, .8) // Volume (Kick) +const chVelo = slider(0, 0, .8) // Volume (closed HiHat) +const backSnareVelo = slider(0, 0, 1) // Volume (Backsnare) +const snareVelo = slider(0, 0, .8) // Volume (Snare) + +const mainBassVelo = slider(0.8, 0, .8) // Volume (mainBass) + + +// Intrument Roll +stack( + // Drums + stack( + s("kick") + .velocity(kickVelo) // Volume + .fast(4) // Time Modifiers + .cutoff(rand.range(450,550)), // Effects + + s("closedHat") + .velocity(chVelo) // Volume + .late(1.5) .every(16,x=>x.fast(16)) .fast(4) + .cutoff(1600), // Time Modifiers + + s("backsnare") + .velocity(backSnareVelo) // Volume + .late(0.25) .fast(2) .speed(-1) // Time Modifiers + .cutoff(500), // Effects + + s("snare") + .velocity(snareVelo) // Volume + .late(1.5) .fast(2) // Time Modifiers + .cutoff(1500) // Effects + + ).gain(drumGroupGain).cpm(drumMute).degradeBy(.1)._punchcard(), + + // Bass + stack( + s("bassF") + .velocity(mainBassVelo) // Volume + .late(1.5) .every(4,x=>x.fast(2)) .every(16, x => x.fast(6)) .fast(4) // Time Modifiers + .cutoff(rand.range(900,1050)) .room(.1) // Efects + ).gain(bassGroupVolume).cpm(bassMute)._scope(), + + // Instruments + stack( + + ).gain(instGroupVolume).cpm(instMute)._pianoroll(), + + // Vocals + stack( + + ).gain(vocalGroupVolume).cpm(vocMute)._scope() + +).postgain(masterVolume) \ No newline at end of file diff --git a/Psytrance Triplets.js b/Psytrance Triplets.js new file mode 100644 index 0000000..3428e36 --- /dev/null +++ b/Psytrance Triplets.js @@ -0,0 +1,23 @@ +// Triplet Bass - Psytrance +setcpm(138/4) + +// Sample import +samples({ + // Drums + kick: 'Drums/Kicks/Kick - Crrisis.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav', + snare: 'Drums/Snares/BK-72 - 909 ish.wav', + // Basses + bass: 'Bass/Phull On Bass/Phull On Bass F.wav' +}, 'https://cdn.lupinexmedia.de/samples/') + +// Melodies + +// player +stack( + // main base + s("kick").fast(4).cutoff(rand.range(500,650)).velocity(.7), + s("bass").late(2).fast(4).every(12,x=>x.fast(2)).cutoff(rand.range(600,800)).velocity(rand.range(.3,.5)).every(1,x=>x.fast(3)), + // s("closedHat").late(1.5).fast(4).cutoff(3000), + // s("snare").late(1.5).fast(2).cutoff(1400) +) \ No newline at end of file diff --git a/Songs/Mortal Kombat - Techno Syndrome.js b/Songs/Mortal Kombat - Techno Syndrome.js new file mode 100644 index 0000000..4c3fc14 --- /dev/null +++ b/Songs/Mortal Kombat - Techno Syndrome.js @@ -0,0 +1,35 @@ +setcpm(138/4) +samples({ + // Drums + kick: 'Drums/Kicks/Kick - Crrisis.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav', + snare: 'Drums/Snares/BK-72 - 909 ish.wav', + + // Basses + bassA: 'Bass/Lili Bass/Lili Bass A.wav', + bassC: 'Bass/Lili Bass/Lili Bass C.wav', + bassG: 'Bass/Lili Bass/Lili Bass G.wav', + bassF: 'Bass/Lili Bass/Lili Bass F.wav' +},'https://cdn.lupinexmedia.de/samples/') + + +DRUMS: s("[kick closedHat kick closedHat], [- - snare -]").fast(2).velocity(.8).gain(.7) +BASS: s("[bassA]*8 [bassC]*8 [bassG]*8 [bassF]*8").fast(.125).cpm(138/2).gain(.7) + +let lead = ` + [a3 a3 c4 a3 d4 a3 e4 d4] [c4 c4 e4 c4 g4 c4 e4 c4] [g3 g3 b3 g3 c4 g3 d4 c4] [f3 f3 a3 f3 c4 f3 c4 b3] +` +LEAD: note(lead).s("saw").slow(4).velocity(.6) + +let basslead = ` + [ [a3*4]@3 ~ ] +` +BASSLEAD: note(basslead).s("gm_lead_8_bass_lead").velocity(.8).lpf(2000) //.jux(rev) + +let basslead2 = ` + [ [-*4]@3 [g3 c4] ] + [ [-*4]@3 [g3 e3] ] + [ [-*4]@3 [g3 c4] ] + [ [-*4]@3 [a3*2]*2 ] +` +BASSLEAD2: note(basslead2).s("gm_lead_8_bass_lead").velocity(.8).fast(.25).lpf(2000) \ No newline at end of file diff --git a/Songs/Tetris.js b/Songs/Tetris.js new file mode 100644 index 0000000..c7ed82f --- /dev/null +++ b/Songs/Tetris.js @@ -0,0 +1,68 @@ +let n = note + +samples({ + kick: 'Drums/Kicks/Kick_F.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav', + snare: 'Drums/Snares/Snare - Clever.wav' +}, 'https://cdn.lupinexmedia.de/samples/') + +// Part 1 +let subBase1 = n(` [[e2 e3] [e1 e3] [a2 a3] [e2 a3] [g2 g3] [e2 e3] [a2 a3] [a1 a3]] [[d2 d3] [d1 d3] [c2 c3] [c1 c3] [g2 g3] [e2 e3] [a2 a3] [a1 a3]] `) +let part1 = n(` [e5 [b4 c5] d5 [c5 b4] a4 [a4 c5] e5 [d5 c5] b4 [b4 c5] d5 e5 c5 a4 a4 ~] [d5 [d5 f5] a5 [g5 f5] e5 [c5] e5 [d5 c5] b4 [b4 c5] d5 e5 c5 a4 a4 ~] `) + +// Part 2 +let subBase2 = n(` [[a2 a3] [e2 a3] [g2 g3] [d2 g3] [f2 f3] [c2 f3] [e2 e3] [a3 g#3]] [[a2 a3] [e2 a3] [g2 g3] [d2 g3] [f2 f3] [c2 f3] [e2 e3] [a3 g#3]] `) +let part2 = n(` [e5 c5 d5 b4 c5 a4 g#4 b4] [e5 c5 d5 b4 [c5 e5] a5 g#5 ~]`) + +let drums = slider(1,0,1) + +const part1Pattern = + seq(part1) + .s("saw") + .room(.3) + .gain(.6) + .lpf(750) + .sustain(.4) + .release(.5) + .stack( + seq(subBase1) + .s("sawtooth") + .lpf(400) + .gain(.9), + seq(subBase1) + .s("triangle") + .lpf(400) + .gain(.7), + s("kick").fast(16).cutoff(1000).velocity(drums).gain(.5), + s("closedHat").late(.5).fast(16).velocity(drums).gain(.1), + s("snare").late(.5).fast(8).cutoff(1500).velocity(drums) + ) + +const part2Pattern = + seq(part2) + .s("gm_string_ensemble_1") + .room(.8) + .gain(.6) + .lpf(750) + .sustain(4) + .release(1.3) + .stack( + seq(subBase2) + .s("sawtooth") + .lpf(400) + .gain(.9), + seq(subBase2) + .s("triangle") + .lpf(400) + .gain(.7), + s("kick").fast(16).cutoff(1000).velocity(drums).gain(.5), + s("closedHat").late(.5).fast(16).velocity(drums).gain(.1), + s("snare").late(.5).fast(8).cutoff(1500).velocity(drums) + ) + +const song = arrange( + [2, part1Pattern], + [1, part2Pattern] +) + +song.cpm(5) \ No newline at end of file diff --git a/Trance Trap.js b/Trance Trap.js new file mode 100644 index 0000000..374b561 --- /dev/null +++ b/Trance Trap.js @@ -0,0 +1,24 @@ +setcpm(140) +samples({ + bassdrum: 'Drums/Kicks/Ghosthack - Techno Kick 14.wav', + base: 'Bass/Bass Shot 15 C.wav', + backbaseC: 'Bass/Phull On Bass/Phull On Bass C.wav', + backbaseF: 'Bass/Phull On Bass/Phull On Bass F.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav', + snare: 'Drums/Snares/BK-72 - 909 ish.wav' +}, 'https://cdn.lupinexmedia.de/samples/') + +let preMelody = ` + [[c3, c3, c4 c4 d#4 f4 d#4]*8] + [[c3, f2, c4 c4 d#4 f4 d#4]*4] +` + +stack( + s("bassdrum").velocity(1), + note(preMelody).s('triangle').fast(.025)._pianoroll(), + s("base").fast(.25).velocity(.45), + s("backbaseC").velocity(1).late(1.5).every(4, x => x.fast(0.50)), + s("backbaseF").velocity(1).late(1.5).every(4, x => x.fast(0.50)), + s("closedHat").velocity(1.2).late(1.5).every(8, x => x.fast(16)), + s("snare").mask("<0 1 0 1>") +) \ No newline at end of file diff --git a/Trance test.js b/Trance test.js new file mode 100644 index 0000000..8d3892b --- /dev/null +++ b/Trance test.js @@ -0,0 +1,31 @@ +setcpm(140) +samples({ + kick: 'Drums/Kicks/Kick Psymon.wav', + closedHat: 'Drums/closedHiHats/Ghosthack CH 4.wav', + snare: 'Drums/Snares/BK-72 - 909 ish.wav', + backbaseC: 'Bass/Phull On Bass/Phull On Bass C.wav' +}, 'https://cdn.lupinexmedia.de/samples/') + +let melody = `[c3 [f3 g#3]], [e3 [c4]], [g3 [a3 d#3]]` +let lead = `[c5 d#5 f5 g5] [g5 f5 d#5 c5] [c5 f5 g5 a#5] [a#5 g5 f5 d#5]` + +stack( + // Drum-layer with small bass + stack( + s("kick").velocity(.5).cutoff(rand.range(500,750)).slow(1.5).every(4, x=>x.fast(1.5)), + s("closedHat").velocity(.75).cutoff(rand.range(1000,1500)).every(2,x=>x.velocity(2)).fast(4), + s("snare").velocity(1.5).cutoff(rand.range(1500,2000)).every(8,x=>x.fast(1.5)).slow(4).late(2), + s("backbaseC").velocity(1).fast(.5).late(.5) + )._pianoroll(), + + // little melodic trance with lead + stack( + note(melody).s("triangle").velocity(1.2).slow(8).cutoff(rand.range(500,1500)).phaser(1).chorus(1).lpq(4), + note(lead).s("sawtooth").fast(.25).cutoff(sine.range(500,2000)).phaser(2).lpq(10).every(4,x=>x.fast(.5)).every(6,x=>x.fast(1.5)) + )._pianoroll(), + + // additional orchestra + stack( + note(melody).s("gm_cello").fast(.125).velocity(.7).cutoff(1250).slow(2) + )._pianoroll() +) \ No newline at end of file