m0j0hn / editor-on-fire

Automatically exported from code.google.com/p/editor-on-fire
Other
0 stars 0 forks source link

Add custom marker support #196

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
According to PiXeLaDo and thekiwimaddog, "slider" phrases are like forced HOPO 
phrases, but all notes in the phrase are automatically strummed, even if the 
previous note was missed.

The phrase itself supposedly uses the marking of note 101 specifically with a 
velocity of 127 instead of 100.  The complication is that according to 
thekiwimaddog, some RB MIDIs mark their HOPO phrases with a velocity of 127, so 
it's difficult to know whether the phrase is supposed to be a forced HOPO on or 
a slider phrase.

Original issue reported on code.google.com by raynebc on 8 Nov 2010 at 12:45

GoogleCodeExporter commented 9 years ago
thekiwimaddog is considering dropping Phase Shift support for slider phrases 
due to the inconsistencies with how they're denoted various official/custom 
charts and how to reliably identify whether a chart is GH or RB style.

Original comment by raynebc on 10 Nov 2010 at 12:23

GoogleCodeExporter commented 9 years ago
thekiwimaddog and I feel that it would be beneficial for the song.ini file to 
indicate the presence of Guitar Hero features and what velocities are used to 
denote them, for example:

slider_velocity = 101
open_strum_velocity = 102

This would allow for conflict-free handling of Guitar Hero and Rock Band 
features in the same chart.  I emailed jstump to see if he had any objections, 
but provided I don't hear any, I'll go ahead and try to implement this.  This 
will allow most of the conflict handling logic for open bass guitar versus 
forced hopo to be removed, but we'd need to leave in the MIDI import prompt.

Original comment by raynebc on 5 Mar 2011 at 12:04

GoogleCodeExporter commented 9 years ago
I never heard back, so plans to implement this will remain unchanged.  It would 
be nice to implement this in the next stable release, but only if a Phase Shift 
release supports it at such time.

Original comment by raynebc on 14 Mar 2011 at 8:53

GoogleCodeExporter commented 9 years ago
thekiwimaddog is still willing to implement this, so I'll increase the priority 
for this enhancement.  Some tasks for this enhancement:

1.  Define macros for the velocities being used for these charting mechanisms.  
Update export logic to write to the MIDI using these macros and to write the 
tags in song.ini.
2.  Update the import logic to look for the tags.  If such tags are not found, 
any conflicts will necessitate a user prompt for how to import (such as how 
open bass is prompted about).
3.  Remove the in-editor conflict handling for open bass, since it will no 
longer conflict during export.
4.  Add logic for slider sections, including a submenu and probably a unique 
color to render with in the 2D and/or 3D windows.  Update import/export logic.
5.  Update documentation.

Original comment by raynebc on 14 Mar 2011 at 9:37

GoogleCodeExporter commented 9 years ago
Since nobody has figured out how to properly mark slide phrases yet, it might 
be worth using a custom note marker for slide phrases and a custom velocity for 
up slides versus down slides.

Original comment by raynebc on 2 May 2011 at 7:12

GoogleCodeExporter commented 9 years ago
I proposed the following INI tags to thekiwimaddog:

slide_note = #
slide_up_velocity = #
slide_down_velocity = #

If this custom marker system were implemented, EOF would have to have checking 
to see if the open strum velocity was defined in song.ini and had a velocity 
that was different from normal notes.  If so, it could load open bass strums 
without the lane 1 HOPO conflict prompt.

Original comment by raynebc on 6 May 2011 at 2:50

GoogleCodeExporter commented 9 years ago
I'm thinking that until the native RB3 method is determined, Sysex messages 
could be used for custom phrase markings.  Something with an identifying 
prefix, such as:

'P','S','\0',[difficulty #],[marker ID]

Original comment by raynebc on 28 May 2011 at 4:04

GoogleCodeExporter commented 9 years ago
I PM'd thekiwimaddog to propose the following as the start of our custom phrase 
marking system:

(Sysex event)
(Sysex message length)
'P','S','\0' (3 byte Phase Shift Sysex ID)
# (1 byte difficulty ID: 0 = Easy, 1 = Medium, 2 = Hard, 3 = Expert)
# (1 byte phrase ID: 1 = Slider note, 2 = Pro guitar slide up, 3 = Pro guitar 
slide down, 4 = Open strum bass, 5 = Pro guitar bend, 6 = Pro guitar palm mute, 
7 = Pro guitar vibrato)
# (1 byte status ID: 0 = Phrase stop, 1 = Phrase start)
0xF7 data byte (1 byte "End of Sysex")

Original comment by raynebc on 29 May 2011 at 9:50

GoogleCodeExporter commented 9 years ago
Phrase ID 8 could be for "tapping" notes in general (pro or 5 lane guitar/bass).

Original comment by raynebc on 29 May 2011 at 9:59

GoogleCodeExporter commented 9 years ago
Since the RB3 method for marking hammer ons and pull offs are not immediately 
known, I proposed the following custom markers:
9 = Pro guitar hammer on, 10 = Pro guitar pull off

I also proposed the following for custom note names:
(Sysex event ID)
(Sysex message length)
'P','S','\0'
# (difficulty)
11 (Custom note name)
"note name here" (This would be a NULL terminated string, so strcpy could be 
used to read the string into a buffer)
0xF7 (End of Sysex)

Original comment by raynebc on 29 May 2011 at 10:50

GoogleCodeExporter commented 9 years ago
As per details I posted in issue 214, I'll use RB3's system of "[chrd1 ...]", 
"[chrd2 ...]" and "[chrd3 ...]" text events (ie. Text Event="[chrd1 Bb5]" for 
Medium difficulty chord name) to manually override the game's chord name 
detection for Medium, Hard and Expert difficulties, respectively.  This means 
that custom Sysex phrase markers will not be used for chord names.

Original comment by raynebc on 4 Jun 2011 at 11:32

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
It would probably be better to insert a message ID, so that things besides 
phrases can be marked:

(MIDI identifier for Sysex)
'P','S','\0'
(Message ID, ie. 0 = phrase)
(Message data)
0xF7 data byte (1 byte "End of Sysex")

Message ID 0 (phrase marker) definition:
# (1 byte difficulty ID: 0 = Easy, 1 = Medium, 2 = Hard, 3 = Expert)
# (1 byte phrase ID)
# (1 byte status ID: 0 = Phrase stop, 1 = Phrase start)

r785 adds initial logic for the custom Sysex marker system, adding MIDI 
import/export support for open strum bass notes, which use phrase ID 1.  
Pending approval from the Phase Shift devs, I'll add markers for pro guitar 
slide up/down and slider phrases.

Original comment by raynebc on 21 Jun 2011 at 7:03

GoogleCodeExporter commented 9 years ago
r786 adds Sysex markers for pro guitar slides:

Phrase ID:
2=Pro guitar slide up
3=Pro guitar slide down

Original comment by raynebc on 22 Jun 2011 at 6:57

GoogleCodeExporter commented 9 years ago
r818 adds Sysex markers for hi hat statuses:

Phrase ID:
5=Open hi hat
6=Foot pedal controlled hi hat

Original comment by raynebc on 19 Aug 2011 at 3:29

GoogleCodeExporter commented 9 years ago
r819 adds a Sysex marker for rim shot:

Phrase ID:
7=Snare Rimshot

Original comment by raynebc on 19 Aug 2011 at 8:46

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
r821 adds a Sysex marker for slider sections:

Phrase ID:
4=Slider

Original comment by raynebc on 21 Aug 2011 at 9:18

GoogleCodeExporter commented 9 years ago
Difficulty ID 0xFF will be used for Sysex phrases that apply to all 
difficulties of a track (ie. slider sections).

Original comment by raynebc on 21 Aug 2011 at 9:30

GoogleCodeExporter commented 9 years ago
r855 added a Sysex marker for sizzle hi hat:

Phrase ID:
8=Sizzle hi hat

Original comment by raynebc on 6 Jan 2012 at 7:49

GoogleCodeExporter commented 9 years ago
Other statuses that are written with Sysex have been added, and new ones will 
occasionally be added.  The EOF file specification will be used to document 
them.

Original comment by raynebc on 18 May 2012 at 6:26