Jump to content

Scripts for Rocksmith


xavatar

Recommended Posts

Hi all,

 

Here's a small collection of tools to deal with Rocksmith songs:

https://github.com/x0l/rs-utils

 

Mostly intended for OSX users (command line batch convert), it can also be useful for others (make WEMs without launching Wwise).

 

I'm a bit lazy at the moment, but if I (or anyone else) find the time, I'll add JSON and aggregate graph generation.

 

Mostly python and shell code, easy to understand/port/improve.

 

Cheers,

  • Like 1
Link to comment
Share on other sites

Having some slight issues w/ the wav2wem command, or more specifically the WwiseCLI part. The program runs, converts the audio, but then never exits. So the mv & rm command never get executed, unless I manually kill the wwise/wine process. Also, the PostGen command (CopyStreamedFiles.exe) doesn't seem to work, so I just removed that from the .wproj & changed the mv line to grab the file from .cache/Windows/SFX/song_A6AAD7A8.wem - still, without the wine process exiting, that part won't get run. Any ideas? Here's what I get running the CLI command directly:

 

$ WINEDEBUG=-all wine "~/.wine/drive_c/Program Files/Audiokinetic/Wwise v2013.2.2 build 4828/Authoring/Win32/Release/bin/WwiseCLI.exe" Template.wproj -GenerateSoundBanks -ContinueOnError

 
Wwise | v2013.2.2 | Build no.4828 | © Audiokinetic Inc. 2006-2013. All rights reserved.
 
Application tried to create a window, but no driver could be loaded.
The explorer process failed to start.
 
*** Loading Project ***
 
Initializing...
Loading Project...
Loading Work Unit: Conversion SettingsDefault Work Unit.wwu
Loading Work Unit: Master-Mixer HierarchyDefault Work Unit.wwu
Loading Work Unit: Actor-Mixer HierarchyDefault Work Unit.wwu
Loading Work Unit: EventsDefault Work Unit.wwu
Loading Work Unit: SwitchesDefault Work Unit.wwu
Loading Work Unit: StatesDefault Work Unit.wwu
Loading Work Unit: SoundBanksDefault Work Unit.wwu
Loading Work Unit: Game ParametersDefault Work Unit.wwu
Loading Work Unit: EffectsDefault Work Unit.wwu
Loading Work Unit: PresetsDefault Work Unit.wwu
Loading Work Unit: Soundcaster SessionsDefault Work Unit.wwu
Loading Work Unit: QueriesDefault Work Unit.wwu
Loading Work Unit: Interactive Music HierarchyDefault Work Unit.wwu
Loading Work Unit: TriggersDefault Work Unit.wwu
Loading Work Unit: AttenuationsDefault Work Unit.wwu
Loading Work Unit: Dynamic DialogueDefault Work Unit.wwu
Loading Work Unit: Mixing SessionsDefault Work Unit.wwu
Updating Project...
Finalizing...
 
*** Bank Generation ***
 
[Collecting SoundBank Information...] RS_SOUNDBANK
Message 0       Evaluation mode: SoundBanks contain 1 media item(s) out of the 200 permitted.   Windows«
[Collecting SoundBank Information...] Init
[Collecting SoundBank Information...] RS_SOUNDBANK
[Converting files...] RS_SOUNDBANK
[song.wav] Applying conversion settings...
[song.wav] Encoding Vorbis...
[Converting files...] Init
[Converting external sources...] Reading external sources file
[Converting external sources...]
[Generating SoundBank Media Sections...] RS_SOUNDBANK
[Writing to disk...] Z:Users[...]TemplateGeneratedSoundBanksWindowsRS_SOUNDBANK.bnk
[Generating SoundBank Hierarchy Sections...] RS_SOUNDBANK
[soundBank Log Info] Name: RS_SOUNDBANK Platform: Windows« | Language: SFX  | Created:Yes | Status: Successful
 
Process completed successfully.
 
...and then it just hangs there until the process is killed. -_-
Link to comment
Share on other sites

@@th1rtyf0urYou should install dotnet35sp1 to get-post processing working I've no idea why it hangs up though.

I think it hangs because of the wrong Wwise version, 2013.1.3 failed spectacularly, 2013.2.2 probably thought is compatible. Here are the links:https://www.audiokinetic.com/files/?get=2013.2.4_4836/Authoring_Win32.msihttps://www.audiokinetic.com/files/?get=2013.2.4_4836/Authoring_Data.msiI have only dotnet40 for toolkit. A dialog babbling something about unknown runtime pops up (missing dotnet35 apparently) and then it ends with "Process completed with warning(s)." message but WEM is there. 
[SoundBank Log Info] Name: RS_SOUNDBANK Platform: Windows« | Language: SFX  | Created:Yes | Status: Successful[Running Post-generation step: Copy Streamed Files...] Executing command: "C:Program FilesAudiokineticWwise v2013.2.4 build 4836AuthoringWin32ReleasebintoolsAkCopyStreamedFiles.exe" -info "Z:homexTemplateGeneratedSoundBanksWindowsSoundbanksInfo.xml" -outputpath "Z:homexTemplateGeneratedSoundBanksWindows" -banks "RS_SOUNDBANK Init" -languages "English(US)"Warning	29	Custom pre-generation or post-generation executable returned a non-zero value: '"C:Program FilesAudiokineticWwise v2013.2.4 build 4836AuthoringWin32ReleasebintoolsAkCopyStreamedFiles.exe" -info "Z:homexTemplateGeneratedSoundBanksWindowsSoundbanksInfo.xml" -outputpath "Z:homexTemplateGeneratedSoundBanksWindows" -banks "RS_SOUNDBANK Init" -languages "English(US)"', error id: '-2146232576'	Windows«Process completed with warning(s).
Link to comment
Share on other sites

@@shrubbery

 

Thanks for pointing this out, I only used 2013.2.4

 

I think you need .Net 3.5 sp1 in oder to have post-processing work and bnk generation. My initial plan was to get both the WEM and the BNK from WwiseCLI (and the _preview files too). It's (mostly) a matter of hard coding the right ID and ShortID in the template. The only real issue is midi events, I haven't figure out how to configure this in Wwise

Link to comment
Share on other sites

@@shrubbery

 

:) I was planing something similar using Guitar Pro and Go Play Along for sync.

 

My ultimate goal would be being able to build a PSARC from:

- GP tab

- Sync points from GPA

- a few metadata

 

I don't care for DD, or lyrics or showlights...

 

The code already exists in EoF, it's a (painful) matter of extracting it

Link to comment
Share on other sites

That's actually what I have in mind. It would need to be an extension to tab format (probably TG native) to hold extra RS information (techniques, per track phrases and sections, tone switching) and GPA sync would be only applied on export.

 

Basically reimplementation of tab to RS XML conversion is the huge part of what would be necessary to have it working. I don't care about manually created DD either but it wouldn't be impossible.

 

BTW I know how to extract sync points from GPA database.

Link to comment
Share on other sites

GPA sync points Measure + fraction of beats. Here's quick copy/paste

import structfor e in z:    s = e[9]    if s is None:        continue    inc = 0    while s[inc] != 'x00':        inc += 1    n = struct.unpack('>I', s[inc:inc+4])[0]    inc += 4    for i in range(n):        time             = struct.unpack('>f', s[inc   :inc+4 ])[0] / 1000.0        measure          = struct.unpack('>I', s[inc+4 :inc+8 ])[0]        measure_fraction = struct.unpack('>f', s[inc+8 :inc+12])[0]        beat_duration    = struct.unpack('>f', s[inc+12:inc+16])[0] / 1000.0        inc += 16        print time, measure, measure_fraction, beat_duration 

EDIT: Read your post too quickly :)

Link to comment
Share on other sites

Yup :)

Portable (almost), and much much fewer LoC...

 

It's not quite useable right now, it soon will be.

 

Next big step will be to convert from GP to RS XML in one click (or rather one command) ie rewrite the part of EoF I'm really interested in ;) Ruby is our friend since it already provides a nice Guitar Pro gem.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. - Privacy Policy