Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom Lessons (in lesson section) #118

Open
Maveth opened this issue Jan 26, 2014 · 27 comments
Open

Custom Lessons (in lesson section) #118

Maveth opened this issue Jan 26, 2014 · 27 comments

Comments

@Maveth
Copy link
Contributor

Maveth commented Jan 26, 2014

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.

@ghost ghost assigned Maveth Jan 26, 2014
@Maveth
Copy link
Contributor Author

Maveth commented Jan 26, 2014

2014-01-25_00002

@raynebc
Copy link

raynebc commented Jan 26, 2014

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
Copy link
Contributor

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
Copy link
Contributor Author

Maveth commented Jan 26, 2014

@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
Copy link
Contributor Author

Maveth commented Jan 26, 2014

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
Copy link
Contributor

@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
Copy link
Contributor Author

Maveth commented Jan 27, 2014

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
Copy link

raynebc commented Jan 27, 2014

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
Copy link
Contributor Author

Maveth commented Jan 27, 2014

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
Copy link
Contributor

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
Copy link
Contributor Author

Maveth commented Jan 30, 2014

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
Copy link

raynebc commented Jan 30, 2014

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
Copy link
Contributor

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
Copy link
Contributor Author

Maveth commented Jan 30, 2014

@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
Copy link
Contributor Author

Maveth commented Jan 30, 2014

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
Copy link
Contributor Author

Maveth commented Jan 30, 2014

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,

Maveth added a commit that referenced this issue Jan 30, 2014
@fabianosan
Copy link
Contributor

Make a rebase first.

@Baoulettes
Copy link

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
Copy link
Contributor Author

Maveth commented Jan 31, 2014

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
Copy link
Contributor Author

Maveth commented Jan 31, 2014

@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
Copy link

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
Copy link
Contributor Author

Maveth commented Jan 31, 2014

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
Copy link
Contributor

@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
Copy link
Contributor Author

Maveth commented Feb 4, 2014

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
Copy link
Contributor Author

Maveth commented Feb 19, 2014

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 Maveth added the on hold label Feb 19, 2014
fabianosan added a commit that referenced this issue Apr 2, 2014
…ks to Cozy, he started the development of this feature];

* Added new RS1 and RS2014 path definition (for future automatic copy packages to game dlc folder) (#130);
* Fixed default album art creation is not correctly created when is not defined by the user;
* Added package author (charter name) to file version inside the package, can be defined in Config (fixes #159);
* Change way how the Config tab is displayed, now have a button to access configuration;
* Refactoring of some codes that will allow to create another types of packages in a near future (#118);
* Some minor improvements and changes;
@Maveth
Copy link
Contributor Author

Maveth commented Jan 3, 2017

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
Copy link

Berneer commented Jan 3, 2017

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants