snippets / GuestWednesday / 

All GuestWednesday's snippets (2)

  1. rockvocals.php

    CLI PHP script that outputs files based on vocals part information in Rock Band MIDI files.

      1 #!php
    2 <?php
    3
    4 error_reporting(E_ALL);
    5 require('./classes/midi.class.php');
    6
    7
    8 function processFile($file, $options) {
    9 $midi = new Midi();
    10 $midi->importMid($file);
    11 $track = $midi->getTrack(0);
    12 // Find track name so we can rename output file
    13 foreach ($track as $msgStr){
    14 $msg = explode(' ',$msgStr);
    15 if ($msg[1]=='Meta'&&$msg[2]=='TrkName') {
    16 $newname = substr($msgStr,strpos($msgStr,'"')+1,-1);
    17 if ($options['verbose']) echo "$file -> $newname\n";
    18 }
    19 }
    20 if (!isset($newname)) {
    21 echo "No Track 0 Meta TrkName for $file - is it a Rock Band MIDI?\n"; exit(1);
    22 }
    23 $midi->soloTrack(4); // delete all non-vocal tracks, leaving track 1
    24 $midi->newTrack(); // add a track for percussion (returns wrong number, but I know it's track 2)
    25 $ch = 'ch=4'; // mostly channel 4 is used, overwrite with what we find later
    26 $lyrics = array(); $notes = array();
    27 $slides = array(); $slide = false;
    28 $notelist = $midi->getNoteList();
    29 foreach ($notelist as $k=>$v) {
    30 $notelist[$k] = substr($v,0,1); // remove octave number
    31 if (strlen($v)==3) $notelist[$k] .= '#'; // # looks a bit like a talky, but I don't like s for sharp
    32 }
    33 $mc = $midi->getMsgCount(1);
    34 for ($i=0; $i<$mc; $i++) {
    35 $msg = explode(' ',$midi->getMsg(1,$i));
    36 if ($msg[1]=='Meta') {
    37 if ($msg[2]=='Text' && substr($msg[3],1,1)=='[') {
    38 // Delete all Meta Text that starts with '[',
    39 // it breaks many MIDI parsers and we're not interested in it
    40 $midi->deleteMsg(1,$i);
    41 $i--;
    42 $mc--;
    43 } else if ($msg[2]=='Text' || $msg[2]=='Lyric') {
    44 $l = substr($msg[3],1,-1);
    45 $lyrics[] = $l;
    46 if ($l=='+') {
    47 $slide = count($lyrics)-1;
    48 }
    49 }
    50 } else if ($msg[1]=='On'){
    51 $ch = $msg[2];
    52 $n = substr($msg[3],2)+0;
    53 if ($n<36 || $n>95) { // not a musical note
    54 $midi->deleteMsg(1,$i);
    55 $i--;
    56 $mc--;
    57 if ($n==96) {
    58 $msg[2]='ch=10'; // MIDI percussion channel
    59 $msg[3]=$options['midi_percussion'];
    60 $midi->addMsg(2, implode(' ',$msg));
    61 } else if (($n==105 || $n==106) &&
    62 $msg[4]=='v=0' && (count($lyrics)==0 ||
    63 substr($lyrics[count($lyrics)-1],-1,1)!="\n")) {
    64 // Ignore Player 1/2 info, just start a new phrase here
    65 $lyrics[] = "\n";
    66 $notes[] = "\n";
    67 }
    68 } else if (substr($msg[4],2) > 0) { // musical note on
    69 $msg[4]=='v=127';
    70 $midi->tracks[1][$i] = implode(' ',$msg);
    71 $notes[] = $n;
    72 } else { // musical note off
    73 $lastofftime = $msg[0]+0;
    74 $lastoffnote = $n;
    75 }
    76 }
    77 if ($options['enable_slides'] && $slide && count($notes)-1 >= $slide) {
    78 $slides[] = array($lastofftime, $lastoffnote, $msg[0], $notes[$slide]);
    79 $slide = false;
    80 }
    81 }
    82
    83
    84 if ($options['enable_txt']) {
    85 $txtl =''; $txtn=''; $txt='';
    86 foreach ($lyrics as $k=>$l) {
    87 if ($l!="\n") {
    88 $mod = substr($l,-1,1);
    89 if ($mod=='#' || $mod=='^' || $mod=='*') {
    90 // Known talkie part.
    91 // Show modifier symbol in place of note instead of in lyric.
    92 $l = substr($l,0,-1);
    93 $n = $mod;
    94 if (substr($l,-1,1)!='-') {
    95 $l .= ' ';
    96 }
    97 } else {
    98 // Leave unknown symbols like = and % in lyric for now
    99 if ($mod != '-') {
    100 $l = $l.' ';
    101 }
    102 $n = $notelist[$notes[$k]];
    103 }
    104
    105 if (strlen($l) > strlen($n)+1) {
    106 $txtn .= str_pad($n,strlen($l),' ');
    107 $txtl .= $l;
    108 } else {
    109 $txtn .= $n.' ';
    110 $txtl .= str_pad($l,strlen($n)+1,' ');
    111 }
    112 } else {
    113 $txt .= $txtn."\r\n".$txtl."\r\n\r\n";
    114 $txtl =''; $txtn='';
    115 }
    116 }
    117 $write = fopen($newname.'.txt', 'w');
    118 fwrite($write, $txt);
    119 fclose($write);
    120 }
    121 if ($options['enable_midi'] || $options['enable_midixml']) {
    122 if ($options['enable_slides']) {
    123 foreach ($slides as $g) {
    124 $x0 = $g[0]; $y0 = $g[1];
    125 $x1 = $g[2]; $y1 = $g[3];
    126 if ($options['slide_type']=='glissando') {
    127 $dx = $x1-$x0;
    128 $dy = $y1-$y0;
    129 if ($dx>0) {
    130 $m = $dy/$dx;
    131 $b = $y0-$m*$x0;
    132 $lastnote = $y0;
    133 $midi->insertMsg(1, "$x0 On $ch n=$y0 v=127");
    134 while ($x0 != $x1) {
    135 $x0++;
    136 $y0 = round($m*$x0 + $b);
    137 if (($m>0 && $y0 > $lastnote) || ($m<0 && $y0 < $lastnote)) {
    138 $midi->insertMsg(1, ($x0-1+1)." On $ch n=$lastnote v=0");
    139 $midi->insertMsg(1, "$x0 On $ch n=$y0 v=127");
    140 $lastnote=$y0;
    141 }
    142 }
    143 $midi->insertMsg(1, "$x1 On $ch n=$lastnote v=0");
    144 }
    145 } else if ($options['slide_type']=='portamento') {
    146 $midi->insertMsg(1, "$x0 Par $ch c=65 v=127"); // portamento: on
    147 $t = $x1-$x0; // almost certainly wrong calculation since 0 is the "slowest rate"
    148 $midi->insertMsg(1, "$x0 Par $ch c=5 v=".(($t >> 7) & 0x7f)); // portamento time MSB
    149 $midi->insertMsg(1, "$x0 Par $ch c=37 v=".($t & 0x7f)); // portamento time LSB
    150 $midi->insertMsg(1, "$x0 On $ch n=$y0 v=127");
    151 $midi->insertMsg(1, "$x1 On $ch n=$y0 v=0");
    152 $midi->insertMsg(1, "$x0 On $ch n=$y1 v=127");
    153 $midi->insertMsg(1, "$x1 On $ch n=$y1 v=0");
    154 $midi->insertMsg(1, "$x0 Par $ch c=65 v=0"); // portamento: off
    155 } else if ($options['slide_type']=='pitchbend') {
    156 $midi->insertMsg(1, "$x0 On $ch n=$y0 v=127");
    157 $midi->insertMsg(1, "$x1 On $ch n=$y0 v=0");
    158 // TODO lots of carefully timed pitch bend instructions (these are very wrong)
    159 /* 0x2000 is center position
    160 * 0x0000 is two semitones down
    161 * 0x3fff is two semitones up
    162 */
    163 $t = $x1-$x0;
    164 for ($i=0; $i<$t; $i+=8) {
    165 $midi->insertMsg(1, $i+$x0." Pb $ch v=".round(0x2000+0x1fff*($i/$t)));
    166 }
    167 $midi->insertMsg(1, "$x1 Pb $ch v=2000");
    168 // TODO maybe combine with glissando? similar functionality needed for bigger intervals
    169 }
    170 }
    171 }
    172 $midi->insertMsg(1, "0 PrCh $ch ".$options['midi_instrument']);
    173 if ($options['enable_midi']) {
    174 $midi->saveMidFile($newname.'.mid');
    175 }
    176 if ($options['enable_midixml']) {
    177 $write = fopen($newname.'.xml', 'w');
    178 fwrite($write, $midi->getXml());
    179 fclose($write);
    180 }
    181 }
    182 }
    183
    184 function help($arg0) {
    185 echo "Usage: $arg0 [OPTION]... [--files] [FILE]...\n";
    186 ?>
    187 Output files based on vocals part information in Rock Band MIDI files. Files are
    188 created in the current directory and named based on information found in the
    189 input file (for example, wontgetfooled_short.mid).
    190
    191 MIDI OPTIONS
    192 --disable-midi don't output a standard MIDI file
    193 --enable-midi do output a standard MIDI file (default)
    194 --enable-midixml do output a MIDI XML file
    195 --disable-midixml don't output a MIDI XML file (default)
    196 --enable-slides add slides to the MIDI file where the game would have
    197 diagonal note tubes (default)
    198 --disable-slides don't add slides to the MIDI file where the game would
    199 have diagonal note tubes
    200 --slide-type=TYPE one of:
    201 glissando (play every note in between) (default)
    202 portamento (broken)
    203 pitchbend (broken)
    204 --midi-instrument=P MIDI instrument number between 1 and 128 for normal
    205 notes (default is 81 Lead 1 (square), try 19 Rock Organ)
    206 --midi_percussion=N MIDI percussion note between 0 and 127 for percussion
    207 section (default is 39 Hand Clap, try 54 Tambourine or
    208 56 Cowbell)
    209
    210 TEXT FILE OPTIONS
    211 --enable-txt output a text file (default)
    212 --disable-txt don't output a text file
    213
    214 OTHER OPTIONS
    215 --verbose do show some file info while processing (default)
    216 --quiet don't show some file info while processing
    217 --help show this help
    218 --files the remainder of the paramaters are input filenames
    219 (optional, not normally needed)
    220 <?php
    221 exit(0);
    222 }
    223
    224 function processArguments($argv) {
    225 //default options:
    226 $options['enable_midi'] = true;
    227 $options['enable_txt'] = true;
    228 $options['enable_midixml'] = false;
    229 $options['midi_instrument'] = 'p=80'; // 80=Lead 1 (square), 18=Rock Organ
    230 $options['midi_percussion'] = 'n=39'; // 39=hand clap, 54=tambourine, 56=cowbell)
    231 $options['enable_slides'] = true;
    232 $options['slide_type'] = 'glissando';
    233 $options['verbose'] = true;
    234
    235 $processingOptions = true;
    236 if (count($argv)==1) help($argv[0]);
    237 $args = array_slice($argv,1);
    238 foreach ($args as $arg) {
    239 if ($processingOptions) {
    240 if (substr($arg,0,1)=='-') {
    241 if ($arg=='--disable-midi') {
    242 $options['enable_midi'] = false;
    243 } else if ($arg=='--enable-midi') {
    244 $options['enable_midi'] = true;
    245 } else if ($arg=='--disable-txt') {
    246 $options['enable_txt'] = false;
    247 } else if ($arg=='--enable-txt') {
    248 $options['enable_txt'] = true;
    249 } else if ($arg=='--disable-midixml') {
    250 $options['enable_midixml'] = false;
    251 } else if ($arg=='--enable-midixml') {
    252 $options['enable_midixml'] = true;
    253 } else if ($arg=='--enable-slides') {
    254 $options['enable_slides'] = false;
    255 } else if ($arg=='--disable-slides') {
    256 $options['enable_slides'] = true;
    257 } else if ($arg=='--verbose') {
    258 $options['verbose'] = true;
    259 } else if ($arg=='--quiet') {
    260 $options['verbose'] = false;
    261 } else if (substr($arg,0,13)=='--slide-type=') {
    262 $options['slide_type'] = substr($arg,13);
    263 } else if (substr($arg,0,18)=='--midi-instrument=') {
    264 $p = substr($arg,18)-1;
    265 if ($p>=1 && $p<=128) {
    266 $options['midi_instrument'] = "p=$p";
    267 } else {
    268 echo "MIDI instrument should be between 1 and 128.\n"; exit(1);
    269 }
    270 } else if (substr($arg,0,18)=='--midi-percussion=') {
    271 $n = substr($arg,18);
    272 if ($n>=0 && $n<=127) {
    273 $options['percussion'] = "n=$n";
    274 } else {
    275 echo "MIDI percussion note should be between 0 and 127.\n"; exit(1);
    276 }
    277 } else if ($arg=='--help') {
    278 help($argv[0]);
    279 } else if ($arg=='--files') {
    280 $processingOptions = false;
    281 }
    282 } else {
    283 $processingOptions = false;
    284 processFile($arg, $options);
    285 }
    286 } else {
    287 processFile($arg, $options);
    288 }
    289 }
    290 }
    291
    292
    293
    294
    295
    296
    297
    298 // Main entry
    299
    300
    301 processArguments($argv);
    302 ?>
    first posted by GuestWednesday to php rock band ... saved by 1 person ... 0 comments ... 8 months
  2. scoreherogoldstarcutoffs.user.js

    Greasemonkey script, prerelease version Adds a field to show the gold star cutoffs for (some) solo instruments on Scorehero: RockBand.

      1 // ==UserScript==
    2 // @name ScoreHero - Gold Star Cutoffs - Solo Instruments
    3 // @version 1.2
    4 // @description Adds a field to show the gold star cutoffs for all solo instruments on Scorehero: RockBand.
    5 // @include http://rockband.scorehero.com/manage_scores.php?*
    6 // @include http://rockband.scorehero.com/scores.php?*
    7 // @author based on original code of Jason MacLean
    8 // @author modified by qirex
    9 // @author modified by GuestWednesday
    10 // @author maintained by de1337ed
    11 // ==/UserScript==
    12
    13 // Replace all non numeric characters with empty strings
    14 function removeNonNumbers(strValue) {
    15 return strValue.replace(/[^0-9]/g,'');
    16 }
    17
    18 // Format an integer with commas
    19 function addCommas(nStr)
    20 {
    21 nStr += '';
    22 x = nStr.split('.');
    23 x1 = x[0];
    24 x2 = x.length > 1 ? '.' + x[1] : '';
    25 var rgx = /(\d+)(\d{3})/;
    26 while (rgx.test(x1)) {
    27 x1 = x1.replace(rgx, '$1' + ',' + '$2');
    28 }
    29 return x1 + x2;
    30 }
    31
    32 var searchString = document.location.search;
    33 // strip off the leading '?'
    34 searchString = searchString.substring(1);
    35 var nvPairs = searchString.split("&");
    36 for (i = 0; i < nvPairs.length; i++)
    37 {
    38 var nvPair = nvPairs[i].split("=");
    39 if (nvPair[0]=='group'){
    40 var group = nvPair[1];
    41 } else if (nvPair[0]=='diff'){
    42 var diff = nvPair[1];
    43 } else if (nvPair[0]=='size'){
    44 var size = nvPair[1];
    45 } else if (nvPair[0]=='platform'){
    46 var platform = nvPair[1];
    47 }
    48 }
    49
    50 // Exit if difficulty isn't expert
    51 if (diff!=4) return;
    52
    53 var songs = [
    54 "Blitzkrieg Bop",
    55 "In Bloom",
    56 "Say it Ain't So",
    57 "Maps",
    58 "Paranoid",
    59 "Creep",
    60 "Learn to Fly",
    61 "I Think I'm Paranoid",
    62 "Pleasure (Pleasure)",
    63 "Go With the Flow",
    64 "(Don't Fear) The Reaper",
    65 "Here It Goes Again",
    66 "Epic",
    67 "Time We Had",
    68 "Orange Crush",
    69 "Black Hole Sun",
    70 "Dani California",
    71 "29 Fingers",
    72 "Should I Stay or Should I Go",
    73 "Sabotage",
    74 "Celebrity Skin",
    75 "Vasoline",
    76 "Nightmare",
    77 "The Hand That Feeds",
    78 "Ballroom Blitz",
    79 "Wave of Mutilation",
    80 "Main Offender",
    81 "Brainpower",
    82 "Cherub Rock",
    83 "Wanted Dead or Alive",
    84 "When You Were Young",
    85 "Dead on Arrival",
    86 "Detroit Rock City",
    87 "Outside",
    88 "Reptilia",
    89 "Enter Sandman",
    90 "Are You Gonna Be My Girl",
    91 "Electric Version",
    92 "Flirtin' With Disaster",
    93 "Blood Doll",
    94 "Next To You",
    95 "Green Grass and High Tides",
    96 "Gimme Shelter",
    97 "Mississippi Queen",
    98 "Train Kept a Rollin'",
    99 "Seven",
    100 "Won't Get Fooled Again",
    101 "Welcome Home",
    102 "Suffragette City",
    103 "Day Late, Dollar Short",
    104 "Highway Star",
    105 "Tom Sawyer",
    106 "Run to the Hills",
    107 "Foreplay/Long Time",
    108 "I Get By",
    109 "I'm So Sick",
    110 "Timmy & the Lords of the Underworld",
    111 "Can't Let Go",
    112 "...And Justice For All",
    113 "3's & 7's",
    114 "Action",
    115 "All the Small Things",
    116 "Attack",
    117 "Bang a Gong",
    118 "Beethoven's C***",
    119 "Blackened",
    120 "Blinded By Fear",
    121 "Brass In Pocket",
    122 "Buddy Holly",
    123 "Calling Dr. Love",
    124 "Can't Stand Losing You",
    125 "Casey Jones",
    126 "Cherry Bomb",
    127 "China Cat Sunflower",
    128 "Complete Control",
    129 "Crushcrushcrush",
    130 "D.O.A.",
    131 "Die, All Right!",
    132 "Dirty Little Secret",
    133 "Don't Look Back in Anger",
    134 "El Scorcho",
    135 "Ever Fallen in Love",
    136 "Fortunate Son",
    137 "Franklin's Tower",
    138 "Gimme Three Steps",
    139 "Hard To Handle",
    140 "Heroes",
    141 "Hitch a Ride",
    142 "I Fought the Law",
    143 "I Need A Miracle",
    144 "Interstate Love Song",
    145 "Joker & The Thief",
    146 "Juke Box Hero",
    147 "Last Train to Clarksville",
    148 "Limelight",
    149 "Little Sister",
    150 "Live Forever",
    151 "March Of The Pigs",
    152 "Moonage Daydream",
    153 "More Than a Feeling",
    154 "Move Along",
    155 "My Iron Lung",
    156 "My Sharona",
    157 "N.I.B.",
    158 "Peace of Mind",
    159 "Queen Bitch",
    160 "Ride the Lightning",
    161 "Roam",
    162 "Rock & Roll Band",
    163 "Rock Rebellion",
    164 "Rockaway Beach",
    165 "Roxanne",
    166 "Sex Type Thing",
    167 "Shake",
    168 "Shockwave",
    169 "Sick, Sick, Sick",
    170 "Siva",
    171 "Smokin",
    172 "Something About You",
    173 "Song With a Mission",
    174 "Sprode",
    175 "Sugar Magnolia",
    176 "Sweet Leaf",
    177 "Synchronicity II",
    178 "Teenage Lobotomy",
    179 "Ten Speed (Of God's Blood And Burial)",
    180 "The Collector",
    181 "The Kill",
    182 "The Number of the Beast",
    183 "The Perfect Drug",
    184 "Thrasher",
    185 "Truckin",
    186 "Truth Hits Everybody",
    187 "War Pigs",
    188 "We Care A Lot",
    189 "Why Do You Love Me",
    190 "Wonderwall",
    191 "Working Man"
    192 ];
    193 if (platform==1 || platform==2 || platform==3) { // could have separate PS2 (platform=1) scores
    194 if (size==1) {
    195 if (group==1) {
    196 // list all cutoffs in same order as songs, see group==4 for full example
    197 cutoffs = [106358, 187135, 84650, 50924, 101551];
    198 } else if (group==2) {
    199 // list all cutoffs in same order as songs, see group==4 for full example
    200 cutoffs = [71322, 161968, 73780, 72457, 114200];
    201 } else if (group==3) {
    202 // list all cutoffs in same order as songs, see group==4 for full example
    203 cutoffs = [90050, 111525, 134800, 141650, 123675];
    204 } else if (group==4) {
    205 cutoffs = [
    206 131040, // Blitzkrieg Bop
    207 243360, // In Bloom
    208 148080, // Say it Ain't So
    209 132805, // Maps
    210 107640, // Paranoid
    211 173160, // Creep
    212 215280, // Learn to Fly
    213 168480, // I Think I'm Paranoid
    214 127430, // Pleasure (Pleasure)
    215 145080, // Go With the Flow
    216 184925, // (Don't Fear) The Reaper
    217 215280, // Here It Goes Again
    218 253610, // Epic
    219 112320, // Time We Had
    220 141470, // Orange Crush
    221 229320, // Black Hole Sun
    222 219225, // Dani California
    223 111015, // 29 Fingers
    224 170730, // Should I Stay or Should I Go
    225 135720, // Sabotage
    226 201240, // Celebrity Skin
    227 121680, // Vasoline
    228 113640, // Nightmare
    229 187200, // The Hand That Feeds
    230 272400, // Ballroom Blitz
    231 70200, // Wave of Mutilation
    232 91795, // Main Offender
    233 102960, // Brainpower
    234 159120, // Cherub Rock
    235 145080, // Wanted Dead or Alive
    236 159120, // When You Were Young
    237 210420, // Dead on Arrival
    238 154330, // Detroit Rock City
    239 212545, // Outside
    240 191825, // Reptilia
    241 182520, // Enter Sandman
    242 179480, // Are You Gonna Be My Girl
    243 163800, // Electric Version
    244 190215, // Flirtin' With Disaster
    245 168480, // Blood Doll
    246 219960, // Next To You
    247 140000, // Green Grass and High Tides
    248 191270, // Gimme Shelter
    249 91240, // Mississippi Queen
    250 222530, // Train Kept a Rollin'
    251 290160, // Seven
    252 260945, // Won't Get Fooled Again
    253 276120, // Welcome Home
    254 252720, // Suffragette City
    255 186395, // Day Late, Dollar Short
    256 280525, // Highway Star
    257 160455, // Tom Sawyer
    258 177840, // Run to the Hills
    259 252485, // Foreplay/Long Time
    260 249110, // I Get By
    261 121680, // I'm So Sick
    262 131040, // Timmy & the Lords of the Underworld
    263 131040, // Can't Let Go
    264 226880, // ...And Justice For All
    265 150275, // 3's & 7's
    266 177840, // Action
    267 152580, // All the Small Things
    268 219960, // Attack
    269 182520, // Bang a Gong
    270 210600, // Beethoven's C***
    271 218725, // Blackened
    272 107640, // Blinded By Fear
    273 145080, // Brass In Pocket
    274 163800, // Buddy Holly
    275 155260, // Calling Dr. Love
    276 201240, // Can't Stand Losing You
    277 213600, // Casey Jones
    278 154440, // Cherry Bomb
    279 165175, // China Cat Sunflower
    280 201240, // Complete Control
    281 257400, // Crushcrushcrush
    282 157815, // D.O.A.
    283 149760, // Die, All Right!
    284 196560, // Dirty Little Secret
    285 222835, // Don't Look Back in Anger
    286 215280, // El Scorcho
    287 140400, // Ever Fallen in Love
    288 131040, // Fortunate Son
    289 214350, // Franklin's Tower
    290 205785, // Gimme Three Steps
    291 210420, // Hard To Handle
    292 177840, // Heroes
    293 174440, // Hitch a Ride
    294 154400, // I Fought the Law
    295 200310, // I Need A Miracle
    296 113695, // Interstate Love Song
    297 155260, // Joker & The Thief
    298 177410, // Juke Box Hero
    299 205115, // Last Train to Clarksville
    300 156385, // Limelight
    301 135720, // Little Sister
    302 218475, // Live Forever
    303 107640, // March Of The Pigs
    304 163455, // Moonage Daydream
    305 137985, // More Than a Feeling
    306 205920, // Move Along
    307 187200, // My Iron Lung
    308 171510, // My Sharona
    309 181050, // N.I.B.
    310 202450, // Peace of Mind
    311 201240, // Queen Bitch
    312 179730, // Ride the Lightning
    313 203865, // Roam
    314 182035, // Rock & Roll Band
    315 182520, // Rock Rebellion
    316 187200, // Rockaway Beach
    317 107640, // Roxanne
    318 182520, // Sex Type Thing
    319 268510, // Shake
    320 137915, // Shockwave
    321 168480, // Sick, Sick, Sick
    322 123000, // Siva
    323 162315, // Smokin
    324 168480, // Something About You
    325 186090, // Song With a Mission
    326 210600, // Sprode
    327 217280, // Sugar Magnolia
    328 203060, // Sweet Leaf
    329 191325, // Synchronicity II
    330 102960, // Teenage Lobotomy
    331 165245, // Ten Speed (Of God's Blood And Burial)
    332 154440, // The Collector
    333 154440, // The Kill
    334 185605, // The Number of the Beast
    335 215280, // The Perfect Drug
    336 126360, // Thrasher
    337 243360, // Truckin
    338 190950, // Truth Hits Everybody
    339 134820, // War Pigs
    340 191880, // We Care A Lot
    341 238680, // Why Do You Love Me
    342 172355, // Wonderwall
    343 184495 // Working Man
    344 ];
    345 } else return;
    346 } else if (size==4) {
    347 // full band scores would go here instead of return
    348 return;
    349 } else return;
    350 } else return;
    351
    352 if (document.URL.substr(30,17)=='manage_scores.php') {
    353 scoreCol = 7; songCol = 5;
    354 } else if (document.URL.substr(30,10)=='scores.php') {
    355 scoreCol = 5; songCol = 3;
    356 } else return;
    357
    358 var trs = document.getElementsByTagName('tr');
    359 for(i = 0; i < trs.length; i++)
    360 {
    361 tds = trs[i].getElementsByTagName('td');
    362 if (tds.length > scoreCol) {
    363 song = songs.indexOf(tds[songCol].textContent);
    364 if (song!=-1) {
    365 scoreCell = tds[scoreCol];
    366 score = removeNonNumbers(scoreCell.textContent);
    367 if(score < cutoffs[song]) {
    368 var difference = cutoffs[song] - score;
    369 scoreCell.innerHTML += '<br/><font color="#CD7F32" style="font-size: 10px">' + addCommas(cutoffs[song]) + '</font> <font color="red" style="font-size:8px">(' + addCommas(difference) + ')</font>';
    370 } else {
    371 // Uncomment the following to show the cutoff in green even if you've already beaten it (for debugging etc)
    372 //scoreCell.innerHTML += '<br/><font color="green" style="font-size: 10px">' + addCommas(cutoffs[song]) + '</font>';
    373 }
    374 }
    375 }
    376 }
    first posted by GuestWednesday to javascript greasemonkey ... saved by 1 person ... 0 comments ... 8 months, 1 week
showing 10, 25, 50 items per pages

Pages : 1