The Daily Click ::. Forums ::. Klik Coding Help ::. Is it possible to use a GH chart?
 

Post Reply  Post Oekaki 
 

Posted By Message

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
1st October, 2013 at 01/10/2013 00:40:15 -

Is it possible to use a Guitar Hero chart (.mid or .chart) in MMF2 in such a way to read all the desired information from it?

 
Maltar Draco, I do PC gaming.

Sketchy

Cornwall UK

Registered
  06/11/2004
Points
  1970

VIP MemberWeekly Picture Me This Round 43 Winner!Weekly Picture Me This Round 47 WinnerPicture Me This Round 49 Winner!
1st October, 2013 at 01/10/2013 00:56:01 -

No

 
n/a

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
1st October, 2013 at 01/10/2013 02:13:19 -

Currently there isn't an extension that I know of that can do this in an automated fashion.

You can either write your own extension to do this. Use Clickteam's extension SDK, and find another library online that can read those charts.

Or you could use a binary extension of the equivalent to read in the date and extract what you need using MMF, but that might be a little more difficult, and it'll certainly have more overhead.

Depending on what you wish to do with the information will determine whether or not it's worth it to you. I would venture to guess that it isn't.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
3rd November, 2013 at 03/11/2013 00:50:15 -

Okay, So I have a had a much better look a guitar hero's .chart file format and it turns out that it's entirely text based and can be edited in textpad or even notepad. Anything I have placed in '' is used to help explain the format.
[Song]{

Name = "Song Name"
Artist = "Band Name"
Charter = "Maltar Draco"
Offset = 0
Resolution = 192
Player2 = rhythm 'this can be rhythm or bass'
Difficulty = 1 'any value from 1 up to 11 seems to work'
PreviewStart = 0.00
PreviewEnd = 0.00
Genre = "Rock" 'this can be rock, metal, black metal, punk, acid rock or alternaltive'
MediaType = "cd" 'this can be cd, vinyl or cassettte'
MusicStream = "Band.ogg"
GuitarStream = "Lead.ogg"
BassStream = "Rhythm.ogg"
}

This tells us a lot of important information about the song such as what music files it uses, it's name and best of all, it's resolution which is your 'clock ticks per 1/4 note' and your offset which determines how many ticks before the fret commands appear. I believe resolution should be kept at 192 because it allows for both 1/24 and 1/32 notes but with a certain degree of inaccuracy from the players.


From this point on, ticks determine everything. when the tick counter reaches # it will run the command it has been given, where everything will be '# = X', with # being the tick to do run the command on and X to be the command to run.
[SyncTrack]

{
0 = B 120000
0 = TS 4
}

This next piece of information tells us the starting beats per minute to 3 decimal places, in this case it simply says 120BPM and the gives us the time signature, it is always X/4, where X is the value defined, so the value being 4 means 4/4 and it being 6 means 6/4.
[Events]
{

0 = E "section Intro"
0 = E "section Verse_1a"
0 = E "section Verse_1b"
0 = E "section Chorus"
0 = E "section Bridge"
0 = E "section Solo"
0 = E "section Verse_2"
0 = E "section Chorus_2"
0 = E "section Ending"
0 = E "end"
}

Guitar Hero requires events, firstly to define individual sections of the song that you can play on practice mode on full speed or slower and secondly to define when the song ends.

Guitar Hero has four different game modes. (single-player, face-off, pro face-off and coop) Coop is best game mode!
Three different types of note charts. (single-player, coop guitar/lead and coop bass/rhythm)
And four difficulties. (easy, medium, hard and expert)
This gives us twelve different fret charts to note with coop only using the 'Double' ones and every other game mode using the 'Single' ones.
[EasySingle]

[EasyDoubleGuitar]
[EasyDoubleBass]
[MediumSingle]
[MediumDoubleGuitar]
[MediumDoubleBass]
[HardSingle]
[HardDoubleGuitar]
[HardDoubleBass]
[ExpertSingle]
[ExpertDoubleGuitar]
[ExpertDoubleBass]

These areas code two things or three things for the 'Single' ones, you need to code notes, star power sections and face-off sections for 'Single' charts.
{

0 = N 4 768
0 = N 2 768
768 = N 2 384
768 = N 0 384
1152 = N 3 384
1152 = N 1 384
}

In this case we just coded in some fifth chords for the player, players love fifth chords. N indicates that it is a note, the first # indicates it's fret, 0 = green, 1 = red, 2 = yellow, 3 = blue and 4 = orange and the second # indicates it's length, the first one is 768 which is four times that of the resolution meaning that is a 1/1 note and the other two are 1/2 notes.

Also if a single note is 96 or further away from the previous note, that is a 1/8 note or slower, it must be strummed but if the single note is closer than a 96, like for instance a 48, that is a 1/16 it can be played by simply tapping the fret instead, that is how Guitar Hero works! The notes previously demonstrated were chords and cannot be tapepd regaurdless of how close they are. http://guitarhero.wikia.com/wiki/Hammer_Ons_and_Pull_Offs
{

0 = S 0 1728
1728 = S 1 1600
3392 = S 2 1536
}

Lastly in the same sections, instead of just notes, we need some additional data. This is the same format as before but with 'S' instead of 'N' and the first # codes for the data of the section, 0 = player 1 will play this section in face-off mode, 1 = player 2 will paly this section in face-off mode and 2 = indicates that these notes are filled with star power. http://guitarhero.wikia.com/wiki/Star_Power

Okay, so that's exactly how the .chart file format works, now how do I use it in MMF2?

Edited by Maltar Draco

 
Maltar Draco, I do PC gaming.

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
3rd November, 2013 at 03/11/2013 00:59:10 -

Looks similar to XML. You might be able to read it with the XML extension.

IF that doesn't work you can load the text into MMF using the "edit field" object and then parse it yourself. The "string parser 2" object would be good for this.

Also it depends on what info you want to use and how you want to store it.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
3rd November, 2013 at 03/11/2013 01:24:18 -


Originally Posted by -UrbanMonk-
Looks similar to XML. You might be able to read it with the XML extension.



Actually XML goes like this.
<object>

<thingy>
stuff
</thingy>
</object>


But what we have looks like this.
[Object]{

thingy = stuff
}


And coincidentally ini looks like tihs.
[Object]

thingy = stuff


However ini wouldn't work because it cannot comprehend multiple entries for the same field making chords completely impossible.

Edited by Maltar Draco

 
Maltar Draco, I do PC gaming.

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
3rd November, 2013 at 03/11/2013 02:16:34 -

Actually you could use the ini object to read it, but first you'd need to load it into MMF and make some modifications to it first.

I think the String Parser 2 object allows file loading, but you can use the Edit Field object if it doesn't.

First load the file into the String Parser 2 object and then:
-Use the replace feature to replace "{" and "}" with ""
-Use the replace feature to replace " = " with "="
-Use the replace feature to replace " " with "|"

Now save the file as "temp" somewhere and load it with the ini object.
You should be able to load fields such as "Name" with it the normal way,
but to load chords, and fields with more than one entry you'll need to load them into the string parser then separate the elements by using a delimiter, which in this case happens to be "|"

Read the String Parser 2's documentation if you need help with it. It's well written.

EDIT: You might also want to strip out TABs and quote marks to make it easier to read.

Edited by UrbanMonk

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
8th November, 2013 at 08/11/2013 17:43:57 -

I tried loading it into the INI++ 1.5 object and it intentionally erased all the chords, the very instant it was loaded. I have a backup though so nothing lost.

If I could just simply separate the contents of each individual group into a different list object, then I could read each of them individually and that would make huge progress.

Edited by Maltar Draco

 
Maltar Draco, I do PC gaming.

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
8th November, 2013 at 08/11/2013 19:28:48 -

Use the regular ini object.
INI++ works differently and more aggressively ensures that the file it's given matches the ini standard which the files you have don't.

Like I said. Load it into the String Parser 2 object first then perform those string replacements and save it under the name "temp" again before loading it as an ini.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
12th November, 2013 at 12/11/2013 19:32:25 -

String Parser is certainly able to load strings but it has no ability to token them and return the results in any object that uses text and yes I used the correct delimiters.

 
Maltar Draco, I do PC gaming.

Sketchy

Cornwall UK

Registered
  06/11/2004
Points
  1970

VIP MemberWeekly Picture Me This Round 43 Winner!Weekly Picture Me This Round 47 WinnerPicture Me This Round 49 Winner!
12th November, 2013 at 12/11/2013 22:14:24 -

If in doubt, just parse it manually with a couple nested fastloops...

 
n/a

The_Antisony

At least I'm not Circy

Registered
  01/07/2002
Points
  1341

VIP MemberStarSnow
13th November, 2013 at 13/11/2013 02:17:49 -

Nevermind String Parser 2. Use String Tokenizer instead. Set " " as your token, then when loading lines from the INI that have more than one bit of data, toss it through string tokenizer and you should be able to pull the last x-number of elements that appear. If there's three settings you need to import, the first couple of elements in each line are going to be the line title and equals sign.

In a line like this:
3392 = S 2 1536

You'll only need the last three elements. When you run it through string tokenizer, you'll get a result of 5 elements. You'll only need the last three. See what I'm sayin'?

 
ChrisD> Employer: Say, wanna see a magic trick?
ChrisD> Employee: Uhh… sure, boss.
ChrisD> Employer: Your job! It just disappeared! Pack your things and leave! Pretty good trick, huh?

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
13th November, 2013 at 13/11/2013 02:44:29 -

Are you using the right object Maltar?
The String Parser 2 object certainly has those features. I use them all the time.

If you send me a .gh file I can make an example for you.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
13th November, 2013 at 13/11/2013 20:19:09 -

Interestingly enough, I did try String Tokeniser immediately after String Parser failed and while it does the job a little slowly, I still need to spread the data from the different groups into different lists.

The reason I want to do it like this is because you only ever have two note tracks going on in the game, it's a two player game so you need to ignore a large portion of data because you are not using it this time.

For example: Both players could be playing on easy and therefore the contents of [EasyDoubleGuitar] would be used for Player1's note track and the contents of [EasyDoubleBass] would be used for Player2's note track but Player2 might wanna play on medium and would therefore instead need the data from [MediumDoubleBass], or Player1 might be palying alone and would need the data from [EasySingle] etc, etc, etc...

In short: There are different groups, some of which I want to the game use and some I don't want to the game use this time round.

What I want: Get only the full contents of a single group into a text-based object. From that point on, I can quickly parse and use the data from that.

Edited by Maltar Draco

 
Maltar Draco, I do PC gaming.

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
13th November, 2013 at 13/11/2013 20:52:05 -

The sting replacement method I gave earlier should be plenty fast. You're essentially compressing the data file by removing unnecessary characters before reading it.

Send me a file and I write you an example.

 
n/a

The_Antisony

At least I'm not Circy

Registered
  01/07/2002
Points
  1341

VIP MemberStarSnow
13th November, 2013 at 13/11/2013 22:43:18 -

Yeah, it's slow because you're not supposed to let String Tokenizer parse the entire GMchart. The INI object can do most of the work. The only time you'll need to use String Tokenizer or String Parser 2 is when you need to seperate values from a single INI item that has multiple data elements on the same line.

Urban is right, though. String Parser 2 can seperate elements by delimiter just like String Tokenizer can. I only recommended String Tokenizer because it's a little less convoluted and doesn't have a gazillion advanced features that require a learning curve.




 
ChrisD> Employer: Say, wanna see a magic trick?
ChrisD> Employee: Uhh… sure, boss.
ChrisD> Employer: Your job! It just disappeared! Pack your things and leave! Pretty good trick, huh?

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
14th November, 2013 at 14/11/2013 16:20:39 -

Sorry guys but you are not to understanding me.

1) Items in the [Song] group are the only ones that should be INI'ed because all of the items from all the other groups are points in time and some of those are the same points in time, so it is best gotten with a list and then read. Ok, that I admit is a little hard to understand, so here is an example!

[ExpertSingle]
{
0 = N 4 768
0 = N 2 768
768 = N 2 384
768 = N 0 384
1152 = N 3 384
1152 = N 1 384
}

2) I can not just simply strip out most of the data because I still need that data from the actual file, I am just not using it now. What I asked was to only read certain groups of it.

In such example the data that I want to fetch from this group and only this group and put into a list object is this!

0 = N 4 768
0 = N 2 768
768 = N 2 384
768 = N 0 384
1152 = N 3 384
1152 = N 1 384

And from this point, I can easily tokenise the data from each entry and easily put into the game.

3) The file format is .chart and there loads of places to get those files! Just do a ruddy Google search for guitar hero custom songs. These files are usually edited with Feedback Chart Editor.

I'm sorry if that's too difficult for you because it's a bit too hard for me, certainly! That's why I'm asking.

 
Maltar Draco, I do PC gaming.

The_Antisony

At least I'm not Circy

Registered
  01/07/2002
Points
  1341

VIP MemberStarSnow
14th November, 2013 at 14/11/2013 20:06:17 -

Well, stinky dung. I think you might be right back to using INI++ then.

I created an example for you using the INI++ object and StringParser2. It's commented, but I didn't spend a whole lot of time on the UI so it's not super-intuitive. Basically, all you need to do is toss a chart file into the app directory and rename it to "whatislove.chart". Running the app will load the chart file, turn it into an INI, save the INI to the apppath, then pull and seperate the values you requested. Double-click any entry in the list object, and the seperated elements appear in EditBox2.

You can change INI values by replacing elements in StringParser2 so long as you keep in mind that the first element is the item name. Instead of appending each of the elements together into an EditBox, you could pop 'em in seperate edit boxes so you can change values if that's your aim.

Anyway, you'll want to download the GHchartExample.mfa.
http://sdrv.ms/175qlRG

 
ChrisD> Employer: Say, wanna see a magic trick?
ChrisD> Employee: Uhh… sure, boss.
ChrisD> Employer: Your job! It just disappeared! Pack your things and leave! Pretty good trick, huh?

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
14th November, 2013 at 14/11/2013 20:27:59 -

FAIL!

Original:

[ExpertSingle]
(
0 = S 0 1728
192 = N 0 1472
1728 = S 1 1600
1792 = N 0 1408
3328 = S 0 832
3392 = N 2 0
3392 = S 2 1536
3456 = N 0 0
3520 = N 2 0
3584 = N 0 0
3648 = N 2 0
3712 = N 0 0
3776 = N 3 0
3840 = N 2 0
3904 = N 0 0
3968 = N 3 0
4032 = N 2 0
4096 = N 0 0
4160 = N 2 0
4160 = S 1 768
4224 = N 0 0
4288 = N 2 0
4352 = N 0 0
4416 = N 2 0
4480 = N 0 0
4544 = N 3 0
4608 = N 2 0
4672 = N 0 0
4736 = N 3 0
4800 = N 2 0
4864 = N 0 0
4928 = S 0 832
4992 = N 1 0
4992 = N 2 0
}


What your code butchers it into:

0=S 0 17280
192=N 0 14720
1728=S 1 16000
1792=N 0 14080
3328=S 0 8320
3392=S 2 15360
3456=N 0 00
3520=N 2 00
3584=N 0 00
3648=N 2 00
3712=N 0 00
3776=N 3 00
3840=N 2 00
3904=N 0 00
3968=N 3 00
4032=N 2 00
4096=N 0 00
4160=S 1 7680
4224=N 0 00
4288=N 2 00
4352=N 0 00
4416=N 2 00
4480=N 0 00
4544=N 3 00
4608=N 2 00
4672=N 0 00
4736=N 3 00
4800=N 2 00
4864=N 0 00
4928=S 0 8320
4992=N 2 00


I told you so but you just didn't want to hear it!

 
Maltar Draco, I do PC gaming.

The_Antisony

At least I'm not Circy

Registered
  01/07/2002
Points
  1341

VIP MemberStarSnow
14th November, 2013 at 14/11/2013 21:05:26 -

Butchered? There's an extra "0" appended to every list result. If you took a second to read through the event scripting, it's pretty obvious where the error is.

Group: Display
On Loop: "PullExpertSingle".
Add Line to List Object:
NthItemG$( "Ini++ v1.5 Object", ItemInINI( "ListExpertSingle" ))+"="+NthItemStringG$( "Ini++ v1.5 Object", ItemInINI( "ListExpertSingle" ))+Str$(NthItemValueG( "Ini++ v1.5 Object", ItemInINI( "ListExpertSingle" )))

>>>>Should be changed to:<<<<
Add Line to List Object:
NthItemG$( "Ini++ v1.5 Object", ItemInINI( "ListExpertSingle" ))+"="+NthItemStringG$( "Ini++ v1.5 Object", ItemInINI( "ListExpertSingle" ))

I somehow doubt this is the same error you've been experiencing, so there is no "I told you so!". There's no need for the ridicule over such a negligable problem, but I apologize for not catching it before upload; I should have. Maybe Sketchy or Urban can embellish; they've both answered a few of my questions relating to string manipulation in the past.

Edited by The_Antisony

 
ChrisD> Employer: Say, wanna see a magic trick?
ChrisD> Employee: Uhh… sure, boss.
ChrisD> Employer: Your job! It just disappeared! Pack your things and leave! Pretty good trick, huh?

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
14th November, 2013 at 14/11/2013 22:27:17 -


Originally Posted by GrimFusion
Butchered? There's an extra "0" appended to every list result. If you took a second to read through the event scripting, it's pretty obvious where the error is.



You can't even see the error that I was referring to. I didn't even notice the extra 0s.

I said many times that data can't be INI'ed and I have said a few times in this thread exactly why. If you carefully examine the data, ignoring the extra 0s, you might see it.

 
Maltar Draco, I do PC gaming.

lembi2001



Registered
  01/04/2005
Points
  608

VIP MemberIt's-a me, Mario!Wii OwnerI like Aliens!Has Donated, Thank You!PS3 OwnerI am an April Fool
15th November, 2013 at 15/11/2013 01:29:05 -

WOAH!!

I can see the error but before I reveal it I have a few things to say.

Maltar, this attitude you have is ridiculous. The people on this site offer FREE help and advice. You do not have to like it or take it but it is FREE so show a little decorum. Instead of being an dillweed and being so negative actually explain what the problem with the output from the code is. At first glance it is not that easy to see the issue but upon further inspection I have found the problem with the output. I have not looked at the source code yet so I'm not sure if I can fix it, nor am I sure I want to look at it after the way you have treated 2 of this community's more well known members.

For Grimfusion, Sketchy and UrbanMonk, if you are interested, the problem with the output is that it is stripping out duplicate lines based on the first value.

Example:

Original File


1728 = S 1 1600
1792 = N 0 1408
3328 = S 0 832
3392 = N 2 0
3392 = S 2 1536
3456 = N 0 0
3520 = N 2 0
3584 = N 0 0



Output from code


1728=S 1 16000
1792=N 0 14080
3328=S 0 8320
3392=S 2 15360
3456=N 0 00
3520=N 2 00
3584=N 0 00



Hope that helps, and remember Maltar a little bit of respect goes a LOOONG way

Edited by lembi2001

 
n/a

The_Antisony

At least I'm not Circy

Registered
  01/07/2002
Points
  1341

VIP MemberStarSnow
15th November, 2013 at 15/11/2013 02:15:34 -

Yups. I see the problem now. Groups that have duplicate items still save correctly to the INI, but when they're read from the INI, only the last duplicate in a group appears. I think I already have an idea for a work-around that doesn't use INIs at all. I'll try to have a second example put together by tomorrow.

 
ChrisD> Employer: Say, wanna see a magic trick?
ChrisD> Employee: Uhh… sure, boss.
ChrisD> Employer: Your job! It just disappeared! Pack your things and leave! Pretty good trick, huh?

Sketchy

Cornwall UK

Registered
  06/11/2004
Points
  1970

VIP MemberWeekly Picture Me This Round 43 Winner!Weekly Picture Me This Round 47 WinnerPicture Me This Round 49 Winner!
15th November, 2013 at 15/11/2013 02:58:16 -

The way I'd do it would be by loading the file into a list object, and then running fastloops to check each line (you might be able to use the search function to jump straight to strings like "[ExpertSingle]").
It all depends on *exactly* which bits of data you want to read, and what you want to do with them - are they going into arrays, or lists, or global values, or what?
It would be helpful if you could post an example file, and a *very detailed* explanation of what you want to do with it (eg. "I would like the song and artist names stored in global values, and the contents of [expertsingle] copied into an array").

 
n/a

The_Antisony

At least I'm not Circy

Registered
  01/07/2002
Points
  1341

VIP MemberStarSnow
15th November, 2013 at 15/11/2013 07:29:39 -

^^ That.

It's the only other logical way to parse through the chart file and preserve each section. I'm working on a nested loop that tests the first few characters of each line against a string variable then dumps content into a text file until "}" is encountered... next string variable; repeat. That should result in each section being saved to an independent text file. If I can do that, I can parse each text file individually ensuring sections are preserved. I've gotten it to dump one section already and I've double-checked that all duplicate values are preserved. They are. I should have a working example by sometime tomorrow.

 
ChrisD> Employer: Say, wanna see a magic trick?
ChrisD> Employee: Uhh… sure, boss.
ChrisD> Employer: Your job! It just disappeared! Pack your things and leave! Pretty good trick, huh?

Sketchy

Cornwall UK

Registered
  06/11/2004
Points
  1970

VIP MemberWeekly Picture Me This Round 43 Winner!Weekly Picture Me This Round 47 WinnerPicture Me This Round 49 Winner!
15th November, 2013 at 15/11/2013 13:23:30 -

Just be careful with things like whitespace and case-sensitiveness.
If Guitar Hero isn't strict about it, you may find some files contain "[easysingle]" and others "[EasySingle]", for example.
Similarly, if you're comparing the first n characters of a string, it's possible some of those will be spaces / tabs in some files.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
15th November, 2013 at 15/11/2013 19:09:05 -


Originally Posted by lembi2001 Maltar, this attitude you have is ridiculous. The people on this site offer FREE help and advice. You do not have to like it or take it but it is FREE so show a little decorum. Instead of being an dillweed and being so negative actually explain what the problem with the output from the code is. At first glance it is not that easy to see the issue but upon further inspection I have found the problem with the output. I have not looked at the source code yet so I'm not sure if I can fix it, nor am I sure I want to look at it after the way you have treated 2 of this community's more well known members.

Hope that helps, and remember Maltar a little bit of respect goes a LOOONG way



I'm sorry!

 
Maltar Draco, I do PC gaming.

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
26th November, 2013 at 26/11/2013 23:09:24 -

At this stage it looks like I have to make my own editor but that's not necessarily a bad thing.

Firstly: I will be using all my own songs anyway, so I have to edit them in regardless of what editor I am using.

Secondly: I get to make my own rules.

I make my own file format and therefore I decide what goes in it and how it is read, I could make it actually readable using ini or even... have any note a hopo instead of just fast ones, or even better, have open notes which guitar hero does not have or even chords that can only be down-strummed and others only up-strummed.

I could completely re-invent this genre of rhythm game and make it harder than ever before!

Thirdly: Having an editor built into or bundled in with any game is always the way to go!

Fourthly: Timing would be easier to get right if the editor and game were made and work the exact same way.

I would just like to ask for all your advice before jumping into this new ambitious addition to the project. It's not only a new game any-more, it's now a new level editor with it's own unique file format.

 
Maltar Draco, I do PC gaming.

lembi2001



Registered
  01/04/2005
Points
  608

VIP MemberIt's-a me, Mario!Wii OwnerI like Aliens!Has Donated, Thank You!PS3 OwnerI am an April Fool
27th November, 2013 at 27/11/2013 12:12:38 -

One way I think you could do it would be to create yourself a "keylogger" style program

For example.

Have a button on your app that loads the song in using Directshow (or whatever extension you are using) once you click play the keylogger program starts.

You then type or hold the keys you want to use matching the rhythm of the game.
For the events you can add a line to a list box which features the timestamp of the song and the key you pressed.

Crude but simple way of doing it.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
28th November, 2013 at 28/11/2013 00:35:31 -

If it's not too much trouble, is there an object that can play music but has a pitch-bend or vibrato effect, you know, for the whammy bar and also works on Java.

If it's not too much extra trouble, is there an object that can play the music but with specified delay in milliseconds, or failing that an object that can delay your visual display by a certain amount of milliseconds. Because having no A/V delay will wreak havoc on certain systems that are not 100% synchronised. And also, works on Java.

Oh... and is there an object that can detect the buttons of 2 different joysticks that works on Java.

I'm not asking for too much, am I?

Edited by Maltar Draco

 
Maltar Draco, I do PC gaming.

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
28th November, 2013 at 28/11/2013 03:29:41 -

Yeah clickteam isn't supporting the java runtime anymore, and those extensions don't exist for java.

I suggest going for an exe instead. For the sound playback I'm not too sure. You might have to make something that does that yourself. I don't have much experience working with sounds in MMF besides regular playback.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
28th November, 2013 at 28/11/2013 12:36:16 -


Originally Posted by -UrbanMonk-
Yeah clickteam isn't supporting the java runtime anymore, and those extensions don't exist for java.

But Java is awesome!

 
Maltar Draco, I do PC gaming.

UrbanMonk

BRING BACK MITCH

Registered
  07/07/2008
Points
  49567

Has Donated, Thank You!Little Pirate!ARGH SignKliktober Special Award TagPicture Me This Round 33 Winner!The Outlaw!VIP MemberHasslevania 2!I am an April FoolKitty
Picture Me This Round 32 Winner!Picture Me This Round 42 Winner!Picture Me This Round 44 Winner!Picture Me This Round 53 Winner!
29th November, 2013 at 29/11/2013 17:45:55 -

I keep the java plugin off myself. Too many exploits seem to exist for it. No virus problems since.

Have you used the flash runtime yet? It doesn't support what you want either, but at least it's still supported by Clickteam.

Actually the java runtime is being removed completely from MMF 2.5. If you have MMF 2 installed beforehand you can still use it though according to someone at clickteam.

 
n/a

lembi2001



Registered
  01/04/2005
Points
  608

VIP MemberIt's-a me, Mario!Wii OwnerI like Aliens!Has Donated, Thank You!PS3 OwnerI am an April Fool
29th November, 2013 at 29/11/2013 18:30:25 -


Originally Posted by Maltar Draco
But Java is awesome!



I can't decide if this is an honest post or if you are trolling.

Java has a lot of issues that it needs to work out before it can be considered as a viable platform for gaming IMO. Minecraft (as awesome as it is) suffers from HUGE memory leaks rendering the game unplayable at times add to this the fact that a JVM is REQUIRED to run even the most basic of java applets. I know flash is a requirement for swf's however chrome comes with it built it. I don't even need to update it. Jave poses huge security risks too and the number of exploits available to Java make it a risky platform too.

I'm all for freedom of choice, so each to their own.

 
n/a

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
29th November, 2013 at 29/11/2013 19:27:48 -


Originally Posted by lembi2001

Originally Posted by Maltar Draco
But Java is awesome!



I can't decide if this is an honest post or if you are trolling.

Java has a lot of issues that it needs to work out before it can be considered as a viable platform for gaming IMO. Minecraft (as awesome as it is) suffers from HUGE memory leaks rendering the game unplayable at times add to this the fact that a JVM is REQUIRED to run even the most basic of java applets. I know flash is a requirement for swf's however chrome comes with it built it. I don't even need to update it. Jave poses huge security risks too and the number of exploits available to Java make it a risky platform too.

I'm all for freedom of choice, so each to their own.



Yeah... you're completely and absolutely right but I'm still not buying MMF2's flash exporter and I still don't have any way to get my games out there other than Kongregate because I have no website of my own. And I still don't know if Stencyl has joystick support or if a level editor can be made with it.

 
Maltar Draco, I do PC gaming.

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
24th December, 2013 at 24/12/2013 23:47:59 -

Okay, how about this for a file format:

#0 = #1 #2

Where #0 is the point in time.

#1 determines what note it is, it can be any number from 0 to 127.

I should probably use a binary system to determine what note it is.
0 = Open
1 = Green
2 = Red
4 = Yellow
8 = Blue
16 = Orange

And additional info would also be coded in the same number.
0 = Pluck
32 = Strum Down
64 = Strum Up
96 = Hammer On

And #2 is the length of that note, remember that 768 is the length of a beat.


So...

[ExpertSingle]
0 = 52 192

...would mean a YO down-chord right at the start for 1/4.

 
Maltar Draco, I do PC gaming.

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
26th December, 2013 at 26/12/2013 22:23:27 -

Guys, I have a serious problem!

It's entirely to do with the [Synctrack] Element.

It defines the BPM (or tempo if you prefer of the song), now you may say, "you can just change it accordingly" but no, it can change during the song!

For example:

[Synctrack]
0 = 120
1534 = 130

In this up here, we see that after 8 beats, the tempo increases slightly so the notes should appear closer together but...

...I have no idea how to do that at all!

 
Maltar Draco, I do PC gaming.

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
28th December, 2013 at 28/12/2013 20:15:53 -

Hello? Anybody There?

 
Maltar Draco, I do PC gaming.

Maltar Draco



Registered
  22/08/2013 19:25:19
Points
  215
30th December, 2013 at 30/12/2013 14:53:22 -

What's this? dead forum? Might as well as pull the plug on this project because there will be absolutely nobody to play it when it's done, clearly this place didn't have the active community I thought it did.

 
Maltar Draco, I do PC gaming.
   

Post Reply



 



Advertisement

Worth A Click