FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 
Vocals Charts/OD phrases (The Beatles: Rock Band)
Goto page 1, 2  Next
 
Post new topic   Reply to topic    ScoreHero Forum Index -> Technique, Style, and Gameplay -> Vocals
View previous topic :: View next topic  
Author Message
ajanata  
 




Joined: 07 Jul 2007
Posts: 1167
Location: South Bay Area, CA

PostPosted: Sun Apr 20, 2008 12:00 am    Post subject: Vocals Charts/OD phrases (The Beatles: Rock Band) Reply with quote

RB 1/2 and DLC | The Beatles: Rock Band and DLC

Related: Guitar/Bass/Guitar+Bass charts - Drum/Drum+Vocal charts - Vocal charts - Vocaltar charts - Full Band charts

Many apologies for not keeping the threads up to date. I wanted to have the RB2 charts up for release, but various technical and scheduling difficulties popped up and prevented it. Oh well, less than a day isn't bad turnaround, is it?

(Note: This message is copy-pasted to every thread, so ignore anything that doesn't apply to the instrument(s) involved as described in the thread title.)

These charts contain per-measure and cumulative scores, OD whammy beats, solo note counts, clock time since the last OD note before a drum activation fill, and BRE estimated upperbound scores.

For the vocals, these charts contain bare-bones vocals charts. Overdrive activation zones are not marked in the .mid as they are for drums, so I suspect any gap between phrases longer than a certain amount of time (either clock time or number of beats, I'm not sure yet) is a valid activation point. I don't have time to do the needed research for this right now, but I hope to get to it Real Soon Now™. The pitch lines are pretty decent at this point, though sometimes they seem to go off the top or bottom for some reason. The talky part indicator characters (#, ^, and *) are left on the lyrics in case anyone wishes to do any experimenting to try to figure out what the different ones mean, if anything. A * by itself is a percussion hit (I would expect this to be rather obvious).

Zip files with all charts removed due to obscene amount of disk space required, sorry.

A big thank you to rkcr, Revelus, and Sully for finding bugs. Thank pata70 for improvements to the vocal pitch lines. Thanks also go out to Krim and PeridotWeapon in this thread for information about solo bonuses and Big Rock Ending scoring. Big shoutout to debr for documenting Rock Band's .mid format and helping with some rounding issues. Kawigi found and described issues with non-x/4 measures which enabled me to fix them, and make a bit of the code much more readable (it was done in SUCH a stupid way and re-coding it made it much easier to read, and worked better, and was simpler. Yay stupid things).

A huge thank you to Deimos for assisting with DLC.

Rock Band 2 notes:

  • Drum solos worked with no code change on my part, hurray! I did have to make it count notes correctly (and not count chords as single notes), but I don't think that qualifies. ;)
  • The delay for a drum activation fill showing up after an OD note has changed! I do not know what the new value is, just that it has changed. This invalidates all drum paths previously created for RB1 and DLC songs.
  • Eventually, I want to indicate hammer-on and pull-off notes on the charts, since they can be manually placed in RB2. This requires (very simple) investigation to determine how they are marked (probably just a flag in the mid with the notes) and an overhaul of the code to be able to draw HOPO notes.


General notes:

  • Vocal "slides" (with the slanty pitch tubes) are not drawn at all. Any time a lyric is a +, pretend that the +'s pitch tube and the previous pitch tube are connected with a slanted pitch tube. I haven't tackled how to handle this between measures yet.
  • If there is a held guitar part note or a vocal note that extends out of or into a measure which is not in x/4 time, there may be issues with drawing the held line. I didn't find any test cases in my (admittingly brief) testing, so I don't know. Please let me know if you find one and it doesn't look right.
  • Overdrive backgrounds extend the exact range specified in the .mid file. Sometimes this is significantly shorter than the length of a sustained note (see third note in Foreplay/Long Time for example).
  • If a solo or BRE ends at the far right of a line, the note count/bonus score can get cut off.
  • The .mid BEAT track is now displayed on every chart. The game uses this to determine how long Overdrive lasts. A full bar of Overdrive always lasts for exactly 32 BEAT track beats. Most of the time this is 16, 32, or 64 noteboard beats, depending on tempo. Sometimes, it isn't (see the first break in Foreplay/Long Time for an example). I don't see the two events in the BEAT track doing different things in the gameplay (perhaps different stage lighting or something but nothing that matters for pathing), so I've drawn them all in the same color. If it isn't obvious, you want to look at the small red lines above every set of lines (this also makes a nice seperator for multi-instrument parts). Note that this DOES NOT affect whammy rate, only usage rate. Whammy is always based on noteboard beats.
  • Band per-measure scores, more or less. This is currently done "stupidly", and does not include vocals. It is "stupid" because it takes each instrument's per-measure score and multiplies it by the instrument's maximum multiplier, regardless of whether such a multiplier is possible yet at that point. Vocals is on the to-do list and maybe a smarter way of doing it.


If you find a problem with these charts not outlined above, please send me a private message and I'll look into it.


FAQ
(Yes, I have been asked some of these more than once.)

Q. What did you use to make these charts?
A. I wrote a program in PHP to parse the .mid files (using a library) and coded the rest from there.

Q. How long does it take to make the charts?
A. I completely revamped my code to do every single chart in one go, so it takes significanly less time than it used to. It also stores the parsed .mid files in a (very large file-size) format which it can read nearly instantaneously, instead of taking several seconds to parse the .mid file every time. For the first batch with 147 songs, it took 42 minutes to parse the files and make guitar, bass, guitar+bass, drums, vocals, voxtar, and full band charts; just generating the images from the cached parses took about 16 minutes.

Q: Can I host a mirror for your charts?
A: Not needed, as the 'official' location for them is now hosted on ScoreHero. Thanks for offering, though.
_________________


Last edited by ajanata on Fri Sep 11, 2009 2:00 pm; edited 7 times in total
Back to top
View user's profile Wiki User Page Send private message Visit poster's website MSN Messenger XBL Gamertag: ajanata
pata70  
 




Joined: 23 Mar 2007
Posts: 426
Location: Canada

PostPosted: Mon Apr 21, 2008 6:10 pm    Post subject: Reply with quote

Great charts!

What is the scale you are using for the vocal charts? In other words, what is the note and octave corresponding to each of the 7 lines on the charts?

+----
+----
+----
+----
+----
+----
+----

Are you using a constant scale for every song, or does each song have its own scale?

Thanks!
_________________
Is life? No. Demorez.
Back to top
View user's profile Send private message XBL Gamertag: pata70
ajanata  
 




Joined: 07 Jul 2007
Posts: 1167
Location: South Bay Area, CA

PostPosted: Mon Apr 21, 2008 6:44 pm    Post subject: Reply with quote

The pitch lines are all wonky. I wouldn't try to use them to actually try to sing the song currently.

How it's calculated:
Code:

                    $nyOffset = $lyric["pitch"] - 55;
                    $nyOffset *= 22/5;
                    $nyOffset = 6*STAFFHEIGHT - $nyOffset;

Which gets a displacement down from the top of the staff, in pixels. I want to neaten it up at some point, but I haven't had time to nail it down just yet.


Also, some overdrive phrases are not being indicated as such. I know why and have fixed it in code, I just haven't regenerated the vocals charts yet. The full band charts have the vocal OD phrases fixed, so use those for the time being. I'll try to have fixed vox-only charts up by the end of the day.
_________________
Back to top
View user's profile Wiki User Page Send private message Visit poster's website MSN Messenger XBL Gamertag: ajanata
pata70  
 




Joined: 23 Mar 2007
Posts: 426
Location: Canada

PostPosted: Mon Apr 21, 2008 8:54 pm    Post subject: Reply with quote

Ok, so if I understand correctly, pitch value 55 corresponds to the top line on the staff. Do you know which note and octave is pitch value 55? Is it the Standard Midi note number, 55 = G4? (Doesn't look like it, if I check some of the songs whose highest note is G4, they don't reach the top of the staff.)

Then all we need to know is the value of STAFFHEIGHT to figure out the rest.

Edit:

No, wait, that doesn't make sense. Higher pitch values should make the note appear higher. Also I remember from another thread that there was a 1 octave offset in the midi values. So now I think that 55 is G3 (after offset adjustment) and corresponds to the bottom of the staff. Correct?

Ok, here's what I suggest. I don't have a musician's background, so maybe this is not the best way to chart it according to musical theory, but it's nice mathematically...

The on-disk songs notes have a range from G2 to G5. That's a 3 octave interval but just a few songs reach near these extremes. You could cover most of the songs with just two octaves, C3 to C5. Maybe this makes sense since the normal C-major scale is C to C.

Your graphical staff has 6 intervals. Each octave has 12 notes. So if we put two octaves in those 6 intervals, that would be exactly 4 notes per interval. Squeezing 3 octaves in those 6 intervals would make it harder to identify notes.

Assuming that:
- STAFFHEIGHT is the height in pixels of just one of those intervals,
- $lyric["pitch"] is a standard midi note value, with one octave offset,
- the final value of $nyOffset is a number of pixels going down from the top of the staff (0 = top of staff),

Then I'd set the code like this:
(C3 is midi note 36, with one octave offset: 48)
(24 notes is two octaves)

Code:

$nyOffset = $lyric["pitch"] - 48;
$nyOffset *= 6*STAFFHEIGHT / 24;
$nyOffset = 6*STAFFHEIGHT - $nyOffset;


Which would make each line's value exactly like this:

+---- C5
+---- G#4
+---- E4
+---- C4
+---- G#3
+---- E3
+---- C3

And the extreme songs would go 1.75 intervals higher (G5, 7 notes) to 1.25 intervals lower (G2, 5 notes).

Another nice thing about this scale is that the middle C (C4) is in the middle of the staff!

Like I said, unless musically it makes more sense to have the bottom line correspond to a G note...
_________________
Is life? No. Demorez.
Back to top
View user's profile Send private message XBL Gamertag: pata70
pata70  
 




Joined: 23 Mar 2007
Posts: 426
Location: Canada

PostPosted: Wed Apr 23, 2008 10:01 pm    Post subject: Reply with quote

Any comment on my suggestion ajanata?

I analyzed some of the charts and observed these are the note values for the lines on your current charts:

+---- ~B4
+---- ~A4
+---- F#4
+---- D#4
+---- ~C4
+---- ~A#3
+---- G3

So your staff covers 16 notes, or about 1.4 octaves.

Some of those notes (marked ~) don't end up exactly on the line, so I don't think the 22/5 in your formula is an even divisor of your STAFFHEIGHT.

Another suggestion I would make, if you do modify the note position calculations, is to add the notes in a small font to the left and/or right of the vocal charts. Either all 7 notes, or perhaps just the 3 C's (C3 / C4 / C5).
_________________
Is life? No. Demorez.
Back to top
View user's profile Send private message XBL Gamertag: pata70
ajanata  
 




Joined: 07 Jul 2007
Posts: 1167
Location: South Bay Area, CA

PostPosted: Sat May 24, 2008 2:34 am    Post subject: Reply with quote

I aplogize for the extremely long delay in getting back to you about this. When you posted that, end of semester projects and finals were eating a lot of my time. Then I took a couple weeks to just relax since the semester was finally over.

The current code to draw the lines is obviously a complete and utter failure. It got it kind of close on the songs I was testing it on, so I was happy with it at the time. Since you have obviously put more time into figuring it out properly than I have, I'm going to try plugging your numbers in and seeing what happens.
pata70 wrote:
Assuming that:
- STAFFHEIGHT is the height in pixels of just one of those intervals,
- $lyric["pitch"] is a standard midi note value, with one octave offset,
- the final value of $nyOffset is a number of pixels going down from the top of the staff (0 = top of staff),

All three of these assumptions are indeed correct. STAFFHEIGHT is a nice define so I can easily change the size of the charts without mucking with all of the code. $lyric["pitch"] is the note value directly from the .mid file. The gd library does indeed go top-to-bottom in coordinates.

I'm going to plug your code snippet in and see what happens.

(Ten minutes later.)

Well, that looks a LOT better. I haven't looked at a whole lot of songs but a couple of them aren't going out of bounds now. Thanks! I'll leave that snippet in for the next rev. of charts (which will be happening tonight after I make a couple more tweaks).
_________________
Back to top
View user's profile Wiki User Page Send private message Visit poster's website MSN Messenger XBL Gamertag: ajanata
pata70  
 




Joined: 23 Mar 2007
Posts: 426
Location: Canada

PostPosted: Sun May 25, 2008 11:50 am    Post subject: Reply with quote

Looks great! Now it's easy to identify the notes. Thanks ajanata!

+---- C5
+---- G#4
+---- E4
+---- C4
+---- G#3
+---- E3
+---- C3
_________________
Is life? No. Demorez.
Back to top
View user's profile Send private message XBL Gamertag: pata70
Kawigi  
 




Joined: 27 Feb 2008
Posts: 2876
Location: Redmond, WA

PostPosted: Thu May 29, 2008 9:48 pm    Post subject: Reply with quote

Since this thread seems to also be an unofficial "help ajanta fix stuff" thread, I thought I'd note that I've also done some work to tabulate points per measure in full band, and I do have an algorithm for vocals (which sounds like it's on your todo list).

I assume that all points are distributed evenly across all the ticks in the phrase that you sing, which isn't technically accurate - a good vocalist will normally fill the "pie" earlier than that, and could even squeeze more to the end, and talking phrases are a completely different animal, but it's the best general-purpose estimation I can think of. Also, I assume (I believe correctly in this case) that the space between notes in the same word also counts as "sung" time.

My code is structured hierarchically, as such:

Quote:

VocalTrack has a list of phrases
Quote:

Phrase has a list of syllables and a start and end that correspond with the start/end of the phrase delimiter notes
Quote:

Syllable has a list of notes. It may represent a tap. If it's not a tap, it may have multiple notes, and the syllable's start is the start of the first note and its end is the end of the last note.
Quote:

Note has the pitch, velocity and start and end times in ticks.





Such a system may be a pain to put together in PHP, I've just added that so that my code will make sense.

Then, VocalTrack has this method. Note that I also take streak multipliers into account, and "start" and "end" are in ticks:

Code:
public int getPointsInPulseRange(int start, int end)
{
   double points = 0;
   int streak = 0;
   for (Phrase p : phrases)
   {
      if (p.getStart() <end> start)
         points += p.pointsInRange(start, end, Math.min(4, 1+streak));
      if (!p.isPercussion())
         streak++;
   }
   return (int)Math.round(points);
}


And Phrase has this method. The "1000.0" should technically be changed to the base value of a phrase in the current difficulty, I'm just always generating numbers for expert:
Code:
public double pointsInRange(int start, int end, int multiplier)
{
   double points = 0;
   if (tamborine)
   {
      for (Syllable s : syllables)
         if (s.getNote(0).startTime >= start && s.getNote(0).startTime < end)
            points += 25;
   }
   else
   {
      int totalLength = 0;
      int lengthInRange = 0;
      for (Syllable s : syllables)
      {
         totalLength += s.endTime()-s.startTime();
         lengthInRange += Math.max(0, Math.min(s.endTime(), end)-Math.max(s.startTime(), start));
      }
      points = multiplier*lengthInRange*1000.0/totalLength;
   }
   return points
}

_________________
Organizer, Vocalist and path factory for Season 9 League Champion band Barre Exam (RB1) and cofounder of Season 10 League Champion band Better Than You --v (RB2) - The #1 band on scorehero
Kawigi's Rock Band Projects
Drum Paths | Star Cutoffs | Scoring Data for Pathing | Notes and Lyrics for Vocalists
Back to top
View user's profile Wiki User Page Send private message MSN Messenger XBL Gamertag: Kawigi
ajanata  
 




Joined: 07 Jul 2007
Posts: 1167
Location: South Bay Area, CA

PostPosted: Fri May 30, 2008 8:17 pm    Post subject: Reply with quote

Yeah, on my charts, if a lyric is a + then pretend there's a slanty line from the previous pitch to the pitch for the +. I believe that the slanty lines get the same weigth as non-slanty lines but I'm not sure. I would just assume they do.

That looks more or less how I was thinking of doing it.
_________________
Back to top
View user's profile Wiki User Page Send private message Visit poster's website MSN Messenger XBL Gamertag: ajanata
BizCasFri  
 




Joined: 01 Feb 2007
Posts: 1833
Location: Winnipeg, MB

PostPosted: Thu Jun 19, 2008 12:31 pm    Post subject: Reply with quote

The links are broken.
_________________
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger XBL Gamertag: UncleGummers
Vosty3  
 




Joined: 07 Jan 2008
Posts: 155
Location: Washington State

PostPosted: Mon Sep 15, 2008 4:41 pm    Post subject: Reply with quote

YAY. Better pathing on its way!!! 4 Every1.
Back to top
View user's profile Send private message Visit poster's website MSN Messenger XBL Gamertag: Vosty3 PSN Name: Vosty3
fcphantom  
 




Joined: 12 Feb 2007
Posts: 875
Location: Menasha, WI

PostPosted: Tue Sep 16, 2008 5:28 pm    Post subject: Reply with quote

ajanata,
You have Souls of Black listed as "Shoulder of Black" in vocals.
_________________
Once-upon-a-time Starpower Podcast host.
Back to top
View user's profile Wiki User Page Send private message Visit poster's website XBL Gamertag: fcphantom
ICES003  
 




Joined: 07 Aug 2008
Posts: 7

PostPosted: Fri Oct 24, 2008 2:46 am    Post subject: Reply with quote

wo to many formula thingsor w/e XD
Back to top
View user's profile Send private message
ajanata  
 




Joined: 07 Jul 2007
Posts: 1167
Location: South Bay Area, CA

PostPosted: Thu Oct 30, 2008 4:49 pm    Post subject: Reply with quote

This week's DLC songs have auto-detected activation zones marked -- verification that they are correct would be nice, if you vocalists would be so kind. I'm pretty sure I've got it right, but would like more confirmation before I spend the time to re-do every single song ever.
_________________
Back to top
View user's profile Wiki User Page Send private message Visit poster's website MSN Messenger XBL Gamertag: ajanata
internetguy87  
 




Joined: 27 Mar 2008
Posts: 3505
Location: Pittsburgh, PA

PostPosted: Wed Apr 01, 2009 9:24 pm    Post subject: Reply with quote

Is it just me or is I'm In Touch With Your World missing from vox charts?
_________________

I play my game online
Back to top
View user's profile Wiki User Page Send private message Yahoo Messenger PSN Name: internetguy87
Display posts from previous:   
Post new topic   Reply to topic    ScoreHero Forum Index -> Technique, Style, and Gameplay -> Vocals All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum



Copyright © 2006-2018 ScoreHero, LLC
Terms of Use | Privacy Policy


Powered by phpBB