A Community discussion forum for Halo Custom Edition, Halo 2 Vista, Portal and Halo Machinima

Home  Search Register  Login Member ListRecent Posts
»Forums Index »Halo Custom Edition (Bungie/Gearbox) »Halo CE General Discussion »[RELEASE] Composer

Author Topic: [RELEASE] Composer (17 messages, Page 1 of 1)
Moderators: Dennis

Joined: Apr 3, 2013

Posted: Aug 27, 2017 10:11 PM    Msg. 1 of 17       

In all seriousness I think you guys will like this. I've spent about a month working on this.

NOTE: The download is actually for the entire repository(only ~2MB). If you only want the program and not the source code, just extract Composer_vX.X.X.exe and the readme.txt

I'm pasting the readme in here cause I'm lazy.

██████╗ ██████╗ ███╗ ███╗██████╗ ██████╗ ███████╗███████╗██████╗
██╔════╝██╔═══██╗████╗ ████║██╔══██╗██╔═══██╗██╔════╝██╔════╝██╔══██╗
██║ ██║ ██║██╔████╔██║██████╔╝██║ ██║███████╗█████╗ ██████╔╝
██║ ██║ ██║██║╚██╔╝██║██╔═══╝ ██║ ██║╚════██║██╔══╝ ██╔══██╗
╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚██████╔╝███████║███████╗██║ ██║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝


What is Composer:

Composer is a music player that operates exclusively on the sound
and sound_looping files used in the "Halo" game series. Composer
is currently only capable of using Halo 1 sound and sound_looping
files, but there are plans to expand this to later Halo games.

Composer is also my first C++ program(and will be my first mobile
device program thanks to JUCE when I get it compiling for Android).

Why use Composer:

Halo's CD soundtrack is pretty amazing(which I recommend you buy),
but it isn't the same thing as the dynamic music you hear ingame.
A CD soundtrack is static(always the same content and length),
whereas video game BGM is usually designed to seamlessly loop an
infinite number of times until it needs to end. Halo goes a step
further by using permutations, skip fractions, and alternate loops.

Permutations keep things from getting too repetative by virtue of
being different variants of the loop that can be played in any order.

Skip fractions specify how often a permutation will be skipped if it
is about to be selected to be played(introduces randomness).

Alternate loops are just like loops(can have their own permutations
with their own skip fractions), and usually sound pretty similar to
the loops, except the game designers control when they are activated.
These are used for when the designers want the music to keep playing,
but need to to seamlessly change its feel(change from a tense version
of a track to a heart pounding one when you get into battle).

Composer allows you to listen to all the soundtracks as they would be
heard ingame, and allows you to customize playback using "commands".
You can specify how long to play a track, when to switch to alternate
permutations, which permutations to play(ignores skip fractions), how
many times to repeat a command, whether or not to play permutations
in a "normal" way(in ascending order and using skip fractions), etc.
This is the reason for Composer's name, you compose the music yourself.



Composer operates on the sound and sound_looping game files that
are used to make a Halo map. These files are called "tags", and
are a proprietary binary file format designed to work with Halo's
development tools as well as the game itself.

Composer does NOT come with any sound or sound_looping files,
nor is it capable of producing them. If you wish to listen to
music from the Halo games you must obtain the files yourself.
I will not provide the files, nor will I explain how to rip the
sound tags from Halo maps.

1: Make a folder to store your playlists(there should be an empty
"playlists" folder that came with Composer).

2: Make or locate your tags directory and put the sound_looping
and sound tags you want to play in it.

3: Run Composer.exe, go to the "Settings" panel, set the playlists
folder to the one you just created.

4: Click "New playlist" and then set its tags directory to the one
you just created or located.

5: You are ready to add tracks to play. Click "Save playlist" after
you are done editing it. This is the only way to save edits to
the playlist. The playlist that was last open when you exit
will be automatically opened when you run Composer again.

How to use Composer:

Once Composer is setup you are able to add tracks to the current
playlist and specify how to play them. The Playlist, Commands, and
Settings tabs are where you do all of these things and more.

Here is a breakdown of each tab and their widgets:

The Playlist tab is where you manage the tracks(sound_looping files)
in the playlist. The currently playing track will have an arrow off
to the left pointing to it. The currently SELECTED track will be
highlighted in white.

Aside from the "Add' button, all controls on the playlist tab will
affect the currently SELECTED track, not the track that is playing.

* Add
Adds a new track to the end of the playlist.

* Remove
Removes the currently selected track from the playlist.

* Shift up
Shifts the currently selected track up by 1.

* Shift down
Shifts the currently selected track down by 1.

* Loop
Loops back to the beginning when the last track is played.

* Shuffle
Plays the tracks in a randomized order. Clicking this will
force "Loop" to be on as the playlist wont be read linearly.

* Track playtime
Number of seconds to play the currently selected track.
If set to zero, the track will play forever.
When a track is added to the playlist, this will default to
180 seconds(3 minutes). Max time is 1 hour(3600 seconds).

NOTE: To the left of the playtime slider is the number of
seconds the currently PLAYING track has played.

The Commands tab allows you to carefully tweak how the currently
PLAYING track will play. Double click a track in the playlist and
then click "Pause". The Commands tab will now be populated.

* Add
Adds a new command to the end of the command list.

* Remove
Removes the currently selected command from the command list.

* Shift up
Shifts the currently selected command up by 1.

* Shift down
Shifts the currently selected command down by 1.

* Permutation
Allows you to tweak how the currently SELECTED command specifies
a permutation should be chosen. Also displays the permutation
currently being played in the section's left central box.

- Alt
Play the alternate loops(if available).

- Any
Randomly choose a permutation from the available ones.

- Normal
Play permutations in the way Halo normally would.

- Permutation to play
If "Any" and "Normal" are not selected, you can specify which
permutation to play with the plus and minus buttons.

* Loop count
Allows you to tweak how many times the currently SELECTED command
should be repeated. Also displays the current loop iteration in
the section's left central box.

- Skip
Skip over executing this command.
Used to temporarily disable commands for testing.

- Endless
Execute this command endlessly until the track ends.

- Number of loops
If Endless is not selected, you can specify how many times to
execute this command before going on to the next one.

The settings tab is where you can edit some of Composer's config
settings as well as fixing a playlist's tags directory location
if you want to transfer the playlist to another device.

* New playlist
Unloads the current playlist(doesnt save) and makes a new one.

* Load playlist
Unloads the current playlist(doesnt save) and loads one from a file.

* Save playlist
Asks you where to save the current playlist to and saves it there.

* Change tags directory
Allows you to set the tags directory of the currently loaded
playlist. Used mainly for transferring playlists between devices.

* Change playlists directory
Allows you to set the default directory for loading playlists from
and saving them to.


Known bugs/issues:

* If a sound_looping file references a sound that doesnt exist(or
cant be loaded), playback will end and Composer will proceed to
play the next available track.

* Sounds do NOT crossfade between normal and alternate sounds, even
if the sound_looping file specifies they should. This is due to how
the system for selecting samples works(It cannot predict the next
block of samples in advance). As such, this is more of a limitation
of the program than an outright bug.

* Be on the lookout for bugs invloving filepaths. This is my first real
C++ program, so I haven't done enough research into making/using proper
universal path manipulating functions in C++. I am sure something will
break at some point, but for now it works lol.


* If Composer wont load properly(or at all) delete composer_config.cfg and
try to open Composer again.

* If Composer says a track is missing, make sure the tags directory is
correct. If it is not, set it to where it should point to, save the
playlist, and re-open it.

* If a track isn't marked as missing, but wont play, check if the sound tags
it points to are in the tags directory with it where they should be. This
will require downloading and installing the Halo Editing Kit for PC to get
an editing tool called Guerilla to open the sound_looping file. Hopefully
you never have to try fixing this issue.

* Figure out how Halo 2 sounds are structured(gonna be giving Kornman00's
blamite another look) and incorporate reading them into Composer.

Joined: Jan 18, 2009

Discord: Holy Crust#4500

Posted: Aug 27, 2017 10:20 PM    Msg. 2 of 17       
I look forward to using this!

Joined: Apr 3, 2013

Posted: Aug 27, 2017 10:44 PM    Msg. 3 of 17       
I wonder how long it'll be before someone rips all the unique tracks from each map, renames the sound_looping files to have meaningful names, and uploads the collection of tags.

Joined: Aug 21, 2010

Former biped rigger & FP animator

Posted: Aug 27, 2017 10:56 PM    Msg. 4 of 17       
Woah can't wait to check this out

Joined: Oct 5, 2012

Join my Discord https://discord.gg/GDVEaRD

Posted: Aug 28, 2017 05:24 AM    Msg. 5 of 17       
Time to convert all of my music to sound tags so I could use this cool music player.

Joined: Oct 30, 2010

Dennis, free me from this suffering

Posted: Aug 28, 2017 09:36 AM    Msg. 6 of 17       
That's because when you make an app you use a real language like C#, Rust, Vala or C++ not Python.

Joined: Jan 29, 2009

Still here because your site isn't active either.

Posted: Aug 28, 2017 11:29 AM    Msg. 7 of 17       
playing music or ripping tags isn't exactly realtime though.

Unless absolute performance is needed, like say, making a fully-fledged direct3D or vulkan renderer, c++ is kinda unnecessary. Then you gotta compile for every little change(luckily new stuff can run through code first without needing this), it's definitely not needed for simple little mundane tasks xD
Edited by OrangeJuice on Aug 28, 2017 at 12:11 PM

Joined: Apr 3, 2013

Posted: Aug 28, 2017 01:43 PM    Msg. 8 of 17       
That's a bit harsh PRPTaxi. You do realize that Python is heavily used in making web based applications, scientific research tools, and used for rapidly building applications for clients? When I worked at a call center around 4 years ago, one of the tools we used was a python program that acted as a layer between all the CLI tools they needed to manage. A place looking to hire me worked primarily in Java and Python, and what they did was make custom applications for their clients that did what the client needed.

This is that company: https://frogslayer.com/about-frogslayer/

Python is replacing Perl for those people who can afford to not use Perl. Seeing python as not "a real language" is ignorant and condescending. You might have been joking with your comment, but having used Python for more than 5 years, I have developed a love for the language and want to stand up for it.

Also, there is a v1.0.1 of Composer out. I fixed a little bug.

EDIT: Seems to be another bug. This time the shift buttons aren't working as they should.... I'll let you guys know when I've got a 1.0.2 out to fix this.
Edited by MosesofEgypt on Aug 28, 2017 at 03:21 PM

Joined: Jan 7, 2015

End my suffering

Posted: Aug 28, 2017 03:40 PM    Msg. 9 of 17       
Finally I can use a Moses app.

Bu the way Ive try to use MEK and still have some errors

Joined: Apr 3, 2013

Posted: Aug 28, 2017 04:24 PM    Msg. 10 of 17       
V1.0.2 is out. Fixes the playlist and command list not being redrawn properly when you shift items in them around.

EDIT: And 20 minutes later I discover I made another bug from my 1.0.1 fix. Decided NOT to make a 1.0.3 since it was so close to the last one and instead just updated the binary and source on the repository. If you already downloaded 1.0.2, re-download it :p
Edited by MosesofEgypt on Aug 28, 2017 at 04:48 PM

Joined: Oct 4, 2014

Ho ho hooooly doodle!

Posted: Aug 28, 2017 04:26 PM    Msg. 11 of 17       
Nice, this is cool.

Joined: Apr 3, 2013

Posted: Aug 30, 2017 09:43 PM    Msg. 12 of 17       
v1.0.3 is out with some bug fixes. Currently trying to get a linux setup going so I can get it compiling for android. Has anyone actually tried this out?

Joined: Mar 18, 2010

I win. You lose.

Posted: Aug 31, 2017 01:47 AM    Msg. 13 of 17       
Python is amazing and if you can't figure out how to install the Run Time then you should probably not be using a computer. On topic: This is awesome, I've seen people manually compose the music to be like it's heard ingame (as seen here, but for Halo 2 https://www.youtube.com/watch?v=DtMhBHmJnjE ). But this will let people take it one step further for sure. Cheers.

il Duce Primo
Joined: Apr 22, 2007

CMT Team Leader

Posted: Aug 31, 2017 07:58 AM    Msg. 14 of 17       
Python does't have the most straight forward installation nor is it perfect in installing. I had difficulty installing it and had help from Moses who also had difficulty helping me. Turns out he didn't know how to fix my installation and then I had to google and eventually figured it out. This was after several hours of frustration and I can easily see why someone wouldn't go through that trouble just to use these tools.

Joined: Apr 3, 2013

Posted: Sep 6, 2017 01:47 PM    Msg. 15 of 17       
No, I found the source code to the codec online licensed under GPL and modified is decoder function to work how i needed it to. Just look in the source, Composer is licensed under GPLv3

Joined: Feb 8, 2014

The haiku master。

Posted: Sep 6, 2017 10:34 PM    Msg. 16 of 17       
Quote: --- Original message by: 1bobsam1
Python is amazing and if you can't figure out how to install the Run Time then you should probably not be using a computer. On topic: This is awesome, I've seen people manually compose the music to be like it's heard ingame (as seen here, but for Halo 2 https://www.youtube.com/watch?v=DtMhBHmJnjE ). But this will let people take it one step further for sure. Cheers.

I agree, its a straight forward install wizard, I really don't see how you can muck it up unless your computer is just to ancient to run it. But even then, my old EMac from 2002 still runs 3.1 fine.
Edited by Jobalisk on Sep 6, 2017 at 10:35 PM

Joined: Apr 3, 2013

Posted: Sep 8, 2017 11:17 PM    Msg. 17 of 17       
v1.0.6 is out. A few ui bugs have been fixed, but more importantly you can now add sound tags directly to the playlist without having to put them in a sound_looping tag. They will be treated as the loops of a sound_looping tag. Now go have some fun playing sound\dialog\chief\deathviolent.sound on infinite loop.


Previous Older Thread    Next newer Thread

Time: Fri May 29, 2020 12:12 AM 218 ms.
A Halo Maps Website