Difference between revisions of "Rigdio"

From Rigged Wiki
Jump to navigation Jump to search
m (Small change to the changelog and patch notes)
(Updated the new Rigdio and patch notes links to v1.172 (RigDJ v1.122))
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''rigdio''' is an automated goalhorn/anthem player designed to ease the burden on streamers during cup events, and increase the options available to managers. It is available for download [https://github.com/archie-m-vist/rigdio/releases here on github]. A pack version is also available [https://drive.google.com/file/d/1zsHIWzGIJ2-nhsiQWOJVkKNJturfzYMN/view?usp=sharing here ]
'''rigdio''' is an automated goalhorn/anthem player designed to ease the burden on streamers during cup events, and increase the options available to managers. It is available for download [https://files.catbox.moe/kgx13f.zip here]. The source code for it is also available [https://files.catbox.moe/2rc3vz.zip here]. The latest versions are '''Rigdio v1.172''' and '''RigDJ v1.122''' as of 2nd September 2022. [https://pastebin.com/Q3rivhdB Patch notes]


Update as of 1/14/2020, [https://files.catbox.moe/uks4us.zip Rigdio & RigDJ v1.13] [https://pastebin.com/p853iqPt Patch notes]
= Contents of a Music Export =
= Contents of a Music Export =
A music export for rigdio is a folder containing all of the songs, as well as a .4ccm file which tells rigdio how to use them. Music files can be any format playable by VLC non video format preffered.
A music export for rigdio is a folder containing all of the songs, as well as a .4ccm file which tells rigdio how to use them. Music files can be any format playable by VLC non video format preferred. '''An important thing to note, for a .4ccm file to work on Rigdio, it needs to have at least an anthem, a victory anthem, and a standard goalhorn.'''


There are two main ways to build a .4ccm file, each outlined below.
There are two main ways to build a .4ccm file, each outlined below.
Line 15: Line 14:
The rigDJ main window is pictured below. For this example, we will create a .4ccm for {{team away|m}}.
The rigDJ main window is pictured below. For this example, we will create a .4ccm for {{team away|m}}.


[[Image:rigdj-mainwindow.png]]
[[Image:RigDJ1.12-mainwindow.jpg]]


We'll start by entering the team name (no slashes!) into the "Team" entry box.
We'll start by entering the team name (no slashes!) into the "Team" entry box.


[[Image:rigdj-tutorial-1-name-and-preview.png]]
[[Image:RigDJ1.12-tutorial-1-name-and-preview.jpg]]


Notice that rigDJ has generated the skeleton of a .4ccm in the left panel; this is the '''preview window''', which shows your .4ccm file as you edit it. (However, you can't edit your .4ccm by typing into this window; it's only a preview!)
Notice that rigDJ has generated the skeleton of a .4ccm in the left panel; this is the '''preview window''', which shows your .4ccm file as you edit it. (However, you can't edit your .4ccm by typing into this window; it's only a preview!)
Line 25: Line 24:
When no .4ccm is loaded, rigDJ defaults to having three "players", representing the anthem, victory anthem, and default goalhorn. It defaults to being open to "Anthem", so we'll add our anthem first. Click "Add Song" to add a song to the Anthem "player".
When no .4ccm is loaded, rigDJ defaults to having three "players", representing the anthem, victory anthem, and default goalhorn. It defaults to being open to "Anthem", so we'll add our anthem first. Click "Add Song" to add a song to the Anthem "player".


[[Image:rigdj-tutorial-2-new-song.png]]
[[Image:RigDJ1.12-tutorial-2-new-song.jpg]]


This creates a new row in the right panel, representing that specific song. The entry is currently empty; click "Open" and navigate to the location of your anthem file.
This creates a new row in the right panel, representing that specific song. The entry is currently empty; click "Open" and navigate to the location of your anthem file.


[[Image:rigdj-songloaded.png]]
[[Image:RigDJ1.12-tutorial-3-songloaded.jpg]]


/m/ has a single anthem that plays in every match, so we don't need to add any conditions to it. Now click the player name (currently "Anthem") and change player. Now add songs for Goalhorn and Victory Anthem; again, /m/ only has one victory anthem, so that plays out the same way; however, they run opponent-specific versions of their default goalhorn. To set this up, we need to use conditions.
/m/ has a single anthem that plays in every match, so we don't need to add any conditions to it. Now click the player name (currently "Anthem") and change player. Now add songs for Goalhorn and Victory Anthem; again, /m/ only has one victory anthem, so that plays out the same way; however, they run opponent-specific versions of their default goalhorn. To set this up, we need to use conditions.
Line 36: Line 35:
First, we go to the Goalhorn player and add all the songs we need (in this case, the ones for the [[2018 4chan Winter Cup]]).
First, we go to the Goalhorn player and add all the songs we need (in this case, the ones for the [[2018 4chan Winter Cup]]).


[[image:rigdj-tutorial-4-multiple-default-goalhorns.png]]
[[Image:RigDJ1.12-tutorial-4-multiple-default-goalhorns.jpg]]


Note the arrows and numbers in the box; these are the ''priorities'' of each song. The song with the lowest priority number with all its conditions met will be the song that plays; as it stands, songs have no conditions, so <code>Trombe - 404.mp3</code> (the default /m/ goalhorn) will always play. We don't want this to happen, so we need to use the arrows to move <code>Trombe - 404.mp3</code> to the bottom of the list.
Note the arrows and numbers in the box; these are the ''priorities'' of each song. The song that is highest on the priority list (with priority number 1) with all its conditions met will be the song that plays; as it stands, songs have no conditions, so <code>Trombe - 404.mp3</code> (the default /m/ goalhorn) will always play. We don't want this to happen, so we need to use the arrows to move <code>Trombe - 404.mp3</code> to the bottom of the list.


[[image:rigdj-tutorial-5-priority.png]]
[[Image:RigDJ1.12-tutorial-5-priority.jpg]]


Now, <code>Trombe - co.mp3</code> will always play: Good for when we play {{team away|co}}, but not so good for anyone else! To tell this song to ''only'' play when facing {{team away|co}}, we need to use a '''condition'''. Click the Add Condition button; this will open a small window, known as the condition editor. First, we need to pick the type of our condition; click the dropdown.
Now, <code>Trombe - co.mp3</code> will always play: Good for when we play {{team away|co}}, but not so good for anyone else! To tell this song to ''only'' play when facing {{team away|co}}, we need to use a '''condition'''. Click the Add Condition button; this will open a small window, known as the condition editor. First, we need to pick the type of our condition; click the dropdown.


[[image:rigdj-tutorial-6-conditions.png]]
[[Image:RigDJ1.12-tutorial-6-conditions.jpg]]


Explanation of the different condition types are listed in the Condition Types section of this page; for now, we want the song to play if we're going against a specific opponent, so we want the <code>opponent</code> condition type.
Explanation of the different condition types are listed in the Condition Types section of this page; for now, we want the song to play if we're going against a specific opponent, so we want the <code>opponent</code> condition type.


[[image:rigdj-tutorial-7-opponent-condition.png]]
[[Image:RigDJ1.12-tutorial-7-opponent-condition.jpg]]


The opponent condition takes one argument: A comma-separated list of opponents to play the song against. For now, we just want to play this song against {{team away|co}}, so we simply enter "co" and click Okay. Repeating this for {{team away|d}} and {{team away|wsg}} gives the full Winter 2018 {{team away|m}} default goalhorn list:
The opponent condition takes one argument: A comma-separated list of opponents to play the song against. For now, we just want to play this song against {{team away|co}}, so we simply enter "co" and click Okay. Repeating this for {{team away|d}} and {{team away|wsg}} gives the full Winter 2018 {{team away|m}} default goalhorn list:


[[image:rigdj-tutorial-8-goalhorns.png]]
[[Image:RigDJ1.12-tutorial-8-goalhorns.jpg]]


== Player Specific Goalhorns ==
== Player Specific Goalhorns ==
This is all well and good for teams with a fixed goalhorn for every player, but more and more teams have specific goalhorns for their strikers, often only under certain conditions. To add a goalhorn for a specific player, we first need to add the player to rigDJ.
This is all well and good for teams with a fixed goalhorn for every player, but more and more teams have specific goalhorns for their strikers, often only under certain conditions. To add a goalhorn for a specific player, we first need to add the player to rigDJ.


[[File:Rigdj-tutorial-9-add-player.png]]
[[Image:RigDJ1.12-tutorial-9-add-player.jpg]]


This creates an empty entry, much like the Anthem, Victory Anthem, and Goalhorn entries were when we started. We can load files up identically to those entries, and add conditions the same way. For our example of Winter 2018 {{team away|m}}, we have five medal strikers, each of which has a brace horn. To make a horn play on a brace (i.e., when the player has scored two or more goals), Add Condition and select the <code>goals</code> condition:
This creates an empty entry, much like the Anthem, Victory Anthem, and Goalhorn entries were when we started. We can load files up identically to those entries, and add conditions the same way. For our example of Winter 2018 {{team away|m}}, we have five medal strikers, each of which has a brace horn. To make a horn play on a brace (i.e., when the player has scored two or more goals), Add Condition and select the <code>goals</code> condition:


[[File:Rigdj-tutorial-10-goals.png]]
[[Image:RigDJ1.12-tutorial-10-goals.jpg]]


For a brace horn, we want to set the comparison operator to <code>>=</code> and the target number to 2; thus, the condition will be true when the player's scored goals are greater than or equal to 2. (Equivalently, we could use <code>> 1</code>.)
For a brace horn, we want to set the comparison operator to <code>>=</code> and the target number to 2; thus, the condition will be true when the player's scored goals are greater than or equal to 2. (Equivalently, we could use <code>> 1</code>.)
Line 67: Line 66:
Repeating this process for the other players gives the full music {{team away|m}} .4ccm file:
Repeating this process for the other players gives the full music {{team away|m}} .4ccm file:


[[File:Rigdj-tutorial-11-music-done.png]]
[[Image:RigDJ1.12-tutorial-11-music-done.jpg]]


== Chants ==
== Chants ==
rigDJ v1.9 does not currently support chants properly; this will be fixed in v2.0 along with a general overhaul of .4ccm file structure. As a workaround, you can create a player named "chant" (all lower case!) and add chants to this "player" as if they were goalhorns.
Current version of rigDJ does not currently support chants properly; this will be fixed in v2.0 along with a general overhaul of .4ccm file structure. As a workaround, you can create a player named "chant" (all lower case!) and add chants to this "player" as if they were goalhorns.


=== Quick and Dirty ===
=== Quick and Dirty ===
* Chants can play for at most twenty seconds (this value can be adjusted by the streamer). Chants which are longer than the limit will be cut off.
* Chants will by default play for thirty seconds (this value can be adjusted or disabled entirely by the streamer). Chants which are longer than the limit will fade off.
* Add chants by using the rigdio keyword <code>chant</code> instead of a player name in your .4ccm. If you're using rigDJ, just add "chant" as a player for now. Order and conditions don't matter for chants.
* Add chants by using the rigdio keyword <code>chant</code> instead of a player name in your .4ccm. If you're using rigDJ, just add "chant" as a player for now. Order and conditions don't matter for chants.
* The streamer determines how many chants per team play in a match, but by default rigdio will not play the same chant twice in a row.
* The streamer determines how many chants per team play in a match, but by default rigdio will not play the same chant twice in a row.
* To greatly simplify things for the streamer, chants should be processed with riglevel (see below). If your computer is a potato and you can't run riglevel, let someone know.
* '''Chants, like all aesthetics, must obey the rules of the streaming platform.'''
* '''Chants, like all aesthetics, must obey the rules of the streaming platform.'''


=== Adding Chants Manually ===
=== Adding Chants Manually ===
In your team's .4ccm file, any line which starts with <code>chant</code> will be added to your team's set of chants. '''As of rigdio 1.9, chants do not support conditions, and are not ordered.''' To add a chant to your audio export, simply add the chant file, such as <code>myteam-chant1.mp3</code> to the folder, and add the line
In your team's .4ccm file, any line which starts with <code>chant</code> will be added to your team's set of chants. '''As of current version of rigdio 1.9, chants do not support conditions, and are not ordered.''' To add a chant to your audio export, simply add the chant file, such as <code>myteam-chant1.mp3</code> to the folder, and add the line
  <nowiki>chant;myteam-chant1.mp3</nowiki>
  <nowiki>chant;myteam-chant1.mp3</nowiki>
to the .4ccm. The streamer's rigdio settings determine how many chants play in a match; there is a setting that disables playing duplicate chants in the same match, so at least two chants are encouraged.
to the .4ccm. The streamer's rigdio settings determine how many chants play in a match; there is a setting that disables playing duplicate chants in the same match, so at least two chants are encouraged.
=== Normalising Chant Audio ===
The v1.9 version of rigDJ includes a new file: <code>riglevel.exe</code>.
In the future, this will be an automatic feature of rigDJ when preparing audio exports, but I live in a twenty-four-hour garbage incineration facility so that probably won't be ready for winter. riglevel ensures that all chants have the same '''peak volume'''; this means streamers won't have to fuck around with audio settings for each individual chant.
To use riglevel, make sure you're on a 64-bit computer (no, I'm not going to cross-compile a 32-bit version), extract the .7z file, and drag and drop your chants onto <code>riglevel.exe</code>. If you can't run riglevel because you're on a 32-bit toaster or your OS doesn't like it, let me or /aesco/ know and we'll find someone to normalise your chants.
Riglevel will create a folder named <code>riglevel_out</code> in the same directory as the input files, containing normalised copies of each of the files. '''Include the normalised copies in your submitted export, not the originals!''' (You may wish to retain the originals for audio-quality purposes.)
== Event Sounds ==
Event sounds are added to players much like goalhorns are. To make an audio file on a player into an event sound, simply add an event instruction through the condition editor, set to the appropriate type of event.
* Event sounds, like chants, do not use conditions or priority. This will be changed in 2.0.
* While multiple event instructions can be applied to one file, only the last instruction matters when determining the event type, so there should be no reason to do this.
* Like chants, event sounds should be normalised with riglevel.
'''NOTE:''' Unlike with player goalhorns, the rigdio name of a player must match their PES name (since PES names are passed from SENPAI). (Rigdio names are not case-sensitive, so RX-78-2 Gundam in rigdio matches RX-78-2 GUNDAM in PES.)


= Editing Raw .4ccm Files =
= Editing Raw .4ccm Files =
.4ccm files are just plain text files with an alternate extension, and can be edited with your text editor of choice.
.4ccm files are just plain text files with an alternate extension, and can be edited with your text editor of choice.


As an example, the following represents {{team away|o}} from the [[2017 4chan Spring Babby Cup]]:
As an example, the following represents {{team away|toy}} from the [[2022 4chan Winter Cup]]:
  <nowiki>name;o
  <nowiki># team identifier
# default anthem
name;toy
anthem;O - 1 - Anthem.mp3
# victory anthem
victory;O - 2 - Victory Anthem.mp3


# default goalhorn
# reserved names
goal;O - 3 - Main goalhorn.mp3
anthem;Play With Me.mp3;start 0:11
victory;Dare.mp3
goal;The Touch.mp3


# player goalhorns
# regular players
Takumi;O - 4 - Takumi single goalhorn.mp3;goals = 1
Madoka Titus;Madoka - Ante Up.mp3;start 0:17
Takumi;O - 5 - Takumi brace+ goalhorn.mp3;goals >= 2
OT Chainsaw;Orange Transparent Chainsaw Rap.mp3;goals >= 2;start 0:10
Twingo;O - 6 - Twingo goalhorn.mp3;goals = 1
Optimus Prime;Transformers Theme by Lion.mp3;start 010
Miata;O - 7 - Miata goalhorn.mp3
Woody;You've Got a Friend in Me  (Wheezy Version).mp3;goals >= 3
Scotty Kilmer;O - 8 - Scotty Kilmer goalhorn.mp3
chant;Cobra Chant.mp3
[COOL VIBRATIONS];O - 9 - [COOL VIBRATIONS] goalhorn.mp3</nowiki>
chant;Godzilla Chant.mp3
chant;Sideways Elbow Action Chant.mp3
chant;He-Man Chant.mp3
chant;Toy Story Chant.mp3
chant;Power Rangers Chant.mp3
chant;Roll Out Chant.mp3
chant;HEY Chant.mp3
chant;Yo Yo Piraka Chant.mp3</nowiki>


== File Layout ==
== File Layout ==
Line 130: Line 117:
** Lines starting with <code>victory;</code> denote victory anthems. If no victory anthem is provided, information from the <code>anthem;</code> lines will be duplicated for victory anthems.
** Lines starting with <code>victory;</code> denote victory anthems. If no victory anthem is provided, information from the <code>anthem;</code> lines will be duplicated for victory anthems.
** Lines starting with <code>goal;</code> denote default goalhorns (those not associated with any particular player).
** Lines starting with <code>goal;</code> denote default goalhorns (those not associated with any particular player).
** Lines starting with <code>chant;</code> denote chants that are played throughout the match to hype up fans of the team.
** All other lines start with names of players, and will assign their goalhorns to a button for that specific player.
** All other lines start with names of players, and will assign their goalhorns to a button for that specific player.
* If multiple players share a goalhorn, separate their names with commas. (Because of this, player names cannot contain commas.)
* If multiple players share a goalhorn, separate their names with commas. (Because of this, player names cannot contain commas.)


== Detailed Breakdown ==
== Detailed Breakdown ==
Returning to the {{team away|o}} example:
Returning to the {{team away|toy}} example:
* <code>name;o</code> tells us this is the export for {{team away|o}}.
* <code>name;toy</code> tells us this is the export for {{team away|toy}}.
* <code>anthem;O - 1 - Anthem.mp3</code> tells us that we should play O - 1 - Anthem.mp3 as an anthem.
* <code>anthem;Play With Me.mp3;start 0:11</code> tells us that we should play Play With Me.mp3 as an anthem, starting it at the 11-seconds timestamp (0:11) of the song.
* <code>victory;O - 2 - Victory Anthem.mp3</code> tells us that we should play O - 2 - Victory Anthem.mp3 as a victory anthem.
* <code>victory;Dare.mp3</code> tells us that we should play Dare.mp3 as a victory anthem.
* <code>goal;O - 3 - Main goalhorn.mp3</code> tells us that we should play O - 3 - Main goalhorn.mp3 as a standard goalhorn.
* <code>goal;The Touch.mp3</code> tells us that we should play The Touch.mp3 as a standard goalhorn.
* The next two lines both assign goalhorns to the player Takumi, and use the <code>goals</code> condition to determine which one plays:
* The next four lines assign goalhorns to players Madoka Titus, OT Chainsaw, Optimus Prime, and Woody. Both OT Chainsaw and Woody use the <code>goals</code> condition to determine which one plays:
** <code>Takumi;O - 4 - Takumi single goalhorn.mp3;goals = 1</code> says that when Takumi has ''exactly one goal'' (i.e., his first goal of the match), play O - 4 - Takumi single goalhorn.mp3.
** <code>Madoka Titus;Madoka - Ante Up.mp3;start 0:17</code> will always play Madoka - Ante Up.mp3 when Madoka Titus scores, starting it at the 17-seconds timestamp (0:17) of the song.
** <code>Takumi;O - 5 - Takumi brace+ goalhorn.mp3;goals >= 2</code> says that when Takumi has ''two or more goals'', play O - 5 - Takumi brace+ goalhorn.mp3.
** <code>OT Chainsaw;Orange Transparent Chainsaw Rap.mp3;goals >= 2;start 0:10</code> says that when OT Chainsaw has ''two or more goals'', play Orange Transparent Chainsaw Rap.mp3, starting it at the 10-seconds timestamp (0:10) of the song. When this condition is not met, it will default to the regular goalhorn.
* <code>Twingo;O - 6 - Twingo goalhorn.mp3;goals = 1</code> also uses the <code>goals</code> condition. Twingo's goalhorn will play for its first goal of the match. When this condition is not met, it will default to the regular goalhorn.
** <code>Optimus Prime;Transformers Theme by Lion.mp3;start 010</code> will always play Transformers Theme by Lion.mp3 when Optimus Prime scores, starting it at the 10-seconds timestamp (010) of the song.
* <code>Miata;O - 7 - Miata goalhorn.mp3</code> will always play O - 7 - Miata goalhorn.mp3 when Miata scores.
** <code>Woody;You've Got a Friend in Me  (Wheezy Version).mp3;goals >= 3</code> says that when Woody has ''three or more goals'', play You've Got a Friend in Me  (Wheezy Version).mp3. Just like OT Chainsaw, when this condition is not met, it will default to the regular goalhorn.
* <code>Scotty Kilmer;O - 8 - Scotty Kilmer goalhorn.mp3</code> will always play O - 8 - Scotty Kilmer goalhorn.mp3 when Scotty Kilmer scores.
* The remaining lines are chants that the streamer can play throughout the match to hype up /toy/ fans. The streamer can choose to play a specific chant like Cobra Chant.mp3 or have Rigdio randomly pick and play one from the list of chants.
* <code>[COOL VIBRATIONS];O - 9 - [COOL VIBRATIONS] goalhorn.mp3</code> will always play O - 9 - [COOL VIBRATIONS] goalhorn.mp3 when [COOL VIBRATIONS] scores.


== Quick Export Filename Conventions ==
== Quick Export Filename Conventions ==
Line 177: Line 164:
== Normal Conditions ==
== Normal Conditions ==
Normal conditions check something in rigdio's representation of the game state, and either claim they are true or false. A song will only play if all of its conditions are true.
Normal conditions check something in rigdio's representation of the game state, and either claim they are true or false. A song will only play if all of its conditions are true.
* A '''comeback''' condition says to only play the horn when the team was behind prior to the goal being scored.
* A '''comeback''' condition says to only play the horn when the team was behind prior to the goal being scored.
* An '''event''' instruction marks a file as an event clip rather than a goalhorn. Event clips can be '''yellow''', '''red''', '''sub''', or '''owngoal''', and will play upon [[SENPAI]] sending the appropriate event for the appropriate player.
* An '''every''' condition says to only play the horn every second/third/etc. goal scored by the player.
* An '''every''' condition says to only play the horn every second/third/etc. goal scored by the player.
* A '''first''' condition says to only play the horn if it's the very first goal the team scores in the match.
* A '''first''' condition says to only play the horn if it's the very first goal the team scores in the match.
Line 188: Line 175:
* An '''once''' condition will be true on the first check and false thereafter.
* An '''once''' condition will be true on the first check and false thereafter.
* An '''opponent''' condition says to only play the horn if the opponent is one of the given teams.
* An '''opponent''' condition says to only play the horn if the opponent is one of the given teams.
* A '''teamgoals''' condition says to only play the horn if the team's scored goals meets the given condition.


== Meta-Conditions ==
== Meta-Conditions ==
Meta-conditions are conditions which operate on the results of other conditions, rather than checking the game state directly. Right now, there is only one meta-condition.
Meta-conditions are conditions which operate on the results of other conditions, rather than checking the game state directly. Right now, there is only one meta-condition.
* '''not''' operates on one condition, and reverses its result: if the condition would be true, it becomes false, and if it would be false, it becomes true.
* '''not''' operates on one condition, and reverses its result: if the condition would be true, it becomes false, and if it would be false, it becomes true.


== Instructions ==
== Instructions ==
Instructions are "conditions" in the sense that they are added and edited in the same way, but do not determine whether or not a file plays at all.
Instructions are "conditions" in the sense that they are added and edited in the same way, but do not determine whether or not a file plays at all.
 
* An '''end''' instruction specifies what to do when the file finishes playing in the middle of a goal. Right now, the two possible values are '''loop''' (the default; starts from the beginning) and '''stop''' (stops playback).
* A '''randomise''' instruction adds horn to the list, which will be used to pick a random horn, but ONLY if all horns for single player has this instruction. There is a check box on the RigDJ window that immediately gives all horns on the currently selected player the '''randomise''' instruction when checked, and removes them if unchecked.
* A '''pause''' instruction specifies what to do when the song is paused: continue (do nothing) or restart (set back to the beginning).
* A '''pause''' instruction specifies what to do when the song is paused: continue (do nothing) or restart (set back to the beginning).
* A '''start''' instruction specifies what time to start the horn at.
* A '''start''' instruction specifies what time to start the horn at.
* An '''end''' instruction specifies what to do when the file finishes playing in the middle of a goal. Right now, the two possible values are '''loop''' (the default; starts from the beginning) and '''stop''' (stops playback).
* A '''speed''' instruction specifies a playback speed of horn.
* An '''event''' instruction marks a file as an event clip rather than a goalhorn. Event clips can be '''yellow''', '''red''', '''sub''', or '''owngoal''', and will play upon [[SENPAI]] sending the appropriate event for the appropriate player.


= Bug Reports and Feature Requests =
= Bug Reports and Feature Requests =
To report a bug, either open an issue on GitHub, or contact Archie on [http://discord.gg/6VvMt58 the /aesco/ Discord]. Bugs will be patched out as soon as possible.
To report a bug, contact [http://discord.gg/6VvMt58 /aesco/]. Bugs will be patched out as soon as possible.


If you have an idea for a new feature, or a way that would make the program run smoother, I suggest opening a GitHub issue, otherwise Archie might forget it.
If you have an idea for a new feature, or a way that would make the program run smoother, contact /aesco/.


==See Also==
==See Also==
*[[Rigdio/Future]]
*[[Rigdio/Future]]
*[[Using Soundboard to Automatically Play Anthems]]
*[[Using Soundboard to Automatically Play Anthems]]

Latest revision as of 07:06, 2 September 2022

rigdio is an automated goalhorn/anthem player designed to ease the burden on streamers during cup events, and increase the options available to managers. It is available for download here. The source code for it is also available here. The latest versions are Rigdio v1.172 and RigDJ v1.122 as of 2nd September 2022. Patch notes

Contents of a Music Export

A music export for rigdio is a folder containing all of the songs, as well as a .4ccm file which tells rigdio how to use them. Music files can be any format playable by VLC non video format preferred. An important thing to note, for a .4ccm file to work on Rigdio, it needs to have at least an anthem, a victory anthem, and a standard goalhorn.

There are two main ways to build a .4ccm file, each outlined below.

Building .4ccm Files with rigDJ

rigDJ is the GUI editor for .4ccm files, released along with rigdio. It allows graphical editing of player songs and conditions; if you intend to use more complex instructions, it is recommended you use rigDJ to avoid needing to know the .4ccm formatting for every condition type.

To use rigDJ, download rigdj.exe from the newest release. (If you aren't on Windows, download the source and run rigdj.py. Python 3.5 is recommended, I can't guarantee it will work with older versions.)

Basic Operation

The rigDJ main window is pictured below. For this example, we will create a .4ccm for M icon.png /m/.

RigDJ1.12-mainwindow.jpg

We'll start by entering the team name (no slashes!) into the "Team" entry box.

RigDJ1.12-tutorial-1-name-and-preview.jpg

Notice that rigDJ has generated the skeleton of a .4ccm in the left panel; this is the preview window, which shows your .4ccm file as you edit it. (However, you can't edit your .4ccm by typing into this window; it's only a preview!)

When no .4ccm is loaded, rigDJ defaults to having three "players", representing the anthem, victory anthem, and default goalhorn. It defaults to being open to "Anthem", so we'll add our anthem first. Click "Add Song" to add a song to the Anthem "player".

RigDJ1.12-tutorial-2-new-song.jpg

This creates a new row in the right panel, representing that specific song. The entry is currently empty; click "Open" and navigate to the location of your anthem file.

RigDJ1.12-tutorial-3-songloaded.jpg

/m/ has a single anthem that plays in every match, so we don't need to add any conditions to it. Now click the player name (currently "Anthem") and change player. Now add songs for Goalhorn and Victory Anthem; again, /m/ only has one victory anthem, so that plays out the same way; however, they run opponent-specific versions of their default goalhorn. To set this up, we need to use conditions.

Conditions and Priorities

First, we go to the Goalhorn player and add all the songs we need (in this case, the ones for the 2018 4chan Winter Cup).

RigDJ1.12-tutorial-4-multiple-default-goalhorns.jpg

Note the arrows and numbers in the box; these are the priorities of each song. The song that is highest on the priority list (with priority number 1) with all its conditions met will be the song that plays; as it stands, songs have no conditions, so Trombe - 404.mp3 (the default /m/ goalhorn) will always play. We don't want this to happen, so we need to use the arrows to move Trombe - 404.mp3 to the bottom of the list.

RigDJ1.12-tutorial-5-priority.jpg

Now, Trombe - co.mp3 will always play: Good for when we play Co icon.png /co/, but not so good for anyone else! To tell this song to only play when facing Co icon.png /co/, we need to use a condition. Click the Add Condition button; this will open a small window, known as the condition editor. First, we need to pick the type of our condition; click the dropdown.

RigDJ1.12-tutorial-6-conditions.jpg

Explanation of the different condition types are listed in the Condition Types section of this page; for now, we want the song to play if we're going against a specific opponent, so we want the opponent condition type.

RigDJ1.12-tutorial-7-opponent-condition.jpg

The opponent condition takes one argument: A comma-separated list of opponents to play the song against. For now, we just want to play this song against Co icon.png /co/, so we simply enter "co" and click Okay. Repeating this for D icon.png /d/ and Wsg icon.png /wsg/ gives the full Winter 2018 M icon.png /m/ default goalhorn list:

RigDJ1.12-tutorial-8-goalhorns.jpg

Player Specific Goalhorns

This is all well and good for teams with a fixed goalhorn for every player, but more and more teams have specific goalhorns for their strikers, often only under certain conditions. To add a goalhorn for a specific player, we first need to add the player to rigDJ.

RigDJ1.12-tutorial-9-add-player.jpg

This creates an empty entry, much like the Anthem, Victory Anthem, and Goalhorn entries were when we started. We can load files up identically to those entries, and add conditions the same way. For our example of Winter 2018 M icon.png /m/, we have five medal strikers, each of which has a brace horn. To make a horn play on a brace (i.e., when the player has scored two or more goals), Add Condition and select the goals condition:

RigDJ1.12-tutorial-10-goals.jpg

For a brace horn, we want to set the comparison operator to >= and the target number to 2; thus, the condition will be true when the player's scored goals are greater than or equal to 2. (Equivalently, we could use > 1.)

Repeating this process for the other players gives the full music M icon.png /m/ .4ccm file:

RigDJ1.12-tutorial-11-music-done.jpg

Chants

Current version of rigDJ does not currently support chants properly; this will be fixed in v2.0 along with a general overhaul of .4ccm file structure. As a workaround, you can create a player named "chant" (all lower case!) and add chants to this "player" as if they were goalhorns.

Quick and Dirty

  • Chants will by default play for thirty seconds (this value can be adjusted or disabled entirely by the streamer). Chants which are longer than the limit will fade off.
  • Add chants by using the rigdio keyword chant instead of a player name in your .4ccm. If you're using rigDJ, just add "chant" as a player for now. Order and conditions don't matter for chants.
  • The streamer determines how many chants per team play in a match, but by default rigdio will not play the same chant twice in a row.
  • Chants, like all aesthetics, must obey the rules of the streaming platform.

Adding Chants Manually

In your team's .4ccm file, any line which starts with chant will be added to your team's set of chants. As of current version of rigdio 1.9, chants do not support conditions, and are not ordered. To add a chant to your audio export, simply add the chant file, such as myteam-chant1.mp3 to the folder, and add the line

chant;myteam-chant1.mp3

to the .4ccm. The streamer's rigdio settings determine how many chants play in a match; there is a setting that disables playing duplicate chants in the same match, so at least two chants are encouraged.

Editing Raw .4ccm Files

.4ccm files are just plain text files with an alternate extension, and can be edited with your text editor of choice.

As an example, the following represents Toy icon.png /toy/ from the 2022 4chan Winter Cup:

# team identifier
name;toy

# reserved names
anthem;Play With Me.mp3;start 0:11
victory;Dare.mp3
goal;The Touch.mp3

# regular players
Madoka Titus;Madoka - Ante Up.mp3;start 0:17
OT Chainsaw;Orange Transparent Chainsaw Rap.mp3;goals >= 2;start 0:10
Optimus Prime;Transformers Theme by Lion.mp3;start 010
Woody;You've Got a Friend in Me  (Wheezy Version).mp3;goals >= 3
chant;Cobra Chant.mp3
chant;Godzilla Chant.mp3
chant;Sideways Elbow Action Chant.mp3
chant;He-Man Chant.mp3
chant;Toy Story Chant.mp3
chant;Power Rangers Chant.mp3
chant;Roll Out Chant.mp3
chant;HEY Chant.mp3
chant;Yo Yo Piraka Chant.mp3

File Layout

The file is laid out like so:

  • Empty lines and lines starting with a # are ignored.
  • The name;TEAMNAME line tells rigdio what team this file is for. If present, it must be the first line in the file; if the first lime does not provide a name, the file name will be used instead.
  • Other than the name; line, all other lines are of the form NAME;SONGFILE;CONDITIONS. There are three "special" names, which cannot be used for players:
    • Lines starting with anthem; denote anthems. Per cup rules, at least one anthem is required.
    • Lines starting with victory; denote victory anthems. If no victory anthem is provided, information from the anthem; lines will be duplicated for victory anthems.
    • Lines starting with goal; denote default goalhorns (those not associated with any particular player).
    • Lines starting with chant; denote chants that are played throughout the match to hype up fans of the team.
    • All other lines start with names of players, and will assign their goalhorns to a button for that specific player.
  • If multiple players share a goalhorn, separate their names with commas. (Because of this, player names cannot contain commas.)

Detailed Breakdown

Returning to the Toy icon.png /toy/ example:

  • name;toy tells us this is the export for Toy icon.png /toy/.
  • anthem;Play With Me.mp3;start 0:11 tells us that we should play Play With Me.mp3 as an anthem, starting it at the 11-seconds timestamp (0:11) of the song.
  • victory;Dare.mp3 tells us that we should play Dare.mp3 as a victory anthem.
  • goal;The Touch.mp3 tells us that we should play The Touch.mp3 as a standard goalhorn.
  • The next four lines assign goalhorns to players Madoka Titus, OT Chainsaw, Optimus Prime, and Woody. Both OT Chainsaw and Woody use the goals condition to determine which one plays:
    • Madoka Titus;Madoka - Ante Up.mp3;start 0:17 will always play Madoka - Ante Up.mp3 when Madoka Titus scores, starting it at the 17-seconds timestamp (0:17) of the song.
    • OT Chainsaw;Orange Transparent Chainsaw Rap.mp3;goals >= 2;start 0:10 says that when OT Chainsaw has two or more goals, play Orange Transparent Chainsaw Rap.mp3, starting it at the 10-seconds timestamp (0:10) of the song. When this condition is not met, it will default to the regular goalhorn.
    • Optimus Prime;Transformers Theme by Lion.mp3;start 010 will always play Transformers Theme by Lion.mp3 when Optimus Prime scores, starting it at the 10-seconds timestamp (010) of the song.
    • Woody;You've Got a Friend in Me (Wheezy Version).mp3;goals >= 3 says that when Woody has three or more goals, play You've Got a Friend in Me (Wheezy Version).mp3. Just like OT Chainsaw, when this condition is not met, it will default to the regular goalhorn.
  • The remaining lines are chants that the streamer can play throughout the match to hype up /toy/ fans. The streamer can choose to play a specific chant like Cobra Chant.mp3 or have Rigdio randomly pick and play one from the list of chants.

Quick Export Filename Conventions

rigdio also supports "quick export" conventions, designed to make preparing an export without conditions simple. Consider the following (Gsg icon.png /gsg/ from /vg/ League 8):

name;gsg
anthem
victory;gsg - Anthem.mp3
goal
Kojak
Mosley
Syndicalism

The lack of song names on lines tells the program to look for a specific filename:

  • TEAMNAME - Anthem.mp3 for anthems.
  • TEAMNAME - Victory Anthem.mp3 for victory anthems.
  • TEAMNAME - Goalhorn.mp3 for goalhorns.
  • TEAMNAME - PLAYERNAME Goalhorn.mp3 for anything other than a reserved name.

The Gsg icon.png /gsg/ file is thus equivalent to.

name;gsg
anthem;gsg - Anthem.mp3
victory;gsg - Anthem.mp3
goal;gsg - Goalhorn.mp3
Kojak;gsg - Kojak Goalhorn.mp3
Mosley;gsg - Mosley Goalhorn.mp3
Syndicalism;gsg - Syndicalism Goalhorn.mp3

Note that quick exports can only be used on lines which have no conditions.

List of Rigdio Conditions

Normal Conditions

Normal conditions check something in rigdio's representation of the game state, and either claim they are true or false. A song will only play if all of its conditions are true.

  • A comeback condition says to only play the horn when the team was behind prior to the goal being scored.
  • An event instruction marks a file as an event clip rather than a goalhorn. Event clips can be yellow, red, sub, or owngoal, and will play upon SENPAI sending the appropriate event for the appropriate player.
  • An every condition says to only play the horn every second/third/etc. goal scored by the player.
  • A first condition says to only play the horn if it's the very first goal the team scores in the match.
  • A goals condition says to only play the horn if the player's goals meet the given condition.
  • A home condition says to only play the horn if the team playing is at home.
  • A lead condition says to only play the horn if the team's lead meets the given condition. (Being behind is negative; setting lead to <= 0 is equivalent to using a comeback condition.)
  • A match condition says to only play the horn if it is the specified kind of match (group stage, RO16, etc.).
  • A mostgoals condition says to only play the horn if the player has scored the most goals of any player on the team.
  • An once condition will be true on the first check and false thereafter.
  • An opponent condition says to only play the horn if the opponent is one of the given teams.
  • A teamgoals condition says to only play the horn if the team's scored goals meets the given condition.

Meta-Conditions

Meta-conditions are conditions which operate on the results of other conditions, rather than checking the game state directly. Right now, there is only one meta-condition.

  • not operates on one condition, and reverses its result: if the condition would be true, it becomes false, and if it would be false, it becomes true.

Instructions

Instructions are "conditions" in the sense that they are added and edited in the same way, but do not determine whether or not a file plays at all.

  • An end instruction specifies what to do when the file finishes playing in the middle of a goal. Right now, the two possible values are loop (the default; starts from the beginning) and stop (stops playback).
  • A randomise instruction adds horn to the list, which will be used to pick a random horn, but ONLY if all horns for single player has this instruction. There is a check box on the RigDJ window that immediately gives all horns on the currently selected player the randomise instruction when checked, and removes them if unchecked.
  • A pause instruction specifies what to do when the song is paused: continue (do nothing) or restart (set back to the beginning).
  • A start instruction specifies what time to start the horn at.
  • A speed instruction specifies a playback speed of horn.

Bug Reports and Feature Requests

To report a bug, contact /aesco/. Bugs will be patched out as soon as possible.

If you have an idea for a new feature, or a way that would make the program run smoother, contact /aesco/.

See Also