User prompt
level menuĢsuĢnden oĢncesine oyun açıldıgĢında bizi karşılayan bir giriş ekranı ve onun assetlerini ekle
User prompt
health bar uı için goĢrsel asset ekle
User prompt
can barını yeşil yap
User prompt
şuan olan can barının assetleri goĢzuĢkmuĢyor
User prompt
can barının assetlerini ekle
User prompt
can barının assetini ekle
User prompt
can biterse oynanılan level dursun ve "Failed" yazısı çıkarak kaybedilsin ve menuĢye geri doĢnsuĢn ama oyun komple bitmesin sadece failed yazısı çıkıp level seçilen menuĢye geri atsın
User prompt
oyun komple bitmesin sadece failed yazısı çıkıp level seçilen menuĢye geri atsın
User prompt
can biterse level dursun ve "Failed" yazısı çıkarak kaybedilsin ve menuĢye geri doĢnsuĢn
User prompt
her kaçırılan vuruşta 2 can gitsin
User prompt
her kaçırılan vuruşta 5 can gitsin
User prompt
can barı sadece o level içindeyken geçerli olsun, can degĢerini 150ye duĢşuĢr ve sayı olarak degĢil sadece bar olarak goĢster
User prompt
her ard arda 3 kere yanlış nota veya kaçırılan nota olursa can azalma miktarı katlanarak artsın
User prompt
her level başladıgĢında ekranın en alt orta kısmına ona oĢzel bir can barı ekle, bu can barı 1300 puanlık olsun ve her yanlış vuruşta 1 can azalsın, her kaçırılan basılmayan notada da 1 can azalsın, başarılı notalarda 1 artsın ve o anki kombo kaç x ise o sayıyla çarpılarak artsın.
User prompt
sadece 2 kere ard arda yanlış vuruşlarda kombo x sayacı sıfırlansın her yanlış vuruşta degĢil
User prompt
leveli bitirince oyun bitmesin giriş ekranında level seçilen arayuĢze atsın
User prompt
biraz daha arttır
User prompt
erken basılan notları başarılı sayma derecesini biraz daha artır
User prompt
çok az veya biraz geç basılan notlaları da başarılı say
Code edit (1 edits merged)
Please save this source code
User prompt
tick sayacını geri koy
Code edit (21 edits merged)
Please save this source code
User prompt
kaydın çıktısını yazarken tick 0ı sadece vuruş yapıldıgĢında başlama , kayıt başladıgĢı andan itibaren tick kaydını tut
User prompt
level1 başladıgĢı an kayda girsin
Code edit (1 edits merged)
Please save this source code
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // DrumPad: Interactive drum pad at the bottom var DrumPad = Container.expand(function () { var self = Container.call(this); // .padType: 'kick', 'snare', etc. (set after creation) self.padType = null; self.asset = null; // .isPressed: for visual feedback self.isPressed = false; // Set up asset self.setPadType = function (type) { self.padType = type; var assetId = type + 'Pad'; if (self.asset) { self.removeChild(self.asset); } var size = PAD_SIZES[type]; self.asset = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5, width: size ? size.w : undefined, height: size ? size.h : undefined }); }; // Visual feedback on press self.flash = function () { if (!self.asset) { return; } tween(self.asset, { alpha: 0.5 }, { duration: 60, onFinish: function onFinish() { tween(self.asset, { alpha: 1 }, { duration: 120 }); } }); }; return self; }); // Note: Falling note bar var Note = Container.expand(function () { var self = Container.call(this); // .noteType: 'kick', 'snare', etc. self.noteType = null; self.asset = null; self.hit = false; // If already hit self.setNoteType = function (type) { self.noteType = type; var assetId = type + 'Note'; if (self.asset) { self.removeChild(self.asset); } self.asset = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); }; // Called every tick self.update = function () { self.y += noteSpeed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181818 }); /**** * Game Code ****/ // Drum pad sounds // Music track // Sounds for each drum // Note bars (falling notes) // Drum pads (kick, snare, hi-hat, tom1, tom2, crash1, crash2) // --- Game constants --- var PAD_TYPES = ['kick', 'snare', 'hihat', 'tom1', 'crash1']; var PAD_COLS = PAD_TYPES.length; var GAME_W = 2048, GAME_H = 2732; var PAD_Y = GAME_H - 320; // Y position for pads // --- Pad Sizing and Full-Width Layout --- // Each pad will be as wide as possible, with no side gaps, and all pads will be adjacent. var PAD_SIZES = {}; var PAD_X_POSITIONS = {}; var padWidth = GAME_W / PAD_COLS; var padCenterY = PAD_Y; for (var i = 0; i < PAD_COLS; i++) { var type = PAD_TYPES[i]; // Pad width: fill the column, pad height: keep previous aspect ratio (or max of previous) // We'll use the original aspect ratio for each pad type, but scale width to padWidth // Use original aspect ratios from previous PAD_SIZES var origSizes = { 'kick': { w: 420, h: 210 }, 'snare': { w: 340, h: 170 }, 'hihat': { w: 300, h: 150 }, 'tom1': { w: 320, h: 160 }, 'crash1': { w: 340, h: 170 } }; var aspect = origSizes[type].h / origSizes[type].w; var w = padWidth; var h = w * aspect; PAD_SIZES[type] = { w: w, h: h }; // Center of each pad: left edge + half width + i*padWidth PAD_X_POSITIONS[type] = i * padWidth + padWidth / 2; } // Swap hihat and tom1 X positions var tmpX = PAD_X_POSITIONS['hihat']; PAD_X_POSITIONS['hihat'] = PAD_X_POSITIONS['tom1']; PAD_X_POSITIONS['tom1'] = tmpX; // Note spawn area (top) var NOTE_START_Y = -60; var NOTE_TARGET_Y = PAD_Y - 80; // Where notes should be hit // Note speed (pixels per frame) var noteSpeed = 18; // Timing window (pixels): how close to NOTE_TARGET_Y is a "hit" var HIT_WINDOW = 100; // --- State --- // NOTE_OFFSET_TICKS: Delay (in ticks) to align first note with music start (positive = notes spawn later) var NOTE_OFFSET_TICKS = 0; // Default 0, adjust for perfect sync (e.g. try 20, 30, 40, ...) var pads = []; var notes = []; var score = 0; var combo = 0; var maxCombo = 0; var lastTick = 0; var noteIndex = 0; var isPlaying = false; var songStartTick = 0; // --- UI --- var scoreTxt = new Text2('0', { size: 120, fill: "#fff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var comboTxt = new Text2('', { size: 70, fill: 0xFFE066 }); comboTxt.anchor.set(0.5, 0); LK.gui.top.addChild(comboTxt); comboTxt.y = 130; // --- Song Data for all levels --- // Each entry: {tick: <when to spawn>, type: <padType>} // Level 1: MasterofUpit, new notes var LEVELS = [{ name: "Level 1", music: "MasterofUpit", notes: [{ tick: 4, type: 'kick' }, { tick: 4, type: 'crash1' }, { tick: 56, type: 'crash1' }, { tick: 56, type: 'kick' }, { tick: 73, type: 'crash1' }, { tick: 74, type: 'kick' }, { tick: 89, type: 'kick' }, { tick: 89, type: 'crash1' }, { tick: 190, type: 'kick' }, { tick: 190, type: 'crash1' }, { tick: 267, type: 'hihat' }, { tick: 282, type: 'hihat' }, { tick: 299, type: 'hihat' }, { tick: 315, type: 'hihat' }, { tick: 332, type: 'hihat' }, { tick: 350, type: 'hihat' }, { tick: 366, type: 'hihat' }, { tick: 383, type: 'hihat' }, { tick: 399, type: 'hihat' }, { tick: 416, type: 'hihat' }, { tick: 434, type: 'hihat' }, { tick: 449, type: 'crash1' }, { tick: 449, type: 'kick' }, { tick: 465, type: 'kick' }, { tick: 465, type: 'crash1' }, { tick: 504, type: 'hihat' }, { tick: 520, type: 'hihat' }, { tick: 538, type: 'crash1' }, { tick: 538, type: 'kick' }, { tick: 554, type: 'crash1' }, { tick: 555, type: 'kick' }, { tick: 571, type: 'crash1' }, { tick: 571, type: 'kick' }, { tick: 607, type: 'crash1' }, { tick: 623, type: 'hihat' }, { tick: 641, type: 'hihat' }, { tick: 658, type: 'hihat' }, { tick: 675, type: 'hihat' }, { tick: 693, type: 'hihat' }, { tick: 710, type: 'hihat' }, { tick: 726, type: 'kick' }, { tick: 726, type: 'crash1' }, { tick: 743, type: 'crash1' }, { tick: 743, type: 'kick' }, { tick: 760, type: 'hihat' }, { tick: 776, type: 'hihat' }, { tick: 793, type: 'hihat' }, { tick: 810, type: 'crash1' }, { tick: 810, type: 'kick' }, { tick: 827, type: 'crash1' }, { tick: 828, type: 'kick' }, { tick: 845, type: 'kick' }, { tick: 845, type: 'crash1' }, { tick: 881, type: 'hihat' }, { tick: 897, type: 'hihat' }, { tick: 914, type: 'hihat' }, { tick: 931, type: 'hihat' }, { tick: 947, type: 'hihat' }, { tick: 965, type: 'hihat' }, { tick: 982, type: 'hihat' }, { tick: 997, type: 'kick' }, { tick: 997, type: 'crash1' }, { tick: 1016, type: 'crash1' }, { tick: 1017, type: 'kick' }, { tick: 1033, type: 'hihat' }, { tick: 1050, type: 'hihat' }, { tick: 1070, type: 'hihat' }, { tick: 1088, type: 'crash1' }, { tick: 1088, type: 'kick' }, { tick: 1106, type: 'crash1' }, { tick: 1106, type: 'kick' }, { tick: 1123, type: 'crash1' }, { tick: 1123, type: 'kick' }, { tick: 1165, type: 'snare' }, { tick: 1174, type: 'snare' }, { tick: 1182, type: 'snare' }, { tick: 1191, type: 'snare' }, { tick: 1200, type: 'snare' }, { tick: 1207, type: 'snare' }, { tick: 1216, type: 'snare' }, { tick: 1224, type: 'snare' }, { tick: 1233, type: 'snare' }, { tick: 1241, type: 'snare' }, { tick: 1250, type: 'snare' }, { tick: 1257, type: 'snare' }, { tick: 1268, type: 'snare' }, { tick: 1275, type: 'snare' }, { tick: 1285, type: 'snare' }, { tick: 1293, type: 'crash1' }, { tick: 1293, type: 'kick' }, { tick: 1502, type: 'kick' }, { tick: 1502, type: 'crash1' }, { tick: 1528, type: 'kick' }, { tick: 1528, type: 'crash1' }, { tick: 1552, type: 'kick' }, { tick: 1552, type: 'crash1' }, { tick: 1567, type: 'kick' }, { tick: 1567, type: 'crash1' }, { tick: 1775, type: 'kick' }, { tick: 1775, type: 'crash1' }, { tick: 1805, type: 'kick' }, { tick: 1805, type: 'crash1' }, { tick: 1828, type: 'crash1' }, { tick: 1828, type: 'kick' }, { tick: 1844, type: 'kick' }, { tick: 1844, type: 'crash1' }, { tick: 1858, type: 'hihat' }, { tick: 1860, type: 'snare' }, { tick: 1877, type: 'hihat' }, { tick: 1889, type: 'kick' }, { tick: 1891, type: 'hihat' }, { tick: 1893, type: 'snare' }, { tick: 1911, type: 'hihat' }, { tick: 1911, type: 'kick' }, { tick: 1929, type: 'hihat' }, { tick: 1929, type: 'snare' }, { tick: 1947, type: 'hihat' }, { tick: 1955, type: 'kick' }, { tick: 1961, type: 'hihat' }, { tick: 1963, type: 'snare' }, { tick: 1979, type: 'hihat' }, { tick: 1982, type: 'kick' }, { tick: 1997, type: 'hihat' }, { tick: 1999, type: 'snare' }, { tick: 2014, type: 'hihat' }, { tick: 2025, type: 'kick' }, { tick: 2029, type: 'hihat' }, { tick: 2032, type: 'snare' }, { tick: 2048, type: 'hihat' }, { tick: 2049, type: 'kick' }, { tick: 2065, type: 'snare' }, { tick: 2065, type: 'hihat' }, { tick: 2078, type: 'hihat' }, { tick: 2091, type: 'kick' }, { tick: 2095, type: 'hihat' }, { tick: 2101, type: 'snare' }, { tick: 2116, type: 'crash1' }, { tick: 2116, type: 'kick' }, { tick: 2131, type: 'hihat' }, { tick: 2132, type: 'snare' }, { tick: 2148, type: 'hihat' }, { tick: 2156, type: 'kick' }, { tick: 2164, type: 'hihat' }, { tick: 2165, type: 'snare' }, { tick: 2182, type: 'hihat' }, { tick: 2185, type: 'kick' }, { tick: 2200, type: 'hihat' }, { tick: 2201, type: 'snare' }, { tick: 2217, type: 'hihat' }, { tick: 2226, type: 'snare' }, { tick: 2234, type: 'snare' }, { tick: 2242, type: 'snare' }, { tick: 2253, type: 'kick' }, { tick: 2267, type: 'snare' }, { tick: 2295, type: 'kick' }, { tick: 2302, type: 'snare' }, { tick: 2317, type: 'kick' }, { tick: 2318, type: 'crash1' }, { tick: 2346, type: 'crash1' }, { tick: 2351, type: 'kick' }, { tick: 2373, type: 'crash1' }, { tick: 2373, type: 'kick' }, { tick: 2390, type: 'crash1' }, { tick: 2405, type: 'hihat' }, { tick: 2407, type: 'snare' }, { tick: 2423, type: 'hihat' }, { tick: 2434, type: 'kick' }, { tick: 2439, type: 'hihat' }, { tick: 2442, type: 'snare' }, { tick: 2459, type: 'hihat' }, { tick: 2460, type: 'kick' }, { tick: 2477, type: 'hihat' }, { tick: 2477, type: 'snare' }, { tick: 2495, type: 'hihat' }, { tick: 2503, type: 'kick' }, { tick: 2509, type: 'hihat' }, { tick: 2511, type: 'snare' }, { tick: 2527, type: 'hihat' }, { tick: 2529, type: 'kick' }, { tick: 2543, type: 'hihat' }, { tick: 2545, type: 'snare' }, { tick: 2562, type: 'hihat' }, { tick: 2570, type: 'kick' }, { tick: 2576, type: 'hihat' }, { tick: 2579, type: 'snare' }, { tick: 2595, type: 'hihat' }, { tick: 2596, type: 'kick' }, { tick: 2613, type: 'hihat' }, { tick: 2613, type: 'snare' }, { tick: 2629, type: 'hihat' }, { tick: 2638, type: 'kick' }, { tick: 2646, type: 'snare' }, { tick: 2661, type: 'kick' }, { tick: 2664, type: 'crash1' }, { tick: 2679, type: 'snare' }, { tick: 2696, type: 'hihat' }, { tick: 2705, type: 'kick' }, { tick: 2711, type: 'hihat' }, { tick: 2713, type: 'snare' }, { tick: 2730, type: 'hihat' }, { tick: 2736, type: 'kick' }, { tick: 2747, type: 'snare' }, { tick: 2755, type: 'snare' }, { tick: 2762, type: 'snare' }, { tick: 2771, type: 'snare' }, { tick: 2778, type: 'snare' }, { tick: 2787, type: 'snare' }, { tick: 2797, type: 'kick' }, { tick: 2813, type: 'snare' }, { tick: 2830, type: 'hihat' }, { tick: 2839, type: 'kick' }, { tick: 2845, type: 'hihat' }, { tick: 2847, type: 'snare' }, { tick: 2861, type: 'crash1' }, { tick: 2861, type: 'kick' }, { tick: 2891, type: 'kick' }, { tick: 2892, type: 'crash1' }, { tick: 2922, type: 'crash1' }, { tick: 2927, type: 'kick' }, { tick: 2947, type: 'crash1' }, { tick: 2947, type: 'kick' }, { tick: 2973, type: 'kick' }, { tick: 2973, type: 'crash1' }, { tick: 2994, type: 'kick' }, { tick: 2994, type: 'crash1' }, { tick: 3011, type: 'crash1' }, { tick: 3011, type: 'kick' }, { tick: 3028, type: 'hihat' }, { tick: 3045, type: 'hihat' }, { tick: 3061, type: 'hihat' }, { tick: 3078, type: 'hihat' }, { tick: 3096, type: 'hihat' }, { tick: 3112, type: 'hihat' }, { tick: 3130, type: 'hihat' }, { tick: 3147, type: 'crash1' }, { tick: 3147, type: 'kick' }, { tick: 3164, type: 'snare' }, { tick: 3164, type: 'hihat' }, { tick: 3181, type: 'hihat' }, { tick: 3190, type: 'kick' }, { tick: 3196, type: 'hihat' }, { tick: 3198, type: 'snare' }, { tick: 3215, type: 'hihat' }, { tick: 3217, type: 'kick' }, { tick: 3230, type: 'hihat' }, { tick: 3232, type: 'snare' }, { tick: 3249, type: 'hihat' }, { tick: 3251, type: 'kick' }, { tick: 3265, type: 'hihat' }, { tick: 3267, type: 'snare' }, { tick: 3283, type: 'hihat' }, { tick: 3285, type: 'kick' }, { tick: 3300, type: 'hihat' }, { tick: 3301, type: 'snare' }, { tick: 3318, type: 'hihat' }, { tick: 3326, type: 'kick' }, { tick: 3332, type: 'hihat' }, { tick: 3334, type: 'snare' }, { tick: 3350, type: 'hihat' }, { tick: 3351, type: 'kick' }, { tick: 3360, type: 'kick' }, { tick: 3360, type: 'crash1' }, { tick: 3378, type: 'crash1' }, { tick: 3379, type: 'kick' }, { tick: 3393, type: 'crash1' }, { tick: 3394, type: 'kick' }, { tick: 3411, type: 'hihat' }, { tick: 3411, type: 'snare' }, { tick: 3429, type: 'hihat' }, { tick: 3437, type: 'kick' }, { tick: 3444, type: 'hihat' }, { tick: 3445, type: 'snare' }, { tick: 3461, type: 'hihat' }, { tick: 3469, type: 'snare' }, { tick: 3477, type: 'snare' }, { tick: 3493, type: 'snare' }, { tick: 3502, type: 'snare' }, { tick: 3508, type: 'tom1' }, { tick: 3516, type: 'tom1' }, { tick: 3528, type: 'kick' }, { tick: 3528, type: 'crash1' }, { tick: 3545, type: 'hihat' }, { tick: 3546, type: 'snare' }, { tick: 3563, type: 'hihat' }, { tick: 3573, type: 'kick' }, { tick: 3580, type: 'hihat' }, { tick: 3581, type: 'snare' }, { tick: 3598, type: 'hihat' }, { tick: 3598, type: 'kick' }, { tick: 3607, type: 'snare' }, { tick: 3607, type: 'crash1' }, { tick: 3628, type: 'snare' }, { tick: 3628, type: 'crash1' }, { tick: 3645, type: 'hihat' }, { tick: 3645, type: 'kick' }, { tick: 3662, type: 'snare' }, { tick: 3663, type: 'hihat' }, { tick: 3680, type: 'hihat' }, { tick: 3687, type: 'kick' }, { tick: 3694, type: 'hihat' }, { tick: 3698, type: 'snare' }, { tick: 3713, type: 'hihat' }, { tick: 3722, type: 'snare' }, { tick: 3731, type: 'snare' }, { tick: 3746, type: 'snare' }, { tick: 3755, type: 'snare' }, { tick: 3760, type: 'tom1' }, { tick: 3769, type: 'tom1' }, { tick: 3779, type: 'crash1' }, { tick: 3780, type: 'kick' }, { tick: 3795, type: 'hihat' }, { tick: 3795, type: 'snare' }, { tick: 3812, type: 'hihat' }, { tick: 3822, type: 'kick' }, { tick: 3829, type: 'hihat' }, { tick: 3830, type: 'snare' }, { tick: 3846, type: 'hihat' }, { tick: 3847, type: 'kick' }, { tick: 3855, type: 'kick' }, { tick: 3855, type: 'crash1' }, { tick: 3874, type: 'crash1' }, { tick: 3876, type: 'kick' }, { tick: 3890, type: 'crash1' }, { tick: 3892, type: 'kick' }, { tick: 3907, type: 'hihat' }, { tick: 3910, type: 'snare' }, { tick: 3926, type: 'hihat' }, { tick: 3940, type: 'hihat' }, { tick: 3941, type: 'snare' }, { tick: 3960, type: 'hihat' }, { tick: 3969, type: 'snare' }, { tick: 3978, type: 'snare' }, { tick: 4005, type: 'tom1' }, { tick: 4022, type: 'snare' }, { tick: 4031, type: 'crash1' }, { tick: 4032, type: 'kick' }, { tick: 4048, type: 'snare' }, { tick: 4048, type: 'hihat' }, { tick: 4066, type: 'hihat' }, { tick: 4075, type: 'kick' }, { tick: 4082, type: 'hihat' }, { tick: 4085, type: 'snare' }, { tick: 4100, type: 'hihat' }, { tick: 4102, type: 'kick' }, { tick: 4109, type: 'crash1' }, { tick: 4111, type: 'snare' }, { tick: 4130, type: 'crash1' }, { tick: 4130, type: 'snare' }, { tick: 4146, type: 'hihat' }, { tick: 4147, type: 'kick' }, { tick: 4162, type: 'snare' }, { tick: 4162, type: 'hihat' }, { tick: 4180, type: 'hihat' }, { tick: 4188, type: 'kick' }, { tick: 4196, type: 'hihat' }, { tick: 4199, type: 'snare' }, { tick: 4214, type: 'hihat' }, { tick: 4223, type: 'snare' }, { tick: 4231, type: 'snare' }, { tick: 4249, type: 'snare' }, { tick: 4256, type: 'snare' }, { tick: 4263, type: 'tom1' }, { tick: 4270, type: 'tom1' }, { tick: 4280, type: 'crash1' }, { tick: 4282, type: 'kick' }, { tick: 4296, type: 'hihat' }, { tick: 4297, type: 'snare' }, { tick: 4314, type: 'hihat' }, { tick: 4323, type: 'kick' }, { tick: 4330, type: 'hihat' }, { tick: 4333, type: 'snare' }, { tick: 4347, type: 'hihat' }, { tick: 4357, type: 'crash1' }, { tick: 4358, type: 'snare' }, { tick: 4377, type: 'snare' }, { tick: 4377, type: 'crash1' }, { tick: 4394, type: 'hihat' }, { tick: 4394, type: 'kick' }, { tick: 4411, type: 'snare' }, { tick: 4411, type: 'hihat' }, { tick: 4428, type: 'hihat' }, { tick: 4435, type: 'kick' }, { tick: 4442, type: 'hihat' }, { tick: 4444, type: 'snare' }, { tick: 4462, type: 'crash1' }, { tick: 4478, type: 'crash1' }, { tick: 4513, type: 'kick' }, { tick: 4532, type: 'crash1' }, { tick: 4532, type: 'kick' }, { tick: 4548, type: 'snare' }, { tick: 4565, type: 'hihat' }, { tick: 4572, type: 'kick' }, { tick: 4580, type: 'hihat' }, { tick: 4582, type: 'snare' }, { tick: 4596, type: 'hihat' }, { tick: 4607, type: 'crash1' }, { tick: 4610, type: 'kick' }, { tick: 4625, type: 'crash1' }, { tick: 4625, type: 'kick' }, { tick: 4640, type: 'hihat' }, { tick: 4648, type: 'snare' }, { tick: 4658, type: 'snare' }, { tick: 4668, type: 'snare' }, { tick: 4677, type: 'snare' }, { tick: 4688, type: 'snare' }, { tick: 4702, type: 'snare' }, { tick: 4713, type: 'kick' }, { tick: 4715, type: 'crash1' }, { tick: 4727, type: 'kick' }, { tick: 4745, type: 'crash1' }, { tick: 4745, type: 'kick' }, { tick: 4777, type: 'crash1' }, { tick: 4777, type: 'kick' }, { tick: 4794, type: 'snare' }, { tick: 4794, type: 'hihat' }, { tick: 4812, type: 'hihat' }, { tick: 4825, type: 'kick' }, { tick: 4827, type: 'hihat' }, { tick: 4831, type: 'snare' }, { tick: 4844, type: 'hihat' }, { tick: 4847, type: 'kick' }, { tick: 4854, type: 'kick' }, { tick: 4854, type: 'crash1' }, { tick: 4873, type: 'crash1' }, { tick: 4874, type: 'kick' }, { tick: 4887, type: 'kick' }, { tick: 4888, type: 'crash1' }, { tick: 4905, type: 'hihat' }, { tick: 4906, type: 'snare' }, { tick: 4921, type: 'hihat' }, { tick: 4932, type: 'kick' }, { tick: 4937, type: 'hihat' }, { tick: 4941, type: 'snare' }, { tick: 4956, type: 'hihat' }, { tick: 4965, type: 'snare' }, { tick: 4990, type: 'snare' }, { tick: 4999, type: 'snare' }, { tick: 5015, type: 'tom1' }, { tick: 5025, type: 'crash1' }, { tick: 5027, type: 'kick' }, { tick: 5043, type: 'hihat' }, { tick: 5045, type: 'snare' }, { tick: 5061, type: 'hihat' }, { tick: 5070, type: 'kick' }, { tick: 5076, type: 'hihat' }, { tick: 5079, type: 'snare' }, { tick: 5095, type: 'hihat' }, { tick: 5097, type: 'kick' }, { tick: 5105, type: 'crash1' }, { tick: 5110, type: 'kick' }, { tick: 5123, type: 'crash1' }, { tick: 5124, type: 'kick' }, { tick: 5149, type: 'snare' }, { tick: 5156, type: 'snare' }, { tick: 5172, type: 'snare' }, { tick: 5188, type: 'snare' }, { tick: 5199, type: 'snare' }, { tick: 5207, type: 'crash1' }, { tick: 5209, type: 'kick' }, { tick: 5242, type: 'snare' }, { tick: 5242, type: 'crash1' }, { tick: 5258, type: 'hihat' }, { tick: 5258, type: 'snare' }, { tick: 5276, type: 'hihat' }, { tick: 5294, type: 'hihat' }, { tick: 5311, type: 'hihat' }, { tick: 5311, type: 'snare' }, { tick: 5329, type: 'snare' }, { tick: 5329, type: 'hihat' }, { tick: 5346, type: 'hihat' }, { tick: 5347, type: 'kick' }, { tick: 5363, type: 'hihat' }, { tick: 5372, type: 'kick' }, { tick: 5378, type: 'hihat' }, { tick: 5381, type: 'snare' }, { tick: 5396, type: 'snare' }, { tick: 5416, type: 'tom1' }, { tick: 5424, type: 'snare' }, { tick: 5431, type: 'snare' }, { tick: 5440, type: 'snare' }, { tick: 5447, type: 'snare' }, { tick: 5463, type: 'snare' }, { tick: 5469, type: 'snare' }, { tick: 5482, type: 'kick' }, { tick: 5482, type: 'crash1' }, { tick: 5516, type: 'snare' }, { tick: 5533, type: 'snare' }, { tick: 5550, type: 'hihat' }, { tick: 5560, type: 'kick' }, { tick: 5569, type: 'hihat' }, { tick: 5584, type: 'snare' }, { tick: 5586, type: 'crash1' }, { tick: 5601, type: 'crash1' }, { tick: 5602, type: 'snare' }, { tick: 5618, type: 'hihat' }, { tick: 5620, type: 'kick' }, { tick: 5635, type: 'hihat' }, { tick: 5643, type: 'kick' }, { tick: 5652, type: 'hihat' }, { tick: 5653, type: 'snare' }, { tick: 5670, type: 'snare' }, { tick: 5670, type: 'hihat' }, { tick: 5687, type: 'snare' }, { tick: 5702, type: 'snare' }, { tick: 5720, type: 'tom1' }, { tick: 5736, type: 'tom1' }, { tick: 5744, type: 'tom1' }, { tick: 5757, type: 'crash1' }, { tick: 5757, type: 'kick' }, { tick: 5777, type: 'kick' }, { tick: 5788, type: 'kick' }, { tick: 5792, type: 'hihat' }, { tick: 5794, type: 'snare' }, { tick: 5809, type: 'snare' }, { tick: 5809, type: 'hihat' }, { tick: 5826, type: 'hihat' }, { tick: 5828, type: 'kick' }, { tick: 5845, type: 'kick' }, { tick: 5855, type: 'kick' }, { tick: 5857, type: 'hihat' }, { tick: 5863, type: 'snare' }, { tick: 5876, type: 'snare' }, { tick: 5878, type: 'hihat' }, { tick: 5894, type: 'hihat' }, { tick: 5894, type: 'kick' }, { tick: 5911, type: 'hihat' }, { tick: 5916, type: 'kick' }, { tick: 5925, type: 'hihat' }, { tick: 5927, type: 'snare' }, { tick: 5944, type: 'snare' }, { tick: 5944, type: 'hihat' }, { tick: 5962, type: 'snare' }, { tick: 5977, type: 'snare' }, { tick: 5995, type: 'tom1' }, { tick: 6003, type: 'tom1' }, { tick: 6012, type: 'tom1' }, { tick: 6020, type: 'tom1' }, { tick: 6030, type: 'crash1' }, { tick: 6031, type: 'kick' }, { tick: 6049, type: 'kick' }, { tick: 6057, type: 'kick' }, { tick: 6064, type: 'hihat' }, { tick: 6066, type: 'snare' }, { tick: 6082, type: 'snare' }, { tick: 6082, type: 'hihat' }, { tick: 6098, type: 'hihat' }, { tick: 6100, type: 'kick' }, { tick: 6116, type: 'hihat' }, { tick: 6119, type: 'kick' }, { tick: 6132, type: 'hihat' }, { tick: 6132, type: 'snare' }, { tick: 6149, type: 'snare' }, { tick: 6149, type: 'hihat' }, { tick: 6166, type: 'hihat' }, { tick: 6167, type: 'kick' }, { tick: 6184, type: 'hihat' }, { tick: 6193, type: 'kick' }, { tick: 6199, type: 'hihat' }, { tick: 6218, type: 'snare' }, { tick: 6220, type: 'hihat' }, { tick: 6236, type: 'snare' }, { tick: 6243, type: 'snare' }, { tick: 6254, type: 'snare' }, { tick: 6271, type: 'tom1' }, { tick: 6277, type: 'tom1' }, { tick: 6282, type: 'tom1' }, { tick: 6307, type: 'kick' }, { tick: 6308, type: 'crash1' }, { tick: 6323, type: 'kick' }, { tick: 6323, type: 'crash1' }, { tick: 6398, type: 'kick' }] }, { name: "Level 2", music: "MasterofUpit", notes: [ // Example: simple pattern for demo, replace with real notes for level 2 { tick: 0, type: 'kick' }, { tick: 30, type: 'snare' }, { tick: 60, type: 'hihat' }, { tick: 90, type: 'crash1' }, { tick: 120, type: 'tom1' }, { tick: 150, type: 'kick' }, { tick: 180, type: 'snare' }, { tick: 210, type: 'hihat' }] }, { name: "Level 3", music: "MasterofUpit", notes: [ // Example: simple pattern for demo, replace with real notes for level 3 { tick: 0, type: 'hihat' }, { tick: 20, type: 'kick' }, { tick: 40, type: 'snare' }, { tick: 60, type: 'tom1' }, { tick: 80, type: 'crash1' }, { tick: 100, type: 'kick' }, { tick: 120, type: 'snare' }, { tick: 140, type: 'hihat' }] }]; // Current level index and songNotes reference var currentLevelIndex = 0; var songNotes = LEVELS[0].notes; var currentMusic = LEVELS[0].music; // --- Level Selection UI --- var levelSelectContainer = new Container(); levelSelectContainer.x = 0; levelSelectContainer.y = 0; levelSelectContainer.visible = true; LK.gui.center.addChild(levelSelectContainer); var levelSelectTitle = new Text2("Seviye SeƧ", { size: 120, fill: "#fff" }); levelSelectTitle.anchor.set(0.5, 0); levelSelectTitle.x = LK.gui.center.width / 2; levelSelectTitle.y = 100; levelSelectContainer.addChild(levelSelectTitle); var levelButtons = []; for (var i = 0; i < LEVELS.length; i++) { (function (idx) { var btn = new Text2(LEVELS[idx].name, { size: 100, fill: 0xFFE066 }); btn.anchor.set(0.5, 0.5); btn.x = LK.gui.center.width / 2; btn.y = 350 + idx * 220; btn.interactive = true; btn.buttonMode = true; btn.down = function () { selectLevel(idx); }; levelSelectContainer.addChild(btn); levelButtons.push(btn); })(i); } // --- Recording UI and Logic --- var recordTxt = new Text2('KAYIT: KAPALI', { size: 70, fill: 0xFF6666 }); recordTxt.anchor.set(0.5, 0); LK.gui.top.addChild(recordTxt); recordTxt.x = LK.gui.top.width / 2; recordTxt.y = 220; // Hide gameplay UI until level is selected scoreTxt.visible = false; comboTxt.visible = false; recordTxt.visible = false; // Level selection handler function selectLevel(idx) { currentLevelIndex = idx; songNotes = LEVELS[idx].notes; currentMusic = LEVELS[idx].music; levelSelectContainer.visible = false; scoreTxt.visible = true; comboTxt.visible = true; recordTxt.visible = true; if (typeof TEST_MODE !== "undefined" && TEST_MODE) { // Update songTotalTicks for timeline songTotalTicks = songNotes.length > 0 ? songNotes[songNotes.length - 1].tick : 1; } startGame(); // Start the game after selecting a level } var isRecording = false; var recordedNotes = []; var recordStartTick = 0; // Toggle recording on tap of recordTxt recordTxt.interactive = true; recordTxt.buttonMode = true; recordTxt.down = function () { if (!isRecording) { // Start recording isRecording = true; recordedNotes = []; recordStartTick = LK.ticks; recordTxt.setText('KAYIT: AĆIK'); comboTxt.setText('KAYIT MODU'); } else { // Stop recording and save as new level isRecording = false; recordTxt.setText('KAYIT: KAPALI'); comboTxt.setText(''); // Convert recordedNotes to songNotes format if (recordedNotes.length > 0) { // Normalize ticks to start at 0 var minTick = recordedNotes.length > 0 ? recordedNotes[0].tick : 0; for (var i = 0; i < recordedNotes.length; i++) { recordedNotes[i].tick -= minTick; } songNotes = []; for (var i = 0; i < recordedNotes.length; i++) { songNotes.push({ tick: recordedNotes[i].tick, type: recordedNotes[i].type }); } // Print recorded notes as code in the console var codeStr = "var songNotes = [\n"; for (var i = 0; i < recordedNotes.length; i++) { codeStr += " { tick: " + recordedNotes[i].tick + ", type: '" + recordedNotes[i].type + "' },\n"; } codeStr += "];"; console.log(codeStr); // Restart game with new level startGame(); } } }; LK.gui.top.addChild(recordTxt); // --- Record pad hits if in recording mode --- function recordPadHit(padType) { if (isRecording) { var tick = LK.ticks - recordStartTick; recordedNotes.push({ tick: tick, type: padType }); } } // --- Create Drum Pads --- for (var i = 0; i < PAD_COLS; i++) { var pad = new DrumPad(); pad.setPadType(PAD_TYPES[i]); pad.x = PAD_X_POSITIONS[PAD_TYPES[i]]; pad.y = PAD_Y; pad.padIndex = i; pads.push(pad); game.addChild(pad); } // --- Pad Touch Handling --- var activePad = null; function getPadAt(x, y) { for (var i = 0; i < pads.length; i++) { var pad = pads[i]; var dx = x - pad.x, dy = y - pad.y; var rx = pad.asset.width / 2, ry = pad.asset.height / 2; if (dx * dx / (rx * rx) + dy * dy / (ry * ry) <= 1) { return pad; } } return null; } game.down = function (x, y, obj) { var pad = getPadAt(x, y); if (pad) { activePad = pad; handlePadHit(pad); } }; game.move = function (x, y, obj) { // For multi-touch, could be extended }; game.up = function (x, y, obj) { activePad = null; }; // --- Note Spawning --- function spawnNote(type) { var note = new Note(); note.setNoteType(type); note.x = PAD_X_POSITIONS[type]; note.y = NOTE_START_Y; note.noteType = type; note.hit = false; notes.push(note); game.addChild(note); } // --- Pad Hit Logic --- function handlePadHit(pad) { // Play sound var soundId = pad.padType + 'Sound'; var sound = LK.getSound(soundId); if (sound) { if (sound.stop) { sound.stop(); } // Stop if already playing to avoid overlap/delay sound.play(); } // Record pad hit if in recording mode recordPadHit(pad.padType); // Visual feedback pad.flash(); // Find closest note of this type in hit window var bestNote = null, bestDist = HIT_WINDOW; for (var i = 0; i < notes.length; i++) { var note = notes[i]; if (note.hit) { continue; } if (note.noteType !== pad.padType) { continue; } var dist = Math.abs(note.y - NOTE_TARGET_Y); if (dist < bestDist) { bestDist = dist; bestNote = note; } } if (bestNote) { // Hit! bestNote.hit = true; LK.effects.flashObject(bestNote, 0xffffff, 120); tween(bestNote, { alpha: 0 }, { duration: 120, onFinish: function onFinish() { bestNote.destroy(); } }); notes.splice(notes.indexOf(bestNote), 1); score += 100; combo += 1; if (combo > maxCombo) { maxCombo = combo; } scoreTxt.setText(score); comboTxt.setText(combo > 1 ? combo + 'x' : ''); } else { // Miss! LK.effects.flashScreen(0xff0000, 200); combo = 0; comboTxt.setText(''); } } // --- Game Update --- game.update = function () { if (!isPlaying) { return; } // If recording, do not spawn notes, do not check for misses, do not end game if (isRecording) { // Allow player to play freely, but do not process notes return; } // Spawn notes according to songNotes, with NOTE_OFFSET_TICKS for sync var relTick = LK.ticks - songStartTick; while (noteIndex < songNotes.length && songNotes[noteIndex].tick <= relTick + NOTE_OFFSET_TICKS) { spawnNote(songNotes[noteIndex].type); noteIndex++; } // Update notes, check for hits and misses for (var i = notes.length - 1; i >= 0; i--) { var note = notes[i]; note.update(); // --- AUTO-HIT LOGIC --- // If note is not hit and just reached the hit line (NOTE_TARGET_Y) if (!note.hit) { if (note.lastY === undefined) { note.lastY = note.y - noteSpeed; } // Check if we crossed the hit line this frame if (note.lastY < NOTE_TARGET_Y && note.y >= NOTE_TARGET_Y) { // Find the pad for this note type for (var p = 0; p < pads.length; p++) { if (pads[p].padType === note.noteType) { // Play sound var soundId = pads[p].padType + 'Sound'; var sound = LK.getSound(soundId); if (sound) { if (sound.stop) { sound.stop(); } sound.play(); } // Visual feedback pads[p].flash(); break; } } // Mark as hit, animate and score note.hit = true; LK.effects.flashObject(note, 0xffffff, 120); tween(note, { alpha: 0 }, { duration: 120, onFinish: function onFinish() { note.destroy(); } }); notes.splice(i, 1); score += 100; combo += 1; if (combo > maxCombo) { maxCombo = combo; } scoreTxt.setText(score); comboTxt.setText(combo > 1 ? combo + 'x' : ''); continue; // Skip further checks for this note } note.lastY = note.y; } if (!note.hit && note.y > NOTE_TARGET_Y + HIT_WINDOW) { // Missed note LK.effects.flashObject(note, 0xff0000, 120); tween(note, { alpha: 0 }, { duration: 120, onFinish: function onFinish() { note.destroy(); } }); notes.splice(i, 1); combo = 0; comboTxt.setText(''); continue; } // Remove notes that go off screen if (note.y > GAME_H + 100) { if (notes.indexOf(note) !== -1) { notes.splice(notes.indexOf(note), 1); } note.destroy(); } } // End of song if (noteIndex >= songNotes.length && notes.length === 0) { isPlaying = false; LK.stopMusic(); LK.showYouWin(); } }; // --- Start Game --- function startGame() { score = 0; combo = 0; maxCombo = 0; scoreTxt.setText('0'); comboTxt.setText(''); notes = []; noteIndex = 0; isPlaying = true; songStartTick = LK.ticks; // Preload all drum sounds to reduce latency var preloadSounds = ['kickSound', 'snareSound', 'hihatSound', 'tom1Sound', 'crash1Sound']; for (var i = 0; i < preloadSounds.length; i++) { var s = LK.getSound(preloadSounds[i]); if (s && s.play) { // Play at zero volume to warm up, then stop immediately s.volume = 0; s.play(); if (s.stop) { s.stop(); } s.volume = 1; } } // Preload music to reduce latency var preloadMusic = LK.getMusic ? LK.getMusic('MasterofUpit') : null; if (preloadMusic && preloadMusic.play) { preloadMusic.volume = 0; preloadMusic.play(); if (preloadMusic.stop) { preloadMusic.stop(); } preloadMusic.volume = 1; } // Stop any currently playing music to ensure clean start LK.stopMusic(); // Play selected level's music with no fade, no loop, and start at full volume for best sync LK.playMusic(currentMusic, { loop: false, fade: { start: 1, end: 1, duration: 0 } }); } // --- Game Over Handling (missed notes or end of song) --- // Handled by LK.showYouWin() or LK.showGameOver() as needed // --- Responsive UI (center score) --- scoreTxt.x = LK.gui.top.width / 2; comboTxt.x = LK.gui.top.width / 2; // --- TEST MODE: Show timeline and tick counter for sync debugging --- var TEST_MODE = true; // Set to true to enable timeline and tick counter var timelineBar = null; var tickCounterTxt = null; if (TEST_MODE) { // Timeline bar (shows song progress) timelineBar = new Container(); var barBg = LK.getAsset('crash1Pad', { anchorX: 0, anchorY: 0, width: LK.gui.top.width - 200, height: 24 }); barBg.alpha = 0.18; timelineBar.addChild(barBg); var barFg = LK.getAsset('hihatPad', { anchorX: 0, anchorY: 0, width: 0, height: 24 }); barFg.alpha = 0.7; timelineBar.addChild(barFg); timelineBar.x = 100; timelineBar.y = LK.gui.top.height - 60; LK.gui.top.addChild(timelineBar); // Tick counter tickCounterTxt = new Text2('Tick: 0', { size: 48, fill: "#fff" }); tickCounterTxt.anchor.set(0, 0.5); tickCounterTxt.x = 100; tickCounterTxt.y = LK.gui.top.height - 100; LK.gui.top.addChild(tickCounterTxt); // Update timeline and tick counter every frame var lastTimelineUpdateTick = -1; var songTotalTicks = songNotes.length > 0 ? songNotes[songNotes.length - 1].tick : 1; game.update = function (origUpdate) { return function () { if (origUpdate) { origUpdate.apply(this, arguments); } if (isPlaying && TEST_MODE) { // Update songTotalTicks in case level changed songTotalTicks = songNotes.length > 0 ? songNotes[songNotes.length - 1].tick : 1; var relTick = LK.ticks - songStartTick; // Timeline bar var progress = Math.min(1, (relTick + NOTE_OFFSET_TICKS) / songTotalTicks); barFg.width = (LK.gui.top.width - 200) * progress; // Tick counter tickCounterTxt.setText('Tick: ' + relTick); } }; }(game.update); }
===================================================================
--- original.js
+++ change.js
@@ -83,14 +83,14 @@
/****
* Game Code
****/
-// --- Game constants ---
-// Drum pads (kick, snare, hi-hat, tom1, tom2, crash1, crash2)
-// Note bars (falling notes)
-// Sounds for each drum
-// Music track
// Drum pad sounds
+// Music track
+// Sounds for each drum
+// Note bars (falling notes)
+// Drum pads (kick, snare, hi-hat, tom1, tom2, crash1, crash2)
+// --- Game constants ---
var PAD_TYPES = ['kick', 'snare', 'hihat', 'tom1', 'crash1'];
var PAD_COLS = PAD_TYPES.length;
var GAME_W = 2048,
GAME_H = 2732;
@@ -181,1719 +181,1719 @@
var LEVELS = [{
name: "Level 1",
music: "MasterofUpit",
notes: [{
- tick: 66,
+ tick: 4,
type: 'kick'
}, {
- tick: 66,
+ tick: 4,
type: 'crash1'
}, {
- tick: 118,
+ tick: 56,
type: 'crash1'
}, {
- tick: 118,
+ tick: 56,
type: 'kick'
}, {
- tick: 135,
+ tick: 73,
type: 'crash1'
}, {
- tick: 136,
+ tick: 74,
type: 'kick'
}, {
- tick: 151,
+ tick: 89,
type: 'kick'
}, {
- tick: 151,
+ tick: 89,
type: 'crash1'
}, {
- tick: 252,
+ tick: 190,
type: 'kick'
}, {
- tick: 252,
+ tick: 190,
type: 'crash1'
}, {
- tick: 329,
+ tick: 267,
type: 'hihat'
}, {
- tick: 344,
+ tick: 282,
type: 'hihat'
}, {
- tick: 361,
+ tick: 299,
type: 'hihat'
}, {
- tick: 377,
+ tick: 315,
type: 'hihat'
}, {
- tick: 394,
+ tick: 332,
type: 'hihat'
}, {
- tick: 412,
+ tick: 350,
type: 'hihat'
}, {
- tick: 428,
+ tick: 366,
type: 'hihat'
}, {
- tick: 445,
+ tick: 383,
type: 'hihat'
}, {
- tick: 461,
+ tick: 399,
type: 'hihat'
}, {
- tick: 478,
+ tick: 416,
type: 'hihat'
}, {
- tick: 496,
+ tick: 434,
type: 'hihat'
}, {
- tick: 511,
+ tick: 449,
type: 'crash1'
}, {
- tick: 511,
+ tick: 449,
type: 'kick'
}, {
- tick: 527,
+ tick: 465,
type: 'kick'
}, {
- tick: 527,
+ tick: 465,
type: 'crash1'
}, {
- tick: 566,
+ tick: 504,
type: 'hihat'
}, {
- tick: 582,
+ tick: 520,
type: 'hihat'
}, {
- tick: 600,
+ tick: 538,
type: 'crash1'
}, {
- tick: 600,
+ tick: 538,
type: 'kick'
}, {
- tick: 616,
+ tick: 554,
type: 'crash1'
}, {
- tick: 617,
+ tick: 555,
type: 'kick'
}, {
- tick: 633,
+ tick: 571,
type: 'crash1'
}, {
- tick: 633,
+ tick: 571,
type: 'kick'
}, {
- tick: 669,
+ tick: 607,
type: 'crash1'
}, {
- tick: 685,
+ tick: 623,
type: 'hihat'
}, {
- tick: 703,
+ tick: 641,
type: 'hihat'
}, {
- tick: 720,
+ tick: 658,
type: 'hihat'
}, {
- tick: 737,
+ tick: 675,
type: 'hihat'
}, {
- tick: 755,
+ tick: 693,
type: 'hihat'
}, {
- tick: 772,
+ tick: 710,
type: 'hihat'
}, {
- tick: 788,
+ tick: 726,
type: 'kick'
}, {
- tick: 788,
+ tick: 726,
type: 'crash1'
}, {
- tick: 805,
+ tick: 743,
type: 'crash1'
}, {
- tick: 805,
+ tick: 743,
type: 'kick'
}, {
- tick: 822,
+ tick: 760,
type: 'hihat'
}, {
- tick: 838,
+ tick: 776,
type: 'hihat'
}, {
- tick: 855,
+ tick: 793,
type: 'hihat'
}, {
- tick: 872,
+ tick: 810,
type: 'crash1'
}, {
- tick: 872,
+ tick: 810,
type: 'kick'
}, {
- tick: 889,
+ tick: 827,
type: 'crash1'
}, {
- tick: 890,
+ tick: 828,
type: 'kick'
}, {
- tick: 907,
+ tick: 845,
type: 'kick'
}, {
- tick: 907,
+ tick: 845,
type: 'crash1'
}, {
- tick: 943,
+ tick: 881,
type: 'hihat'
}, {
- tick: 959,
+ tick: 897,
type: 'hihat'
}, {
- tick: 976,
+ tick: 914,
type: 'hihat'
}, {
- tick: 993,
+ tick: 931,
type: 'hihat'
}, {
- tick: 1009,
+ tick: 947,
type: 'hihat'
}, {
- tick: 1027,
+ tick: 965,
type: 'hihat'
}, {
- tick: 1044,
+ tick: 982,
type: 'hihat'
}, {
- tick: 1059,
+ tick: 997,
type: 'kick'
}, {
- tick: 1059,
+ tick: 997,
type: 'crash1'
}, {
- tick: 1078,
+ tick: 1016,
type: 'crash1'
}, {
- tick: 1079,
+ tick: 1017,
type: 'kick'
}, {
- tick: 1095,
+ tick: 1033,
type: 'hihat'
}, {
- tick: 1112,
+ tick: 1050,
type: 'hihat'
}, {
- tick: 1132,
+ tick: 1070,
type: 'hihat'
}, {
- tick: 1150,
+ tick: 1088,
type: 'crash1'
}, {
- tick: 1150,
+ tick: 1088,
type: 'kick'
}, {
- tick: 1168,
+ tick: 1106,
type: 'crash1'
}, {
- tick: 1168,
+ tick: 1106,
type: 'kick'
}, {
- tick: 1185,
+ tick: 1123,
type: 'crash1'
}, {
- tick: 1185,
+ tick: 1123,
type: 'kick'
}, {
- tick: 1227,
+ tick: 1165,
type: 'snare'
}, {
- tick: 1236,
+ tick: 1174,
type: 'snare'
}, {
- tick: 1244,
+ tick: 1182,
type: 'snare'
}, {
- tick: 1253,
+ tick: 1191,
type: 'snare'
}, {
- tick: 1262,
+ tick: 1200,
type: 'snare'
}, {
- tick: 1269,
+ tick: 1207,
type: 'snare'
}, {
- tick: 1278,
+ tick: 1216,
type: 'snare'
}, {
- tick: 1286,
+ tick: 1224,
type: 'snare'
}, {
- tick: 1295,
+ tick: 1233,
type: 'snare'
}, {
- tick: 1303,
+ tick: 1241,
type: 'snare'
}, {
- tick: 1312,
+ tick: 1250,
type: 'snare'
}, {
- tick: 1319,
+ tick: 1257,
type: 'snare'
}, {
- tick: 1330,
+ tick: 1268,
type: 'snare'
}, {
- tick: 1337,
+ tick: 1275,
type: 'snare'
}, {
- tick: 1347,
+ tick: 1285,
type: 'snare'
}, {
- tick: 1355,
+ tick: 1293,
type: 'crash1'
}, {
- tick: 1355,
+ tick: 1293,
type: 'kick'
}, {
- tick: 1564,
+ tick: 1502,
type: 'kick'
}, {
- tick: 1564,
+ tick: 1502,
type: 'crash1'
}, {
- tick: 1590,
+ tick: 1528,
type: 'kick'
}, {
- tick: 1590,
+ tick: 1528,
type: 'crash1'
}, {
- tick: 1614,
+ tick: 1552,
type: 'kick'
}, {
- tick: 1614,
+ tick: 1552,
type: 'crash1'
}, {
- tick: 1629,
+ tick: 1567,
type: 'kick'
}, {
- tick: 1629,
+ tick: 1567,
type: 'crash1'
}, {
- tick: 1837,
+ tick: 1775,
type: 'kick'
}, {
- tick: 1837,
+ tick: 1775,
type: 'crash1'
}, {
- tick: 1867,
+ tick: 1805,
type: 'kick'
}, {
- tick: 1867,
+ tick: 1805,
type: 'crash1'
}, {
- tick: 1890,
+ tick: 1828,
type: 'crash1'
}, {
- tick: 1890,
+ tick: 1828,
type: 'kick'
}, {
- tick: 1906,
+ tick: 1844,
type: 'kick'
}, {
- tick: 1906,
+ tick: 1844,
type: 'crash1'
}, {
- tick: 1920,
+ tick: 1858,
type: 'hihat'
}, {
- tick: 1922,
+ tick: 1860,
type: 'snare'
}, {
- tick: 1939,
+ tick: 1877,
type: 'hihat'
}, {
- tick: 1951,
+ tick: 1889,
type: 'kick'
}, {
- tick: 1953,
+ tick: 1891,
type: 'hihat'
}, {
- tick: 1955,
+ tick: 1893,
type: 'snare'
}, {
- tick: 1973,
+ tick: 1911,
type: 'hihat'
}, {
- tick: 1973,
+ tick: 1911,
type: 'kick'
}, {
- tick: 1991,
+ tick: 1929,
type: 'hihat'
}, {
- tick: 1991,
+ tick: 1929,
type: 'snare'
}, {
- tick: 2009,
+ tick: 1947,
type: 'hihat'
}, {
- tick: 2017,
+ tick: 1955,
type: 'kick'
}, {
- tick: 2023,
+ tick: 1961,
type: 'hihat'
}, {
- tick: 2025,
+ tick: 1963,
type: 'snare'
}, {
- tick: 2041,
+ tick: 1979,
type: 'hihat'
}, {
- tick: 2044,
+ tick: 1982,
type: 'kick'
}, {
- tick: 2059,
+ tick: 1997,
type: 'hihat'
}, {
- tick: 2061,
+ tick: 1999,
type: 'snare'
}, {
- tick: 2076,
+ tick: 2014,
type: 'hihat'
}, {
- tick: 2087,
+ tick: 2025,
type: 'kick'
}, {
- tick: 2091,
+ tick: 2029,
type: 'hihat'
}, {
- tick: 2094,
+ tick: 2032,
type: 'snare'
}, {
- tick: 2110,
+ tick: 2048,
type: 'hihat'
}, {
- tick: 2111,
+ tick: 2049,
type: 'kick'
}, {
- tick: 2127,
+ tick: 2065,
type: 'snare'
}, {
- tick: 2127,
+ tick: 2065,
type: 'hihat'
}, {
- tick: 2140,
+ tick: 2078,
type: 'hihat'
}, {
- tick: 2153,
+ tick: 2091,
type: 'kick'
}, {
- tick: 2157,
+ tick: 2095,
type: 'hihat'
}, {
- tick: 2163,
+ tick: 2101,
type: 'snare'
}, {
- tick: 2178,
+ tick: 2116,
type: 'crash1'
}, {
- tick: 2178,
+ tick: 2116,
type: 'kick'
}, {
- tick: 2193,
+ tick: 2131,
type: 'hihat'
}, {
- tick: 2194,
+ tick: 2132,
type: 'snare'
}, {
- tick: 2210,
+ tick: 2148,
type: 'hihat'
}, {
- tick: 2218,
+ tick: 2156,
type: 'kick'
}, {
- tick: 2226,
+ tick: 2164,
type: 'hihat'
}, {
- tick: 2227,
+ tick: 2165,
type: 'snare'
}, {
- tick: 2244,
+ tick: 2182,
type: 'hihat'
}, {
- tick: 2247,
+ tick: 2185,
type: 'kick'
}, {
- tick: 2262,
+ tick: 2200,
type: 'hihat'
}, {
- tick: 2263,
+ tick: 2201,
type: 'snare'
}, {
- tick: 2279,
+ tick: 2217,
type: 'hihat'
}, {
- tick: 2288,
+ tick: 2226,
type: 'snare'
}, {
- tick: 2296,
+ tick: 2234,
type: 'snare'
}, {
- tick: 2304,
+ tick: 2242,
type: 'snare'
}, {
- tick: 2315,
+ tick: 2253,
type: 'kick'
}, {
- tick: 2329,
+ tick: 2267,
type: 'snare'
}, {
- tick: 2357,
+ tick: 2295,
type: 'kick'
}, {
- tick: 2364,
+ tick: 2302,
type: 'snare'
}, {
- tick: 2379,
+ tick: 2317,
type: 'kick'
}, {
- tick: 2380,
+ tick: 2318,
type: 'crash1'
}, {
- tick: 2408,
+ tick: 2346,
type: 'crash1'
}, {
- tick: 2413,
+ tick: 2351,
type: 'kick'
}, {
- tick: 2435,
+ tick: 2373,
type: 'crash1'
}, {
- tick: 2435,
+ tick: 2373,
type: 'kick'
}, {
- tick: 2452,
+ tick: 2390,
type: 'crash1'
}, {
- tick: 2467,
+ tick: 2405,
type: 'hihat'
}, {
- tick: 2469,
+ tick: 2407,
type: 'snare'
}, {
- tick: 2485,
+ tick: 2423,
type: 'hihat'
}, {
- tick: 2496,
+ tick: 2434,
type: 'kick'
}, {
- tick: 2501,
+ tick: 2439,
type: 'hihat'
}, {
- tick: 2504,
+ tick: 2442,
type: 'snare'
}, {
- tick: 2521,
+ tick: 2459,
type: 'hihat'
}, {
- tick: 2522,
+ tick: 2460,
type: 'kick'
}, {
- tick: 2539,
+ tick: 2477,
type: 'hihat'
}, {
- tick: 2539,
+ tick: 2477,
type: 'snare'
}, {
- tick: 2557,
+ tick: 2495,
type: 'hihat'
}, {
- tick: 2565,
+ tick: 2503,
type: 'kick'
}, {
- tick: 2571,
+ tick: 2509,
type: 'hihat'
}, {
- tick: 2573,
+ tick: 2511,
type: 'snare'
}, {
- tick: 2589,
+ tick: 2527,
type: 'hihat'
}, {
- tick: 2591,
+ tick: 2529,
type: 'kick'
}, {
- tick: 2605,
+ tick: 2543,
type: 'hihat'
}, {
- tick: 2607,
+ tick: 2545,
type: 'snare'
}, {
- tick: 2624,
+ tick: 2562,
type: 'hihat'
}, {
- tick: 2632,
+ tick: 2570,
type: 'kick'
}, {
- tick: 2638,
+ tick: 2576,
type: 'hihat'
}, {
- tick: 2641,
+ tick: 2579,
type: 'snare'
}, {
- tick: 2657,
+ tick: 2595,
type: 'hihat'
}, {
- tick: 2658,
+ tick: 2596,
type: 'kick'
}, {
- tick: 2675,
+ tick: 2613,
type: 'hihat'
}, {
- tick: 2675,
+ tick: 2613,
type: 'snare'
}, {
- tick: 2691,
+ tick: 2629,
type: 'hihat'
}, {
- tick: 2700,
+ tick: 2638,
type: 'kick'
}, {
- tick: 2708,
+ tick: 2646,
type: 'snare'
}, {
- tick: 2723,
+ tick: 2661,
type: 'kick'
}, {
- tick: 2726,
+ tick: 2664,
type: 'crash1'
}, {
- tick: 2741,
+ tick: 2679,
type: 'snare'
}, {
- tick: 2758,
+ tick: 2696,
type: 'hihat'
}, {
- tick: 2767,
+ tick: 2705,
type: 'kick'
}, {
- tick: 2773,
+ tick: 2711,
type: 'hihat'
}, {
- tick: 2775,
+ tick: 2713,
type: 'snare'
}, {
- tick: 2792,
+ tick: 2730,
type: 'hihat'
}, {
- tick: 2798,
+ tick: 2736,
type: 'kick'
}, {
- tick: 2809,
+ tick: 2747,
type: 'snare'
}, {
- tick: 2817,
+ tick: 2755,
type: 'snare'
}, {
- tick: 2824,
+ tick: 2762,
type: 'snare'
}, {
- tick: 2833,
+ tick: 2771,
type: 'snare'
}, {
- tick: 2840,
+ tick: 2778,
type: 'snare'
}, {
- tick: 2849,
+ tick: 2787,
type: 'snare'
}, {
- tick: 2859,
+ tick: 2797,
type: 'kick'
}, {
- tick: 2875,
+ tick: 2813,
type: 'snare'
}, {
- tick: 2892,
+ tick: 2830,
type: 'hihat'
}, {
- tick: 2901,
+ tick: 2839,
type: 'kick'
}, {
- tick: 2907,
+ tick: 2845,
type: 'hihat'
}, {
- tick: 2909,
+ tick: 2847,
type: 'snare'
}, {
- tick: 2923,
+ tick: 2861,
type: 'crash1'
}, {
- tick: 2923,
+ tick: 2861,
type: 'kick'
}, {
- tick: 2953,
+ tick: 2891,
type: 'kick'
}, {
- tick: 2954,
+ tick: 2892,
type: 'crash1'
}, {
- tick: 2984,
+ tick: 2922,
type: 'crash1'
}, {
- tick: 2989,
+ tick: 2927,
type: 'kick'
}, {
- tick: 3009,
+ tick: 2947,
type: 'crash1'
}, {
- tick: 3009,
+ tick: 2947,
type: 'kick'
}, {
- tick: 3035,
+ tick: 2973,
type: 'kick'
}, {
- tick: 3035,
+ tick: 2973,
type: 'crash1'
}, {
- tick: 3056,
+ tick: 2994,
type: 'kick'
}, {
- tick: 3056,
+ tick: 2994,
type: 'crash1'
}, {
- tick: 3073,
+ tick: 3011,
type: 'crash1'
}, {
- tick: 3073,
+ tick: 3011,
type: 'kick'
}, {
- tick: 3090,
+ tick: 3028,
type: 'hihat'
}, {
- tick: 3107,
+ tick: 3045,
type: 'hihat'
}, {
- tick: 3123,
+ tick: 3061,
type: 'hihat'
}, {
- tick: 3140,
+ tick: 3078,
type: 'hihat'
}, {
- tick: 3158,
+ tick: 3096,
type: 'hihat'
}, {
- tick: 3174,
+ tick: 3112,
type: 'hihat'
}, {
- tick: 3192,
+ tick: 3130,
type: 'hihat'
}, {
- tick: 3209,
+ tick: 3147,
type: 'crash1'
}, {
- tick: 3209,
+ tick: 3147,
type: 'kick'
}, {
- tick: 3226,
+ tick: 3164,
type: 'snare'
}, {
- tick: 3226,
+ tick: 3164,
type: 'hihat'
}, {
- tick: 3243,
+ tick: 3181,
type: 'hihat'
}, {
- tick: 3252,
+ tick: 3190,
type: 'kick'
}, {
- tick: 3258,
+ tick: 3196,
type: 'hihat'
}, {
- tick: 3260,
+ tick: 3198,
type: 'snare'
}, {
- tick: 3277,
+ tick: 3215,
type: 'hihat'
}, {
- tick: 3279,
+ tick: 3217,
type: 'kick'
}, {
- tick: 3292,
+ tick: 3230,
type: 'hihat'
}, {
- tick: 3294,
+ tick: 3232,
type: 'snare'
}, {
- tick: 3311,
+ tick: 3249,
type: 'hihat'
}, {
- tick: 3313,
+ tick: 3251,
type: 'kick'
}, {
- tick: 3327,
+ tick: 3265,
type: 'hihat'
}, {
- tick: 3329,
+ tick: 3267,
type: 'snare'
}, {
- tick: 3345,
+ tick: 3283,
type: 'hihat'
}, {
- tick: 3347,
+ tick: 3285,
type: 'kick'
}, {
- tick: 3362,
+ tick: 3300,
type: 'hihat'
}, {
- tick: 3363,
+ tick: 3301,
type: 'snare'
}, {
- tick: 3380,
+ tick: 3318,
type: 'hihat'
}, {
- tick: 3388,
+ tick: 3326,
type: 'kick'
}, {
- tick: 3394,
+ tick: 3332,
type: 'hihat'
}, {
- tick: 3396,
+ tick: 3334,
type: 'snare'
}, {
- tick: 3412,
+ tick: 3350,
type: 'hihat'
}, {
- tick: 3413,
+ tick: 3351,
type: 'kick'
}, {
- tick: 3422,
+ tick: 3360,
type: 'kick'
}, {
- tick: 3422,
+ tick: 3360,
type: 'crash1'
}, {
- tick: 3440,
+ tick: 3378,
type: 'crash1'
}, {
- tick: 3441,
+ tick: 3379,
type: 'kick'
}, {
- tick: 3455,
+ tick: 3393,
type: 'crash1'
}, {
- tick: 3456,
+ tick: 3394,
type: 'kick'
}, {
- tick: 3473,
+ tick: 3411,
type: 'hihat'
}, {
- tick: 3473,
+ tick: 3411,
type: 'snare'
}, {
- tick: 3491,
+ tick: 3429,
type: 'hihat'
}, {
- tick: 3499,
+ tick: 3437,
type: 'kick'
}, {
- tick: 3506,
+ tick: 3444,
type: 'hihat'
}, {
- tick: 3507,
+ tick: 3445,
type: 'snare'
}, {
- tick: 3523,
+ tick: 3461,
type: 'hihat'
}, {
- tick: 3531,
+ tick: 3469,
type: 'snare'
}, {
- tick: 3539,
+ tick: 3477,
type: 'snare'
}, {
- tick: 3555,
+ tick: 3493,
type: 'snare'
}, {
- tick: 3564,
+ tick: 3502,
type: 'snare'
}, {
- tick: 3570,
+ tick: 3508,
type: 'tom1'
}, {
- tick: 3578,
+ tick: 3516,
type: 'tom1'
}, {
- tick: 3590,
+ tick: 3528,
type: 'kick'
}, {
- tick: 3590,
+ tick: 3528,
type: 'crash1'
}, {
- tick: 3607,
+ tick: 3545,
type: 'hihat'
}, {
- tick: 3608,
+ tick: 3546,
type: 'snare'
}, {
- tick: 3625,
+ tick: 3563,
type: 'hihat'
}, {
- tick: 3635,
+ tick: 3573,
type: 'kick'
}, {
- tick: 3642,
+ tick: 3580,
type: 'hihat'
}, {
- tick: 3643,
+ tick: 3581,
type: 'snare'
}, {
- tick: 3660,
+ tick: 3598,
type: 'hihat'
}, {
- tick: 3660,
+ tick: 3598,
type: 'kick'
}, {
- tick: 3669,
+ tick: 3607,
type: 'snare'
}, {
- tick: 3669,
+ tick: 3607,
type: 'crash1'
}, {
- tick: 3690,
+ tick: 3628,
type: 'snare'
}, {
- tick: 3690,
+ tick: 3628,
type: 'crash1'
}, {
- tick: 3707,
+ tick: 3645,
type: 'hihat'
}, {
- tick: 3707,
+ tick: 3645,
type: 'kick'
}, {
- tick: 3724,
+ tick: 3662,
type: 'snare'
}, {
- tick: 3725,
+ tick: 3663,
type: 'hihat'
}, {
- tick: 3742,
+ tick: 3680,
type: 'hihat'
}, {
- tick: 3749,
+ tick: 3687,
type: 'kick'
}, {
- tick: 3756,
+ tick: 3694,
type: 'hihat'
}, {
- tick: 3760,
+ tick: 3698,
type: 'snare'
}, {
- tick: 3775,
+ tick: 3713,
type: 'hihat'
}, {
- tick: 3784,
+ tick: 3722,
type: 'snare'
}, {
- tick: 3793,
+ tick: 3731,
type: 'snare'
}, {
- tick: 3808,
+ tick: 3746,
type: 'snare'
}, {
- tick: 3817,
+ tick: 3755,
type: 'snare'
}, {
- tick: 3822,
+ tick: 3760,
type: 'tom1'
}, {
- tick: 3831,
+ tick: 3769,
type: 'tom1'
}, {
- tick: 3841,
+ tick: 3779,
type: 'crash1'
}, {
- tick: 3842,
+ tick: 3780,
type: 'kick'
}, {
- tick: 3857,
+ tick: 3795,
type: 'hihat'
}, {
- tick: 3857,
+ tick: 3795,
type: 'snare'
}, {
- tick: 3874,
+ tick: 3812,
type: 'hihat'
}, {
- tick: 3884,
+ tick: 3822,
type: 'kick'
}, {
- tick: 3891,
+ tick: 3829,
type: 'hihat'
}, {
- tick: 3892,
+ tick: 3830,
type: 'snare'
}, {
- tick: 3908,
+ tick: 3846,
type: 'hihat'
}, {
- tick: 3909,
+ tick: 3847,
type: 'kick'
}, {
- tick: 3917,
+ tick: 3855,
type: 'kick'
}, {
- tick: 3917,
+ tick: 3855,
type: 'crash1'
}, {
- tick: 3936,
+ tick: 3874,
type: 'crash1'
}, {
- tick: 3938,
+ tick: 3876,
type: 'kick'
}, {
- tick: 3952,
+ tick: 3890,
type: 'crash1'
}, {
- tick: 3954,
+ tick: 3892,
type: 'kick'
}, {
- tick: 3969,
+ tick: 3907,
type: 'hihat'
}, {
- tick: 3972,
+ tick: 3910,
type: 'snare'
}, {
- tick: 3988,
+ tick: 3926,
type: 'hihat'
}, {
- tick: 4002,
+ tick: 3940,
type: 'hihat'
}, {
- tick: 4003,
+ tick: 3941,
type: 'snare'
}, {
- tick: 4022,
+ tick: 3960,
type: 'hihat'
}, {
- tick: 4031,
+ tick: 3969,
type: 'snare'
}, {
- tick: 4040,
+ tick: 3978,
type: 'snare'
}, {
- tick: 4067,
+ tick: 4005,
type: 'tom1'
}, {
- tick: 4084,
+ tick: 4022,
type: 'snare'
}, {
- tick: 4093,
+ tick: 4031,
type: 'crash1'
}, {
- tick: 4094,
+ tick: 4032,
type: 'kick'
}, {
- tick: 4110,
+ tick: 4048,
type: 'snare'
}, {
- tick: 4110,
+ tick: 4048,
type: 'hihat'
}, {
- tick: 4128,
+ tick: 4066,
type: 'hihat'
}, {
- tick: 4137,
+ tick: 4075,
type: 'kick'
}, {
- tick: 4144,
+ tick: 4082,
type: 'hihat'
}, {
- tick: 4147,
+ tick: 4085,
type: 'snare'
}, {
- tick: 4162,
+ tick: 4100,
type: 'hihat'
}, {
- tick: 4164,
+ tick: 4102,
type: 'kick'
}, {
- tick: 4171,
+ tick: 4109,
type: 'crash1'
}, {
- tick: 4173,
+ tick: 4111,
type: 'snare'
}, {
- tick: 4192,
+ tick: 4130,
type: 'crash1'
}, {
- tick: 4192,
+ tick: 4130,
type: 'snare'
}, {
- tick: 4208,
+ tick: 4146,
type: 'hihat'
}, {
- tick: 4209,
+ tick: 4147,
type: 'kick'
}, {
- tick: 4224,
+ tick: 4162,
type: 'snare'
}, {
- tick: 4224,
+ tick: 4162,
type: 'hihat'
}, {
- tick: 4242,
+ tick: 4180,
type: 'hihat'
}, {
- tick: 4250,
+ tick: 4188,
type: 'kick'
}, {
- tick: 4258,
+ tick: 4196,
type: 'hihat'
}, {
- tick: 4261,
+ tick: 4199,
type: 'snare'
}, {
- tick: 4276,
+ tick: 4214,
type: 'hihat'
}, {
- tick: 4285,
+ tick: 4223,
type: 'snare'
}, {
- tick: 4293,
+ tick: 4231,
type: 'snare'
}, {
- tick: 4311,
+ tick: 4249,
type: 'snare'
}, {
- tick: 4318,
+ tick: 4256,
type: 'snare'
}, {
- tick: 4325,
+ tick: 4263,
type: 'tom1'
}, {
- tick: 4332,
+ tick: 4270,
type: 'tom1'
}, {
- tick: 4342,
+ tick: 4280,
type: 'crash1'
}, {
- tick: 4344,
+ tick: 4282,
type: 'kick'
}, {
- tick: 4358,
+ tick: 4296,
type: 'hihat'
}, {
- tick: 4359,
+ tick: 4297,
type: 'snare'
}, {
- tick: 4376,
+ tick: 4314,
type: 'hihat'
}, {
- tick: 4385,
+ tick: 4323,
type: 'kick'
}, {
- tick: 4392,
+ tick: 4330,
type: 'hihat'
}, {
- tick: 4395,
+ tick: 4333,
type: 'snare'
}, {
- tick: 4409,
+ tick: 4347,
type: 'hihat'
}, {
- tick: 4419,
+ tick: 4357,
type: 'crash1'
}, {
- tick: 4420,
+ tick: 4358,
type: 'snare'
}, {
- tick: 4439,
+ tick: 4377,
type: 'snare'
}, {
- tick: 4439,
+ tick: 4377,
type: 'crash1'
}, {
- tick: 4456,
+ tick: 4394,
type: 'hihat'
}, {
- tick: 4456,
+ tick: 4394,
type: 'kick'
}, {
- tick: 4473,
+ tick: 4411,
type: 'snare'
}, {
- tick: 4473,
+ tick: 4411,
type: 'hihat'
}, {
- tick: 4490,
+ tick: 4428,
type: 'hihat'
}, {
- tick: 4497,
+ tick: 4435,
type: 'kick'
}, {
- tick: 4504,
+ tick: 4442,
type: 'hihat'
}, {
- tick: 4506,
+ tick: 4444,
type: 'snare'
}, {
- tick: 4524,
+ tick: 4462,
type: 'crash1'
}, {
- tick: 4540,
+ tick: 4478,
type: 'crash1'
}, {
- tick: 4575,
+ tick: 4513,
type: 'kick'
}, {
- tick: 4594,
+ tick: 4532,
type: 'crash1'
}, {
- tick: 4594,
+ tick: 4532,
type: 'kick'
}, {
- tick: 4610,
+ tick: 4548,
type: 'snare'
}, {
- tick: 4627,
+ tick: 4565,
type: 'hihat'
}, {
- tick: 4634,
+ tick: 4572,
type: 'kick'
}, {
- tick: 4642,
+ tick: 4580,
type: 'hihat'
}, {
- tick: 4644,
+ tick: 4582,
type: 'snare'
}, {
- tick: 4658,
+ tick: 4596,
type: 'hihat'
}, {
- tick: 4669,
+ tick: 4607,
type: 'crash1'
}, {
- tick: 4672,
+ tick: 4610,
type: 'kick'
}, {
- tick: 4687,
+ tick: 4625,
type: 'crash1'
}, {
- tick: 4687,
+ tick: 4625,
type: 'kick'
}, {
- tick: 4702,
+ tick: 4640,
type: 'hihat'
}, {
- tick: 4710,
+ tick: 4648,
type: 'snare'
}, {
- tick: 4720,
+ tick: 4658,
type: 'snare'
}, {
- tick: 4730,
+ tick: 4668,
type: 'snare'
}, {
- tick: 4739,
+ tick: 4677,
type: 'snare'
}, {
- tick: 4750,
+ tick: 4688,
type: 'snare'
}, {
- tick: 4764,
+ tick: 4702,
type: 'snare'
}, {
- tick: 4775,
+ tick: 4713,
type: 'kick'
}, {
- tick: 4777,
+ tick: 4715,
type: 'crash1'
}, {
- tick: 4789,
+ tick: 4727,
type: 'kick'
}, {
- tick: 4807,
+ tick: 4745,
type: 'crash1'
}, {
- tick: 4807,
+ tick: 4745,
type: 'kick'
}, {
- tick: 4839,
+ tick: 4777,
type: 'crash1'
}, {
- tick: 4839,
+ tick: 4777,
type: 'kick'
}, {
- tick: 4856,
+ tick: 4794,
type: 'snare'
}, {
- tick: 4856,
+ tick: 4794,
type: 'hihat'
}, {
- tick: 4874,
+ tick: 4812,
type: 'hihat'
}, {
- tick: 4887,
+ tick: 4825,
type: 'kick'
}, {
- tick: 4889,
+ tick: 4827,
type: 'hihat'
}, {
- tick: 4893,
+ tick: 4831,
type: 'snare'
}, {
- tick: 4906,
+ tick: 4844,
type: 'hihat'
}, {
- tick: 4909,
+ tick: 4847,
type: 'kick'
}, {
- tick: 4916,
+ tick: 4854,
type: 'kick'
}, {
- tick: 4916,
+ tick: 4854,
type: 'crash1'
}, {
- tick: 4935,
+ tick: 4873,
type: 'crash1'
}, {
- tick: 4936,
+ tick: 4874,
type: 'kick'
}, {
- tick: 4949,
+ tick: 4887,
type: 'kick'
}, {
- tick: 4950,
+ tick: 4888,
type: 'crash1'
}, {
- tick: 4967,
+ tick: 4905,
type: 'hihat'
}, {
- tick: 4968,
+ tick: 4906,
type: 'snare'
}, {
- tick: 4983,
+ tick: 4921,
type: 'hihat'
}, {
- tick: 4994,
+ tick: 4932,
type: 'kick'
}, {
- tick: 4999,
+ tick: 4937,
type: 'hihat'
}, {
- tick: 5003,
+ tick: 4941,
type: 'snare'
}, {
- tick: 5018,
+ tick: 4956,
type: 'hihat'
}, {
- tick: 5027,
+ tick: 4965,
type: 'snare'
}, {
- tick: 5052,
+ tick: 4990,
type: 'snare'
}, {
- tick: 5061,
+ tick: 4999,
type: 'snare'
}, {
- tick: 5077,
+ tick: 5015,
type: 'tom1'
}, {
- tick: 5087,
+ tick: 5025,
type: 'crash1'
}, {
- tick: 5089,
+ tick: 5027,
type: 'kick'
}, {
- tick: 5105,
+ tick: 5043,
type: 'hihat'
}, {
- tick: 5107,
+ tick: 5045,
type: 'snare'
}, {
- tick: 5123,
+ tick: 5061,
type: 'hihat'
}, {
- tick: 5132,
+ tick: 5070,
type: 'kick'
}, {
- tick: 5138,
+ tick: 5076,
type: 'hihat'
}, {
- tick: 5141,
+ tick: 5079,
type: 'snare'
}, {
- tick: 5157,
+ tick: 5095,
type: 'hihat'
}, {
- tick: 5159,
+ tick: 5097,
type: 'kick'
}, {
- tick: 5167,
+ tick: 5105,
type: 'crash1'
}, {
- tick: 5172,
+ tick: 5110,
type: 'kick'
}, {
- tick: 5185,
+ tick: 5123,
type: 'crash1'
}, {
- tick: 5186,
+ tick: 5124,
type: 'kick'
}, {
- tick: 5211,
+ tick: 5149,
type: 'snare'
}, {
- tick: 5218,
+ tick: 5156,
type: 'snare'
}, {
- tick: 5234,
+ tick: 5172,
type: 'snare'
}, {
- tick: 5250,
+ tick: 5188,
type: 'snare'
}, {
- tick: 5261,
+ tick: 5199,
type: 'snare'
}, {
- tick: 5269,
+ tick: 5207,
type: 'crash1'
}, {
- tick: 5271,
+ tick: 5209,
type: 'kick'
}, {
- tick: 5304,
+ tick: 5242,
type: 'snare'
}, {
- tick: 5304,
+ tick: 5242,
type: 'crash1'
}, {
- tick: 5320,
+ tick: 5258,
type: 'hihat'
}, {
- tick: 5320,
+ tick: 5258,
type: 'snare'
}, {
- tick: 5338,
+ tick: 5276,
type: 'hihat'
}, {
- tick: 5356,
+ tick: 5294,
type: 'hihat'
}, {
- tick: 5373,
+ tick: 5311,
type: 'hihat'
}, {
- tick: 5373,
+ tick: 5311,
type: 'snare'
}, {
- tick: 5391,
+ tick: 5329,
type: 'snare'
}, {
- tick: 5391,
+ tick: 5329,
type: 'hihat'
}, {
- tick: 5408,
+ tick: 5346,
type: 'hihat'
}, {
- tick: 5409,
+ tick: 5347,
type: 'kick'
}, {
- tick: 5425,
+ tick: 5363,
type: 'hihat'
}, {
- tick: 5434,
+ tick: 5372,
type: 'kick'
}, {
- tick: 5440,
+ tick: 5378,
type: 'hihat'
}, {
- tick: 5443,
+ tick: 5381,
type: 'snare'
}, {
- tick: 5458,
+ tick: 5396,
type: 'snare'
}, {
- tick: 5478,
+ tick: 5416,
type: 'tom1'
}, {
- tick: 5486,
+ tick: 5424,
type: 'snare'
}, {
- tick: 5493,
+ tick: 5431,
type: 'snare'
}, {
- tick: 5502,
+ tick: 5440,
type: 'snare'
}, {
- tick: 5509,
+ tick: 5447,
type: 'snare'
}, {
- tick: 5525,
+ tick: 5463,
type: 'snare'
}, {
- tick: 5531,
+ tick: 5469,
type: 'snare'
}, {
- tick: 5544,
+ tick: 5482,
type: 'kick'
}, {
- tick: 5544,
+ tick: 5482,
type: 'crash1'
}, {
- tick: 5578,
+ tick: 5516,
type: 'snare'
}, {
- tick: 5595,
+ tick: 5533,
type: 'snare'
}, {
- tick: 5612,
+ tick: 5550,
type: 'hihat'
}, {
- tick: 5622,
+ tick: 5560,
type: 'kick'
}, {
- tick: 5631,
+ tick: 5569,
type: 'hihat'
}, {
- tick: 5646,
+ tick: 5584,
type: 'snare'
}, {
- tick: 5648,
+ tick: 5586,
type: 'crash1'
}, {
- tick: 5663,
+ tick: 5601,
type: 'crash1'
}, {
- tick: 5664,
+ tick: 5602,
type: 'snare'
}, {
- tick: 5680,
+ tick: 5618,
type: 'hihat'
}, {
- tick: 5682,
+ tick: 5620,
type: 'kick'
}, {
- tick: 5697,
+ tick: 5635,
type: 'hihat'
}, {
- tick: 5705,
+ tick: 5643,
type: 'kick'
}, {
- tick: 5714,
+ tick: 5652,
type: 'hihat'
}, {
- tick: 5715,
+ tick: 5653,
type: 'snare'
}, {
- tick: 5732,
+ tick: 5670,
type: 'snare'
}, {
- tick: 5732,
+ tick: 5670,
type: 'hihat'
}, {
- tick: 5749,
+ tick: 5687,
type: 'snare'
}, {
- tick: 5764,
+ tick: 5702,
type: 'snare'
}, {
- tick: 5782,
+ tick: 5720,
type: 'tom1'
}, {
- tick: 5798,
+ tick: 5736,
type: 'tom1'
}, {
- tick: 5806,
+ tick: 5744,
type: 'tom1'
}, {
- tick: 5819,
+ tick: 5757,
type: 'crash1'
}, {
- tick: 5819,
+ tick: 5757,
type: 'kick'
}, {
- tick: 5839,
+ tick: 5777,
type: 'kick'
}, {
- tick: 5850,
+ tick: 5788,
type: 'kick'
}, {
- tick: 5854,
+ tick: 5792,
type: 'hihat'
}, {
- tick: 5856,
+ tick: 5794,
type: 'snare'
}, {
- tick: 5871,
+ tick: 5809,
type: 'snare'
}, {
- tick: 5871,
+ tick: 5809,
type: 'hihat'
}, {
- tick: 5888,
+ tick: 5826,
type: 'hihat'
}, {
- tick: 5890,
+ tick: 5828,
type: 'kick'
}, {
- tick: 5907,
+ tick: 5845,
type: 'kick'
}, {
- tick: 5917,
+ tick: 5855,
type: 'kick'
}, {
- tick: 5919,
+ tick: 5857,
type: 'hihat'
}, {
- tick: 5925,
+ tick: 5863,
type: 'snare'
}, {
- tick: 5938,
+ tick: 5876,
type: 'snare'
}, {
- tick: 5940,
+ tick: 5878,
type: 'hihat'
}, {
- tick: 5956,
+ tick: 5894,
type: 'hihat'
}, {
- tick: 5956,
+ tick: 5894,
type: 'kick'
}, {
- tick: 5973,
+ tick: 5911,
type: 'hihat'
}, {
- tick: 5978,
+ tick: 5916,
type: 'kick'
}, {
- tick: 5987,
+ tick: 5925,
type: 'hihat'
}, {
- tick: 5989,
+ tick: 5927,
type: 'snare'
}, {
- tick: 6006,
+ tick: 5944,
type: 'snare'
}, {
- tick: 6006,
+ tick: 5944,
type: 'hihat'
}, {
- tick: 6024,
+ tick: 5962,
type: 'snare'
}, {
- tick: 6039,
+ tick: 5977,
type: 'snare'
}, {
- tick: 6057,
+ tick: 5995,
type: 'tom1'
}, {
- tick: 6065,
+ tick: 6003,
type: 'tom1'
}, {
- tick: 6074,
+ tick: 6012,
type: 'tom1'
}, {
- tick: 6082,
+ tick: 6020,
type: 'tom1'
}, {
- tick: 6092,
+ tick: 6030,
type: 'crash1'
}, {
- tick: 6093,
+ tick: 6031,
type: 'kick'
}, {
- tick: 6111,
+ tick: 6049,
type: 'kick'
}, {
- tick: 6119,
+ tick: 6057,
type: 'kick'
}, {
- tick: 6126,
+ tick: 6064,
type: 'hihat'
}, {
- tick: 6128,
+ tick: 6066,
type: 'snare'
}, {
- tick: 6144,
+ tick: 6082,
type: 'snare'
}, {
- tick: 6144,
+ tick: 6082,
type: 'hihat'
}, {
- tick: 6160,
+ tick: 6098,
type: 'hihat'
}, {
- tick: 6162,
+ tick: 6100,
type: 'kick'
}, {
- tick: 6178,
+ tick: 6116,
type: 'hihat'
}, {
- tick: 6181,
+ tick: 6119,
type: 'kick'
}, {
- tick: 6194,
+ tick: 6132,
type: 'hihat'
}, {
- tick: 6194,
+ tick: 6132,
type: 'snare'
}, {
- tick: 6211,
+ tick: 6149,
type: 'snare'
}, {
- tick: 6211,
+ tick: 6149,
type: 'hihat'
}, {
- tick: 6228,
+ tick: 6166,
type: 'hihat'
}, {
- tick: 6229,
+ tick: 6167,
type: 'kick'
}, {
- tick: 6246,
+ tick: 6184,
type: 'hihat'
}, {
- tick: 6255,
+ tick: 6193,
type: 'kick'
}, {
- tick: 6261,
+ tick: 6199,
type: 'hihat'
}, {
- tick: 6280,
+ tick: 6218,
type: 'snare'
}, {
- tick: 6282,
+ tick: 6220,
type: 'hihat'
}, {
- tick: 6298,
+ tick: 6236,
type: 'snare'
}, {
- tick: 6305,
+ tick: 6243,
type: 'snare'
}, {
- tick: 6316,
+ tick: 6254,
type: 'snare'
}, {
- tick: 6333,
+ tick: 6271,
type: 'tom1'
}, {
- tick: 6339,
+ tick: 6277,
type: 'tom1'
}, {
- tick: 6344,
+ tick: 6282,
type: 'tom1'
}, {
- tick: 6369,
+ tick: 6307,
type: 'kick'
}, {
- tick: 6370,
+ tick: 6308,
type: 'crash1'
}, {
- tick: 6385,
+ tick: 6323,
type: 'kick'
}, {
- tick: 6385,
+ tick: 6323,
type: 'crash1'
}, {
- tick: 6460,
+ tick: 6398,
type: 'kick'
}]
}, {
name: "Level 2",
@@ -2339,10 +2339,10 @@
// --- TEST MODE: Show timeline and tick counter for sync debugging ---
var TEST_MODE = true; // Set to true to enable timeline and tick counter
var timelineBar = null;
var tickCounterTxt = null;
-// Timeline bar (shows song progress) -- only in TEST_MODE
if (TEST_MODE) {
+ // Timeline bar (shows song progress)
timelineBar = new Container();
var barBg = LK.getAsset('crash1Pad', {
anchorX: 0,
anchorY: 0,
@@ -2361,35 +2361,34 @@
timelineBar.addChild(barFg);
timelineBar.x = 100;
timelineBar.y = LK.gui.top.height - 60;
LK.gui.top.addChild(timelineBar);
-}
-// Tick counter (always visible)
-tickCounterTxt = new Text2('Tick: 0', {
- size: 48,
- fill: "#fff"
-});
-tickCounterTxt.anchor.set(0, 0.5);
-tickCounterTxt.x = 100;
-tickCounterTxt.y = LK.gui.top.height - 100;
-LK.gui.top.addChild(tickCounterTxt);
-// Update timeline and tick counter every frame
-var lastTimelineUpdateTick = -1;
-var songTotalTicks = songNotes.length > 0 ? songNotes[songNotes.length - 1].tick : 1;
-game.update = function (origUpdate) {
- return function () {
- if (origUpdate) {
- origUpdate.apply(this, arguments);
- }
- if (isPlaying) {
- var relTick = LK.ticks - songStartTick;
- tickCounterTxt.setText('Tick: ' + relTick);
- // Timeline bar (only in TEST_MODE)
- if (TEST_MODE && timelineBar && typeof barFg !== "undefined") {
+ // Tick counter
+ tickCounterTxt = new Text2('Tick: 0', {
+ size: 48,
+ fill: "#fff"
+ });
+ tickCounterTxt.anchor.set(0, 0.5);
+ tickCounterTxt.x = 100;
+ tickCounterTxt.y = LK.gui.top.height - 100;
+ LK.gui.top.addChild(tickCounterTxt);
+ // Update timeline and tick counter every frame
+ var lastTimelineUpdateTick = -1;
+ var songTotalTicks = songNotes.length > 0 ? songNotes[songNotes.length - 1].tick : 1;
+ game.update = function (origUpdate) {
+ return function () {
+ if (origUpdate) {
+ origUpdate.apply(this, arguments);
+ }
+ if (isPlaying && TEST_MODE) {
// Update songTotalTicks in case level changed
songTotalTicks = songNotes.length > 0 ? songNotes[songNotes.length - 1].tick : 1;
+ var relTick = LK.ticks - songStartTick;
+ // Timeline bar
var progress = Math.min(1, (relTick + NOTE_OFFSET_TICKS) / songTotalTicks);
barFg.width = (LK.gui.top.width - 200) * progress;
+ // Tick counter
+ tickCounterTxt.setText('Tick: ' + relTick);
}
- }
- };
-}(game.update);
\ No newline at end of file
+ };
+ }(game.update);
+}
\ No newline at end of file
birebir aynısı sadece SNARE yerine TOM yazsın ve butonunun rengi yeşil olsun. ve yazı paralel bir şekilde duĢz hizada olsun Transparent background. Blank background.
butonun altını gri yap ve yazıyı birazcık daha buĢyuĢlt
birebir aynısı sadece HI_HAT yerine CRASH yazsın ve butonunun rengi açık mor lila olsun. Transparent background. Blank background.
ortadaki ışıktan yukarı dogĢru hafif soluk ısık huĢzmeleri çıksın
mavi versiyonunu yap
yeşil versiyonunu yap
sarı versiyonunu yap
lil rengi versiyonunu yap
make hand signs smaller but more crowded lightly blended into the background flu
transparent blank background
he is holding drumstick
make the next frame when he is hitting the drums while grin smile with one's teeth showing, his hands are down and drumstick are on the drums
add drum sticks held on both sides
no perspective all parralel lines from birdswiew
Game title text
make it red
make flames thinner and more straight and even, align the flames exactly on the lines on the lane edges
make it ice blue
A magnificent rock concert stage, spotlights pointed straight in the middle, with a large audience seen in silhouette from behind. Retro arcade game style detailed pixel art. In-Game asset. flat
Add pixel cool crazy drummer, with glasses and gray bandana, red tshirt, long black hair, playing drums