Welcome to the Creatures Wiki! Log in and join the community.

Difference between revisions of "Music"

From Creatures Wiki
Jump to navigation Jump to search
(Add content.)
 
(50 intermediate revisions by 16 users not shown)
Line 1: Line 1:
{{Inuse}}
+
'''Music''' in the [[Creatures series]] of games started out in ''[[Creatures]]'' as a variety of synthesized chimes, chords, bloops and other non-specific ambient sounds, simply combined together into audio files (MU01[[WAV files|.WAV]] to MU28.WAV in the Sounds folder on Windows) and played at certain points in the game or as certain [[applet]]s were opened.
==Introduction==
 
'''Music''' in the [[Creatures]] series of games started out in [[Creatures 1]] as a variety of synthesized chimes, chords, bloops and other non-specific sounds. For [[Creatures 2]], a far more capable system was created, as outlined below. This information was gained by [[User:GreenReaper]] during a university project and should not be considered official - no details of the MNG format were ever released by [[Creatures Labs]], only a three-page article ([[http://web.archive.org/web/20020614201723/http://www.creatures.co.uk/library/science/lib_science_musicbehind1.htm The Music of Creatures]]) describing some features.
 
  
==Outline==
+
[[Image:Creaturesmontage.jpg|right|frame|[[Creatures Montage]] is an 11-minute track of music by [[Andrew Barnabas]]]]The ''Creatures'' music was created on a Roland JV-1080 synthesizer by [[Andrew Barnabas]], who also made an album of computer music called ''Shades'' whle in the [https://web.archive.org/web/19970719115059/www.crusaders.no/members/nightshade/si.htm Cyberlife music studio] - one track of this (now available for download on the [[Creatures Wiki]]) was called ''[[Creatures Montage]]'', and contained music from the game's introductory movie. See also [[Andrew Barnabas|Andrew's wiki page]], and the '''[https://www.bobandbarn.com/ Bob and Barn]''' home page.
Music is stored in 'Munge' files, with the extension ''MNG'' (at the time, the MNG extension was not in use - it was later appropriated as a replacement for PNG). The music is formed of separate samples in a partial WAV format combined with a script which is interpreted by the music engine.
 
==File Structure==
 
<table cellspacing="0" width="559">
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
  <p>&nbsp;Position</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  
  <p>&nbsp;Length</p>
+
For ''[[Creatures 2]]'', a far more capable dynamic music system was created&mdash;MNG&mdash;and this system was also used in ''[[Creatures 3]]'' and ''[[Docking Station]]''. You can read about [[MNG files]], which changed depending on factors such as location and the mood of [[creature]]s.
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
  <p>&nbsp;Description</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;Notes</p>
 
  
  </td>
+
[[Creatures Adventures]], [[Creatures Playground]] and [[Amazing Virtual Sea-Monkeys]] used non-dynamic [[Wikipedia:MIDI|MIDI]] music instead, which was far easier (and hence cheaper) to produce than using the complex MNG system.
</tr>
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
  <p>&nbsp;0</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  <p>&nbsp;4</p>
 
  
  </td>
+
Both [[Creatures PS1|Creatures]] and [[Creatures - Raised in Space]] on the Sony Playstation and Gameboy Advance simply used wave recordings for their music. Both games share the same soundtrack, most likely due to budget restrictions, and it is unknown who was responsible for composing the music, although given the nature of the games it is indeed possible that the tracks are probably royalty free and were not composed particularly for the games.  Some songs are [https://www.youtube.com/watch?v=Oi4zfJ9F3uI available] on [[wikipedia:YouTube|YouTube]].
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
  <p>&nbsp;Number of samples</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;&nbsp;</p>
 
  </td>
 
</tr>
 
  
<tr>
+
==Editing and Playing Creatures Music==
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
+
For games which use the MNG format, two tools are designed to edit the music, [[MNGPlayer]] and [[MNGPad]] - MNGPlayer lets you play music in the background (or foreground), while MNGPad allows you to edit existing MNG files and create your own. You will probably want to read the first part of [[MNG file format]] to see how the scripts work, although a tutorial is included with the programs. [[MNGPlayer2]] was released for the [[CCSF 2021]].
  <p>&nbsp;4</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  <p>&nbsp;4</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
  
  <p>&nbsp;Position of
+
The music of other games can be manipulated using normal audio or music editors.
  script</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;Zero-based byte
 
  position</p>
 
  </td>
 
</tr>
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
  
  <p>&nbsp;8</p>
+
==DJ_G==
  </td>
+
Hidden within the audio directory of Creatures 2, an amusing musical track entitled 'DJ_G' is to be found, consisting of a [[Grendel]] repeatedly hitting a [[Norn]] to the sound of a techno remix of some of the sounds from the game. Upon the release of [[Creatures 3]] a similar track was found in there. These may have been made by [[Mark Ashton]]. See also [[Defiant Doosers]].
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  <p>&nbsp;4</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
  <p>&nbsp;Length of script</p>
 
  
  </td>
+
==Docking Station events music==
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
+
Admittedly, Docking Station's birth and death music was rather lacking - for the sake of size the [[Hub]] uses the same music as death (and it is annoying after a while) - the birth music was original, but not terribly good either. [[Gryph]] provides a tutorial to make Docking Station use Creatures 3's birth music instead:
  <p>&nbsp;Length in bytes</p>
 
  </td>
 
</tr>
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
  <p>&nbsp;12</p>
 
  
  </td>
+
#Copy ../Creatures 3/Sounds/Events.mng to your ../Docking Station/Sounds folder
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
+
#Open ../Docking Station/Bootstrap/010 Docking Station/DS life events factory - PHOTOGRAPHS THE DEAD.cos. You may want to make a backup first, but you'll only be changing a couple of lines
  <p>&nbsp;4</p>
+
#Scroll down until you see the comment '* music'
  </td>
+
#Change
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
+
<pre>
  <p>&nbsp;Position of first
+
*music
  sample</p>
+
doif va00 = 3
  </td>
+
strk 30 "ds_music.mng\\TremeloBleep"
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
+
elif va00 = 7
 +
strk 20 "ds_music.mng\\MetallicChords"
 +
</pre>
 +
to
 +
<pre>
 +
*music
 +
doif va00 = 3
 +
strk 30 "Events.mng\\Birth"
 +
elif va00 = 7
 +
strk 20 "Events.mng\\Death"
 +
</pre>
 +
Now, create a new world and Creatures 3's music should play upon birth and death [[life event|events]].
  
  <p>&nbsp;Zero-based byte
+
Editing the near death music is similar:
  position</p>
+
#Open ../Docking Station/Bootstrap/010 Docking Station/!DS_game variables.cos after doing step 1 of the previous process.
  </td>
+
#Change
</tr>
+
<pre>
<tr>
+
* track for near death
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
+
sets game "engine_near_death_track_name" "ds_music.mng\\MetallicChords"
  <p>&nbsp;16</p>
+
</pre>
  </td>
+
to
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
+
<pre>
 +
* track for near death
 +
sets game "engine_near_death_track_name" "events.mng\\NearDeath"
 +
</pre>
  
  <p>&nbsp;4</p>
+
After this, create a new world and the C3 Near Death music should play whenever the situation arises.
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
  <p>&nbsp;Length of first
 
  sample</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;Length in bytes</p>
 
  
  </td>
+
''If you're looking for musical objects, try [[Instrument]].''
</tr>
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
  <p>&nbsp;20</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  <p>&nbsp;4</p>
 
  
  </td>
+
==Related links==
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
+
*[[MNG files]]
  <p>&nbsp;Position of
+
*[[WAV files]]
  second sample</p>
+
*[[MNGPlayer]] and [[MNGPad]]
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;Zero-based byte
 
  position</p>
 
  </td>
 
</tr>
 
  
<tr>
+
==External links==
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
+
__NOTOC__
  <p>&nbsp;…</p>
+
*[https://web.archive.org/web/20170626182840/http://www.gamewareeurope.com:80/GWDev/creatures_more.php?id=459_0_6_0_M27 The Music Behind Creatures]
  </td>
+
*[https://web.archive.org/web/19970719115059/www.crusaders.no/members/nightshade/si.htm See the Cyberlife recording studio!]
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
+
[[Category:Internals]]
  <p>&nbsp;…</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
 
 
  <p>&nbsp;…</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;&nbsp;</p>
 
  </td>
 
</tr>
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
 
 
  <p>&nbsp;N * 8 + 8</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  <p>&nbsp;4</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;width: 142.65pt;" valign="top" width="190">
 
  <p>&nbsp;Position of last sample</p>
 
  </td>
 
 
 
  <td style="border-width: thin; border-style: dashed;width: 153pt;" valign="top" width="204">
 
  <p>&nbsp;N is the number
 
  of samples</p>
 
  </td>
 
</tr>
 
<tr>
 
  <td style="border-width: thin; border-style: dashed;width: 68.3pt;" valign="top" width="91">
 
  <p>&nbsp;N * 8 + 12</p>
 
  </td>
 
 
 
  <td style="border-width: thin; border-style: dashed;width: 55.45pt;" valign="top" width="74">
 
  <p>&nbsp;Variable</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;" valign="top" width="190">
 
  <p>&nbsp;First sample</p>
 
  </td>
 
  <td style="border-width: thin; border-style: dashed;" valign="top" width="204">
 
  <p>&nbsp;Followed by the
 
  rest of the samples</p>
 
  </td>
 
 
 
</tr>
 
</table>
 
==Script Encryption==
 
The music scripts of MNG files are saved in a 'scrambled' format, encrypted with an XOR function. This function works on a byte level, with a starting operand value of 0x5 and an increment of 0xC1. Sample routines follow - as XOR is a reversible operation, they can be used to both scramble and descramble scripts.
 
 
 
===Visual Basic Routine===
 
<pre>
 
Private Function Scramble(ByVal data As Byte()) As Byte()
 
  Dim hb as Byte, count as Integer
 
  hb = 5
 
  For count = 0 to data.Length – 1
 
    data(count) = data(count) Xor hb
 
    If hb < &H3F Then
 
      hb = CByte(hb + &HC1)
 
    Else
 
      hb = Cbyte(hb + (&HC1 - &H100))
 
    End If
 
  Next count
 
  Return data
 
End Function
 
</pre>
 
 
 
===Assembly Routine===
 
<pre>
 
.text:00543400 sub_0_543400    proc near              .text:00543400
 
.text:00543400 arg_0          = dword ptr  8
 
.text:00543400 arg_4          = dword ptr  0Ch
 
.text:00543400
 
.text:00543400                push    ebp
 
.text:00543401                mov    ebp, esp
 
.text:00543403                push    esi
 
.text:00543404                mov    esi, [ebp+arg_4]
 
.text:00543407                xor    eax, eax
 
.text:00543409                mov    cl, 5
 
.text:0054340B                test    esi, esi
 
.text:0054340D                jle    short loc_0_543424
 
.text:0054340F                mov    edx, [ebp+arg_0]
 
.text:00543412                push    ebx
 
.text:00543413
 
.text:00543413 loc_0_543413:  ; CODE XREF: sub_0_543400+21
 
.text:00543413                mov    bl, [eax+edx]
 
.text:00543416                xor    bl, cl
 
.text:00543418                add    cl, 0C1h
 
.text:0054341B                mov    [eax+edx], bl
 
.text:0054341E                inc    eax
 
.text:0054341F                cmp    eax, esi
 
.text:00543421                jl      short loc_0_543413
 
.text:00543423                pop    ebx
 
.text:00543424
 
.text:00543424 loc_0_543424:  ; CODE XREF: sub_0_543400+D
 
.text:00543424                pop    esi
 
.text:00543425                pop    ebp
 
.text:00543426                retn
 
.text:00543426 sub_0_543400    endp
 
</pre>
 

Latest revision as of 07:07, 4 January 2024

Music in the Creatures series of games started out in Creatures as a variety of synthesized chimes, chords, bloops and other non-specific ambient sounds, simply combined together into audio files (MU01.WAV to MU28.WAV in the Sounds folder on Windows) and played at certain points in the game or as certain applets were opened.

Creatures Montage is an 11-minute track of music by Andrew Barnabas

The Creatures music was created on a Roland JV-1080 synthesizer by Andrew Barnabas, who also made an album of computer music called Shades whle in the Cyberlife music studio - one track of this (now available for download on the Creatures Wiki) was called Creatures Montage, and contained music from the game's introductory movie. See also Andrew's wiki page, and the Bob and Barn home page.

For Creatures 2, a far more capable dynamic music system was created—MNG—and this system was also used in Creatures 3 and Docking Station. You can read about MNG files, which changed depending on factors such as location and the mood of creatures.

Creatures Adventures, Creatures Playground and Amazing Virtual Sea-Monkeys used non-dynamic MIDI music instead, which was far easier (and hence cheaper) to produce than using the complex MNG system.

Both Creatures and Creatures - Raised in Space on the Sony Playstation and Gameboy Advance simply used wave recordings for their music. Both games share the same soundtrack, most likely due to budget restrictions, and it is unknown who was responsible for composing the music, although given the nature of the games it is indeed possible that the tracks are probably royalty free and were not composed particularly for the games. Some songs are available on YouTube.

Editing and Playing Creatures Music[edit]

For games which use the MNG format, two tools are designed to edit the music, MNGPlayer and MNGPad - MNGPlayer lets you play music in the background (or foreground), while MNGPad allows you to edit existing MNG files and create your own. You will probably want to read the first part of MNG file format to see how the scripts work, although a tutorial is included with the programs. MNGPlayer2 was released for the CCSF 2021.

The music of other games can be manipulated using normal audio or music editors.

DJ_G[edit]

Hidden within the audio directory of Creatures 2, an amusing musical track entitled 'DJ_G' is to be found, consisting of a Grendel repeatedly hitting a Norn to the sound of a techno remix of some of the sounds from the game. Upon the release of Creatures 3 a similar track was found in there. These may have been made by Mark Ashton. See also Defiant Doosers.

Docking Station events music[edit]

Admittedly, Docking Station's birth and death music was rather lacking - for the sake of size the Hub uses the same music as death (and it is annoying after a while) - the birth music was original, but not terribly good either. Gryph provides a tutorial to make Docking Station use Creatures 3's birth music instead:

  1. Copy ../Creatures 3/Sounds/Events.mng to your ../Docking Station/Sounds folder
  2. Open ../Docking Station/Bootstrap/010 Docking Station/DS life events factory - PHOTOGRAPHS THE DEAD.cos. You may want to make a backup first, but you'll only be changing a couple of lines
  3. Scroll down until you see the comment '* music'
  4. Change
*music
	doif va00 = 3
		strk 30 "ds_music.mng\\TremeloBleep"
	elif va00 = 7
		strk 20 "ds_music.mng\\MetallicChords"

to

*music
	doif va00 = 3
		strk 30 "Events.mng\\Birth"
	elif va00 = 7
		strk 20 "Events.mng\\Death"

Now, create a new world and Creatures 3's music should play upon birth and death events.

Editing the near death music is similar:

  1. Open ../Docking Station/Bootstrap/010 Docking Station/!DS_game variables.cos after doing step 1 of the previous process.
  2. Change
* track for near death
sets game "engine_near_death_track_name" "ds_music.mng\\MetallicChords"

to

* track for near death
sets game "engine_near_death_track_name" "events.mng\\NearDeath"

After this, create a new world and the C3 Near Death music should play whenever the situation arises.

If you're looking for musical objects, try Instrument.

Related links[edit]

External links[edit]