rscustom / rocksmith-custom-song-toolkit

Custom song toolkit for Rocksmith and Rocksmith 2014
http://www.rscustom.net/
343 stars 80 forks source link

Custom Lessons (in lesson section) #118

Open Maveth opened 10 years ago

Maveth commented 10 years ago

Im trying to get the lessons working, including video (might even be able to add video to the start of songs if someone wants to try, but i think we should probably avoid that.

i think it will require a separate tab in the toolkit. it will have/reuse alot of the things that are in the toolkit, but there are more options. or perhaps we can have a simple and an advanced tab. because songs have use more options than we are currently allowing (like multiple arrangements with different audio for each track...).

we will also need a few other things... that im unsure of how best to implement, I dont thing either EOF or the toolkit can handle it as is.

at the moment ill keep working it on my own, till i get far enough for it to be at least stable, 2014-01-25_00001 I get get to the next screen as well, before it crashed, but that might because of a number of different things.

Maveth commented 10 years ago

2014-01-25_00002

raynebc commented 10 years ago

This would definitely be fun, especially if people can port good instructional videos to the game as lessons. As for EOF, people would probably have to set up the video first, demux the audio track and use that to create a chart in EOF. I've done this with the rhythm game Phase Shift, which supports videos for charts.

fabianosan commented 10 years ago

like multiple arrangements with different audio for each track

It's possible? I wonder if we can generate a custom song with multiple tracks on each arrangement have your audio file and we can remove the instrument that will be played like when I play lead guitar, change to track that have no lead guitar in audio (Rock Band 3 style).

If it's possible will be awesome...

Maveth commented 10 years ago

@fabianosan, yes thats always been possible, just need to not use 1 audio source (and reference it in json for each arrangement). BUT it adds a lot of work to the toolkit. and for the users, i only reason i didnt suggest it for songs, is that i thought we wanted to keep it simplified for people to make customs. maybe an advanced tab for people that want to go the extra mile.

Maveth commented 10 years ago

raynebc, im thinking of converting justinguitar;s youtube videos, they are awesome. along with the simplifed songs to go with it, and yet not clutter up the songs folder.. the video themselves are just bink2 videos, but there is timing for the instructions and the videos that go beyond simple things.. plus the interactive parts....

fabianosan commented 10 years ago

@Maveth I'll help you with this feature. Really, I believe that another TAB is the best way, but we need to refactor some code in Package Creator to reuse the code.

I'll create a branch "lesses" for we work on it. What you think about this?

Maveth commented 10 years ago

yes, that will probably be best... i got a lesson completely isolated and working, there is a weird part, like i did with getting the guitar inlays to work as a dlc, the header file needs to be in the song directory.. also as you can see, there is a naming issue. this is because i think the lessons are forced to use the cvs file, which i would rather not patch....(its inside the cache file) not that we cant do it... just it would be a pain. ill list some of the things that will need worked on.

video's are bink2 files, and i dont think thats a huge issue? i think the encoder is out there.

the only major difference in xml is the event codes, not sure if eof uses some of the regular ones that control crowds or not, but im sure raynebc can add the other codes for video/practice loops.

the json and hsan have some different entries. (shouldnt be too hard)

there are different .flat files than in songs, but they are almost the same for every lessons other than the first ID#

some of the sound banks seem a little different....

the biggest thing will be a way to easily edit the lesson algorithm... alot of it is repeated but im unsure if we will need a separate program to make the flow work properly.. i would suggest maybe some kind of xml file that can be "encoded" to create the more complex coding

the lessons also reference the narrator's voice, it will be hard to make our own easily, but any sentence that is used in game can be re-used easily enough. if we edit the raw game file then we can make our own, but i would avoid that as well... since any video can also have its own audio (in the same bk2 file)

i have a little more detailed info here, but now that i got it to play a lesson (copied from the originals but with all the originals removed from the game) i want to refine it enough, so we know exactly what we need.

i also wanna stretch the possibilities, because i think there are more things it can do, that we know. it looks like there is a sublayer that the game isnt fully using... i will look into more. once i have a lesson that is 100% unique (other than the dynamics, but i mean with all its own entities like titles,descriptions, videos. audio, bnks, and sng's) then i will post it.

raynebc commented 10 years ago

EOF still has the ability to place the Rocksmith 1 era events for metronome ticks and crowd happiness, I can easily add more event types, just let me know what they should be called (actual names and display names). Also, does anybody know if the RS1 events work in RS2 (ie. for metronome count-ins)? Will the events need to be able to be assigned at any timestamp or is it fine to force them to be defined on beat markers like the other events in EOF?

Maveth commented 10 years ago

practice track is the same as a regular song... an example from shifting1

events count="5">

event time="10.000" code="e1"/> event time="13.934" code="E3"/> event time="16.792" code="E13"/> event time="48.220" code="D3"/> event time="51.077" code="E13"/> /events> i dunno if they are in normal songs or not, or if there are the same as rs1? do they look the same? maybe someone can test that, but thats another thing though... fyi the toolkit encodes them if they are in the xml.

the actual lessons use

event time="226.666" code="start_free9"/> event time="233.333" code="freeze_free9"/> event time="239.999" code="end_free9"/> event time="250.833" code="start_riff1_example"/> event time="263.333" code="start_riff1_riff"/> event time="276.666" code="rate_riff1_riff"/> event time="281.666" code="end_riff1_riff"/> as an example....

fabianosan commented 10 years ago

Maveth,

I created a branch to us work on lessons: https://github.com/rscustom/rocksmith-custom-song-toolkit/tree/lessons

In next week I'll start to add the new attributes and fields need by lessons packages.

Maveth commented 10 years ago

ok, ive been doing a little bit here, i think i figured a way we can do it and use the same main window... in all cases there is still a sng file created (even video only lessons), so it needs all the stuff that a regular song needs, but in addition it needs some other things for the lesson itself.

im thinking we can make it a special arrangement type.. when its selected (or lesson type xml selected) then it will need to have a few extra options in the add arrangement tab... also when you generate the package (in the main window) it will need to create things a little differently (mainly in the lesson json/hsan/xblock/flat/behavior).....so basicly if there exists a lesson arrangement, then the packagecreator script will need to be different.... does that make sense??

ive progressed a little further. everything should be fairly easy to do other than the lua(behavior) im pretty sure can use a special case xml from eof to create the proper lesson behaviors.. we will have to review with raynebc on that... it will need the event code at a minimum (which should be ok) but the logic of what is being tested will be harder... as well as the voice overs to use... i dunno if eof will be able to handle it. but i dont think the toolkit (by itself) will be either. we could possibly use a generic entry for each case (check for bend, check for slide, check for chord) but it may/,may not fit the specifics of the lesson that a person wants to create

also,, at this point im only looking at creating a PC lesson... after its working we will need to look at whats required to create the other platforms.

raynebc commented 10 years ago

EOF and/or the toolkit may be able to provide some cookie cutter LUA files for pre-built lesson types (ie. a video that changes to user playable tab at some point), but if it starts requiring some elaborate scripting, the author may have to take on some of that burden.

fabianosan commented 10 years ago

im thinking we can make it a special arrangement type.. when its selected (or lesson type xml selected) then it will need to have a few extra options in the add arrangement tab... also when you generate the package (in the main window) it will need to create things a little differently (mainly in the lesson json/hsan/xblock/flat/behavior).....so basicly if there exists a lesson arrangement, then the packagecreator script will need to be different.... does that make sense??

Good idea, yes make sense, I'm did some analisis in lessons here, it's not complicated, have some new fields, but we can do without damage normal DLC.

Maveth commented 10 years ago

@fabianosan the lessons allow/require different audio for each arrangement (for lack of a better word), i dunno if you want to add this to the regular song creation as well...

in the lessons, there can be a preview audio+bnk that only is used for the .hsan entry (header in the lesson list) a full audio+bnk for the lesson , and a third audio+bnk for practice track.... if we allowed the main dlc package creator to allow this as well (bass can have its own audio vs guitar) then we can use this feature in lessons as well... otherwise we will have to add this for lessons anyways,,,, as far as this goes, im thinking that another .wem load option is available in the add arrangement tab, maybe with a checkbox(use different audio track), and if unchecked then it behave as normal.....

it should also be noted that a lesson only contains 1 arrangement. the bass package is not included in the lead package.... (i havent tested how that works when you switch paths.. i removed all lessons from my game menu atm, so its easier for me to test my changes)

i think all the "extra" info can be included in the add arrangement tab (when a lesson type is selected) and can remain invisible/greyed out when a regular arrangement is loaded (this would include audio if we dont add it to the regular toolkit options)

i cant do alot more work on this till the weekend.

for reference later: the practice track json (in the manifest/song folder) includes an entry "EtudeKey" but thats about it, other than that it looks the same as a regular song manifest the actual lesson contains the entry "LessonKey"

but in the manifest/lesson the lesson has ALOT more lesson related entries, but doesnt have most of the song entries there is "Etude": "GEName": "Lesson": these are combines in various ways to create the different items, including the KEY names and the PLAY triggers (we might need snakez help with banks (there is one different in the one im looking at as it has a different structure after the header) example (im using the lead-shifting lesson as my base)

    "Etude": "E2",
    "GEName": "LShifting1",
    "Lesson": "Lsn31",
    "EtudeKey": "GE_E2_LShifting1",
    "EtudePlayEvent": "Play_GE_E2", (audio track is the same in multiple lessons so same bank)
    "LessonPlayEvent": "Play_GE_LShifting1_Lsn31",
Maveth commented 10 years ago

the hsan in a regular lesson is in the manifest/lessons, for it to be a custom lesson it will need to be in the manifest/songs

everything should be fairly straight forward, other than the LUA's as raynebc said, just a video and riff section (without testing if the person is getting it or not) and practice track is straight forward.. its when you do the freeze and test/start riff repeater in the middle, that it gets more complicated. perhaps even the voice overs.. "now you try it"... they are all accessible to us though.... i dunno why but im still having trouble with the lesson name AFTER you select it from the main screen.. but the rest seems ok. atm i get errors triggering the PLAYEVENTs because the soundbanks dont have the right info if i just rename it. ive done a little work on the changes to the add arrangement tab, but nothing worth pushing yet (and only on the gui)

Maveth commented 10 years ago

im gonna try and push a layout change to the lesson tree, since it shouldnt effect anything. i hope i got github setup right, im pretty sure it is. if not then ill revert it. this is my no means what it must be, just an initial suggestion. somethings can still be added. etc, none of the boxs/buttons/checkboxes do anything yet. ah good, that worked. just something to start with. i need the manifests/soundbanks created properly to continue breaking apart the whats needed in xml from eof, and LUA files,

fabianosan commented 10 years ago

Make a rebase first.

Baoulettes commented 10 years ago

event time="226.666" code="start_free9"/> event time="233.333" code="freeze_free9"/> event time="239.999" code="end_free9"/> event time="250.833" code="start_riff1_example"/> event time="263.333" code="start_riff1_riff"/> event time="276.666" code="rate_riff1_riff"/> event time="281.666" code="end_riff1_riff"/>


this correspond to behaviors triggers.

mStartExampleTag = "start_riff1_example";
mStartRiffTag = "start_riff1_riff";
mRateTag = "rate_riff1_riff";
mEndTag = "end_riff1_riff";

(I did follow this because it could be used for song too.) (Video as Venue like Bandfuse.)

Maveth commented 10 years ago

yes, i did mention that it might be possible, but there is a transition phase that is triggered when a video is triggered. as you can tell, there is never a video + notes at the same time in the lessons. its always does a transition. so it will need to be broken apart more.... we will see what happens after we have more stuff figured out for lessons. and if we can do it, or even if we just add an intro video to the song, we can use the same info i think... there is some question on that though, you could test it by taking a lesson and convert it be a song.. just unsure if the song menu will call the lesson info. or if reads solely from the sng, and the event calls.

Maveth commented 10 years ago

@fabianosan , i just used the tree you set-up. i dont think its major issue to to up to date... as long as we arent touching the same code, we shouldnt have too many conflicts.

Baoulettes commented 10 years ago

I am on it too no worry I quite got the logic for a lesson how to duplicate one in a package yet not working bt i i want to understand so i can help :) then i will try to include it before a song like an etude. then in same time i think that can be done via behaviors ^^

Maveth commented 10 years ago

i got it working in a package, but its still using alot of default settings. once we get it to write the manifest and soundbank with the right values/keys then it will smooth sailing till we're ready to edit the LUA's

fabianosan commented 10 years ago

@Maveth I see your changes in ArrangementForm on lessons branch. What's is all this "lesson info" fields?

Any lesson have basically all info in MainForm (DLCPackageCreator).

Maveth commented 10 years ago

Yes, it does, or at least can. some of it is blank but the values exist. If the lesson includes a practice track then it has everything that a song does (but artist/title is sometimes blank or ubisoft), im not sure the best way to do it. the toolkit is structured in a way that some options are removed to make it easier for user to make packages. and it made sense when making just simple songs. but with more advanced options im just not sure anymore. work has pushed it way into my spare time lately, so i havent had a chance to do anything else with it. i think that a completely new tab might be a better option, that includes the option to have more control of the package contents(even for single songs/multipacks). but it would also have to be bigger visually.

I had put the lesson info in with the arrangement, because i thought that IF you add a lesson xml, then it could write it as a lesson, and becuase you still create a complete pacakge with a regular arrangement, unless its video only lesson..., i dont think that will work as well as i first envisioned. i should have done more here locally before i started the thread... but i thought i was going to have a little more free time to work on it.

Maveth commented 10 years ago

Still no time, i think a complete rework is in order anyways. so unless someone has worked on this, i suggest a revert of the last commit, then start over. i will put it on hold for now, because i dont have time for about a month or so..

Maveth commented 7 years ago

wow, been gone almost 3 years. gonna take me a bit to catch up on things. then i would like to get back into this.

Berneer commented 7 years ago

Wow, blast from the past! Welcome back Maveth!! I always hated seeing friendly people disappear.