Gamer125 / fofix

Automatically exported from code.google.com/p/fofix
0 stars 0 forks source link

Add support for Rock Band style drum fills #102

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
-Add drum fill sections, with required green fret / cymbal hit at end to
continue streak (or maybe to activate starpower instead?)

Original issue reported on code.google.com by chris.paiano@gmail.com on 26 Oct 2008 at 5:13

GoogleCodeExporter commented 9 years ago
Need more information on the specifics of how this works.

Need GFX for special neck

Original comment by chris.paiano@gmail.com on 26 Oct 2008 at 5:22

GoogleCodeExporter commented 9 years ago
See issue 108 for method to create the special neck GFX.

Original comment by chris.paiano@gmail.com on 14 Nov 2008 at 5:24

GoogleCodeExporter commented 9 years ago
"
As for drum fills, the green note at the end activates OD/SP yes (its a 
mini-BRE but
with a different function).
"

OK, that makes sense.  So -- how does the game determine when to create a drum 
fill?
 I've never seen any MIDI text events that denote where valid drum fill sections
are... does it just replace a random full measure with a drum fill some time 
after
the drummer gains enough overdrive for activation?

These are the kind of details I just don't have access to without the real 
game. 
Anyone have some relevant observations?

Original comment by chris.paiano@gmail.com on 15 Nov 2008 at 11:04

GoogleCodeExporter commented 9 years ago
This may require the ability to properly read in Rock Band starpower phrase 
markings;
I can almost see how perhaps drum fills are automatically placed X number of 
measures
after a starpower phrase.

Original comment by chris.paiano@gmail.com on 15 Nov 2008 at 11:10

GoogleCodeExporter commented 9 years ago
Starpower phrase is issue 107.

Original comment by chris.paiano@gmail.com on 15 Nov 2008 at 11:11

GoogleCodeExporter commented 9 years ago
"So -- how does the game determine when to create a drum fill?
 I've never seen any MIDI text events that denote where valid drum fill sections
are... does it just replace a random full measure with a drum fill some time 
after
the drummer gains enough overdrive for activation?"

I'm not exactly sure as when does the first fill start after you can activate
overdrive but it seems to be set to start on the beginning of midi events 
(chorus,
verse, solos etc ).

If the OD/SP isn't activated after a fill it just repeats the fill after x 
seconds /
measures (haven't actually looked the time between fills) till you eventually
activate it. If you have the time, look at this video
http://www.youtube.com/watch?v=awmdZ6vbuTE&fmt=18 from 1:46 (at the drums, to 
be more
precise).

Original comment by dutur...@gmail.com on 17 Nov 2008 at 1:54

GoogleCodeExporter commented 9 years ago
If possible, can you put these fills in rock band style mods, and allow star 
power 
to activate by pressing Yellow-Blue in guitar hero style mods? Guitar Hero 
World 
Tour has star power activate by pressing Yellow and Blue at the same time on 
rock 
band drums, and both cymbals on the world tour drums.

Original comment by azman2000@gmail.com on 22 Nov 2008 at 10:13

GoogleCodeExporter commented 9 years ago
Looks like I might be getting a drum set soon after all!

So... this is coming soon :)

Original comment by chris.paiano@gmail.com on 7 Dec 2008 at 10:36

GoogleCodeExporter commented 9 years ago

Original comment by chris.paiano@gmail.com on 3 Jan 2009 at 2:35

GoogleCodeExporter commented 9 years ago
Beginning focused development on this issue.

Original comment by chris.paiano@gmail.com on 3 Jan 2009 at 6:19

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Progress so far (not committed yet) - got MIDI note recognition working for 
note #124
(one of 5 drum fill / BRE / freestyle note markers always present), will 
generate and
display the 5 lanes for Guitar parts so far (using a new standard 2-image 
custom tail
with full width).

Demonstration screenshot in a test song with a ridiculously short freestyle 
section
marked so both ends of the lane tails can be seen:
http://i40.tinypic.com/hwczlx.jpg

Original comment by chris.paiano@gmail.com on 3 Jan 2009 at 10:28

GoogleCodeExporter commented 9 years ago
Above progress committed in r686.

Original comment by chris.paiano@gmail.com on 3 Jan 2009 at 10:48

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Useful info on drum fills:

http://www.fretsonfire.net/forums/viewtopic.php?f=11&t=25040&p=336646#p336646

Original comment by chris.paiano@gmail.com on 8 Jan 2009 at 2:49

GoogleCodeExporter commented 9 years ago
The current progress on this issue from r713 doesn't work as intended, obv. All 
the
drum fill markers become BREs.

Original comment by ryanturcotte@gmail.com on 8 Jan 2009 at 5:00

GoogleCodeExporter commented 9 years ago
I believe you also have to hit the drums during the fill at least 3 times 
before the
last cymbal note will show up.

It might be easier to get BREs working for drums first without drum fills and 
then do
the drum fills later.

Original comment by ryanturcotte@gmail.com on 8 Jan 2009 at 9:34

GoogleCodeExporter commented 9 years ago
Yep, thats the plan.

Original comment by chris.paiano@gmail.com on 9 Jan 2009 at 2:15

GoogleCodeExporter commented 9 years ago
voleshnebyi - You need Auto Drum SP : Off, else it will give a seg fault once 
you get
it I believe.

I'm testing it right now, with SP : Off the song plays normally but I forgot to 
turn
BREs on so no fills. Maybe need some new option for automatic star power vs. 
drum
fill SP.

Original comment by ryanturcotte@gmail.com on 9 Jan 2009 at 10:40

GoogleCodeExporter commented 9 years ago
Yup, closer but not all there. Can't activate the SP with the last green hit. 

Might want to make it so the standard drum sounds from rock band play during 
the drum
fill instead of the drum track (the start of drum fill shuts off drum track).

Original comment by ryanturcotte@gmail.com on 9 Jan 2009 at 10:53

GoogleCodeExporter commented 9 years ago
Also, you shouldn't be awarded any points during the drum fill notes (so not 
like the
BREs). 

I *believe* you get points for the last green hit, but I'm not positive.

Original comment by ryanturcotte@gmail.com on 9 Jan 2009 at 11:02

GoogleCodeExporter commented 9 years ago
Also, Jurgen needs logic to hit the crash cymbal at the end. It'd also be funny 
if he
had some simple fill playing logic, i.e. hitting a snare every 16th note until 
the crash.

Original comment by MofoMan2...@gmail.com on 9 Jan 2009 at 11:32

GoogleCodeExporter commented 9 years ago
My brother just tried to test drum fills (he's more of a drummer than me), and 
when
he didn't have enough OD the game was leaving gaps where the drum fills would 
have
been.  On two occasions so far, he had no OD, and on hitting a green note after 
such
a gap, the game crashed with the following in the log:

Traceback (most recent call last):
  File "L:\fofix\trunk\src\GameEngine.py", line 801, in main
    done = Engine.run(self)
  File "L:\fofix\trunk\src\Engine.py", line 132, in run
    self._runTask(task)
  File "L:\fofix\trunk\src\Engine.py", line 123, in _runTask
    task.run(ticks)
  File "L:\fofix\trunk\src\Input.py", line 232, in run
    self.broadcastEvent(self.keyListeners, "keyPressed", id, u'\x00')
  File "L:\fofix\trunk\src\Input.py", line 151, in broadcastEvent
    if getattr(l, function)(*args):
  File "L:\fofix\trunk\src\GuitarScene.py", line 4067, in keyPressed
    res = self.keyPressed3(key, unicode, control)
  File "L:\fofix\trunk\src\GuitarScene.py", line 4283, in keyPressed3
    self.handlePick(pressed, hopo = hopo, pullOff = pullOff)
  File "L:\fofix\trunk\src\GuitarScene.py", line 2528, in handlePick
    score = int ( score / numFreestyleHits )
ZeroDivisionError: float division

Auto Drum SP is off.

Original comment by john.stumpo on 9 Jan 2009 at 11:36

GoogleCodeExporter commented 9 years ago
The option "Auto Drum SP" needs to be removed, with a new option in its place:

"Drum Starpower":
  * "Off"
  * "Button"
  * "Auto"
  * "Drum Fill"

Original comment by chris.paiano@gmail.com on 10 Jan 2009 at 7:12

GoogleCodeExporter commented 9 years ago
(let it be known that the PS button on the PS2/PS3 RB2 drumset is indeed 
mappable; it
is button # 13)

Original comment by chris.paiano@gmail.com on 10 Jan 2009 at 8:52

GoogleCodeExporter commented 9 years ago
Progress committed in r742:

Drum fills now actually activate starpower when Auto SP is off.
They still appear to break your streak though.

Original comment by chris.paiano@gmail.com on 10 Jan 2009 at 10:44

GoogleCodeExporter commented 9 years ago
And Jurgen doesn't play drum fills.  Not gonna fix it, Jurgen just doesn't play 
drum
fills.  He continues to play the song, which is fine for someone of his skill 
level.

Original comment by chris.paiano@gmail.com on 10 Jan 2009 at 10:52

GoogleCodeExporter commented 9 years ago
Progress committed in r743:

Freestyle drum sections will actually play the freestyle drum sounds now.  
Seems to
work nicely.

Original comment by chris.paiano@gmail.com on 10 Jan 2009 at 11:08

GoogleCodeExporter commented 9 years ago
To assist my debugging the freestyle breaking streak and other such 
strangeness, a
new debug setting has been added in r745:

"Show fill status":
  * "Off" - (default) will not show anything
  * "On" - will show status of freestyle and drum fills' active status similar to
HOPO debugging

Also, now the drum fill cymbal activation note won't show until you have hit 4
freestyle notes - and as you hit those 4 notes, the lanes will grow to full size
instead of just changing to full size.

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 12:03

GoogleCodeExporter commented 9 years ago
It seems I've flushed out another bug; certain drum fill sections are too short 
to be
given a cymbal activation note. Or rather, there is a prerequisite size of at 
least
one board length - or no activation cymbal note.

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 12:05

GoogleCodeExporter commented 9 years ago
Nice work. Couple things though:
1. Sometimes I get a drum fill/freestyle section when I have insufficient 
overdrive
to actually activate. As such, it just breaks my streak and refuses to give my a
cymbal at the end of the fill, lol. (This is probably something you were 
referencing
in "strangeness" but I thought I'd clarify.)
2. There needs to be a wait of maybe one or two measures after half the OD 
meter is
gained before a drum fill is allowed; in some cases the notes right after the OD
phrase become a drum fill right before your eyes, which is something we 
probably want
to avoid. But isn't extraordinarily important and could probably be its own 
issue
(the hard part was getting them to work, right).

Original comment by MofoMan2...@gmail.com on 11 Jan 2009 at 12:10

GoogleCodeExporter commented 9 years ago
Progress committed in r746:
You don't always lose your streak during drum fills now... 

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 1:23

GoogleCodeExporter commented 9 years ago
Progress committed in r748:

Attempts to locate the RB MIDI section event "big_rock_ending" to use as an 
indicator
that the next drum fill should be a BRE (the last drum fill is not always a 
BRE, the
song must have one for it to be treated as such...)
Also, you might actually get through a drum fill or two without losing your 
streak now.

(also forcing rtmidi module to NOT initialize, as this causes problems on 
computer
systems with 0 MIDI ports...)

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 4:07

GoogleCodeExporter commented 9 years ago
I was going to report that I think p@hotmail.com #1 bug is what you just fixed 
- it
thinks the last drum fill is some drum fill/BRE thing and inserts it (although
doesn't give you BRE points). I'll test r748 now.

Awesome so far!

Original comment by ryanturcotte@gmail.com on 11 Jan 2009 at 4:10

GoogleCodeExporter commented 9 years ago
I don't think r748 fixed the bug I mentioned, I still saw it on 29 Fingers and 
Testify.

Original comment by ryanturcotte@gmail.com on 11 Jan 2009 at 4:33

GoogleCodeExporter commented 9 years ago
Progress committed in r749:

If there is a drum fill marker note currently in view, and you just gained 
enough
starpower to activate overdrive, then the current drum fill marker will be 
marked as
complete and skipped over.  (no more drum fills popping up in the middle of 
view;
they will always scroll in).

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 5:09

GoogleCodeExporter commented 9 years ago
Progress committed in r754:

Drum fills will no longer break your streak!!!

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 7:48

GoogleCodeExporter commented 9 years ago
Progress committed in r757:

1) Enhanced logic that detects when there is a drum fill already in progress or 
too
close to activate directly after gaining starpower -- now it will track 
multiple drum
fill sections and mark any that are too close as "completed" (actually 
"happened" is
the flag name).  Looks like surprise drum fills appearing out of nowhere are 
gone.

2) The final drum fill won't show up as a BRE unless the song specifically has a
section marker before the last drum fill "[section_big_rock_ending]" just like 
all RB
and RB2 songs.  Otherwise it should be treated as a normal drum fill.  Guitar 
and
bass parts will continue to recognize the single BRE marker they have; only 
drums
will require the [section_big_rock_ending] MIDI section event marker in order to
participate in the BREs.

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 5:57

GoogleCodeExporter commented 9 years ago
I've created two very short, simple, silent test songs with Drum and Guitar 
tests for:

[http://www.mediafire.com/?nvyhczzj0fh MFH's test songs - BREs, Fills, OD, 
Solos - 9kB]

Big Rock Endings
Drum Fills
Overdrive Sections
Solo Sections

One "song" has a Big Rock Ending; the other does not.

This should demonstrate how to mark these things to anyone who is familiar with 
a
piano roll and MIDI events.  

Original comment by chris.paiano@gmail.com on 11 Jan 2009 at 8:25

GoogleCodeExporter commented 9 years ago
Implemented in r759:

Progress on issue 102, implements issue 465 - the game now will find the last 
drum
note and disable drum scoring after that note has passed, allowing the drummer 
to
have fun at the end of a song.

Original comment by chris.paiano@gmail.com on 12 Jan 2009 at 12:09

GoogleCodeExporter commented 9 years ago
Progress committed in r761:

Drum fills will now require you to hit 4 freestyle notes before you are allowed 
to
activate starpower (even though the cymbal note wasn't showing, it was still 
hittable).

Original comment by chris.paiano@gmail.com on 12 Jan 2009 at 12:51

GoogleCodeExporter commented 9 years ago
The fix in r749 doesn't appear to work for me (in r763) with RB Co-op. Not sure 
if
it's related to co-op code. 

Some appeared out of nowhere once gaining star power.

Original comment by ryanturcotte@gmail.com on 12 Jan 2009 at 4:23

GoogleCodeExporter commented 9 years ago

Original comment by worldrave111@gmail.com on 13 Jan 2009 at 7:31

GoogleCodeExporter commented 9 years ago
Progress committed in r796:

Now, notes behind drum fills and BREs will be discounted correctly from the note
totals, resulting in proper note hit percentages.

Original comment by chris.paiano@gmail.com on 18 Jan 2009 at 2:36

GoogleCodeExporter commented 9 years ago
Progress committed in r797:

Now really fixed the note counting / discounting, they still were being counted 
the
old way in GameResultsScene in two places.  Scores will actually save with the
correct percentage now.

Original comment by chris.paiano@gmail.com on 18 Jan 2009 at 2:54

GoogleCodeExporter commented 9 years ago
Also, FYI:

RB1's drum freestyle sounds had a crash cymbal instead of a third tom because 
that's
all those drums could be.

RB2's drum freestyle sounds have a third tom instead of a crash because they 
expect
you to purchase the Cymbal expansion kit, which will provide up to three 
cymbals that
can be used to hit notes of the same color (and will also make cymbal sounds 
during
freestyle).

Yes, I plan to get a cymbal expansion kit (once donation funds reach a high 
enough
level again) so that I can add support for the three cymbals to FoFiX. They 
should
appear differently and allow me to play different freestyle sounds when they 
are hit.

Original comment by chris.paiano@gmail.com on 18 Jan 2009 at 5:58

GoogleCodeExporter commented 9 years ago
As posted here:
http://www.fretsonfire.net/forums/viewtopic.php?f=11&t=25040&sid=c5b8e2f3a4af4e2
a0a86e847d0835ef2&p=341877#p341877

"
Heres what i discovered looking better into it.

1: On freestyle, if u keep your foot down on the kick pedal, one note it plays 
what u
want and the other dont matter what you play it plays just the bass drum sound.

2: On notes (normal playing), again bass pedal down, it plays the bass drum 
sound
every note.

3: On drumfills, again bass pedal down, play the bass drum sound every "note".

4: On BRES, again bass pedal down, is the same as drumfills, every "note" it 
plays
drum sound.

2, 3 and 4 u can resolve the problem by setting the DRUM KICK PEDAL SOUND off. 
About
the 1 theres nothing u can do about.
"

Original comment by chris.paiano@gmail.com on 18 Jan 2009 at 7:06

GoogleCodeExporter commented 9 years ago
Well then FoFiX needs to keep track of the event when the bass pedal is 
released, so
it can tell on hits whether the bass pedal was already held or if it was just 
hit.

Then I can fix the logic everywhere else, make drum hit sound playing code 
modular so
it doesn't have to be duplicated everywhere, and this shouldn't be a problem 
anymore.

Original comment by chris.paiano@gmail.com on 18 Jan 2009 at 8:42

GoogleCodeExporter commented 9 years ago
Progress committed in r808 should fix all drum sound issues.  I completely 
rewrote
all drum sound logic, it is now a part of the Drum object as it should be.  
Even the
bass kick option works great now, holding the bass pedal down or not.

Original comment by chris.paiano@gmail.com on 19 Jan 2009 at 12:28

GoogleCodeExporter commented 9 years ago
[deleted comment]