Three patches, and the last of the sounds that were asked for. The thruster bangs when it lights and rumbles while it burns. The rumble is this game's first HELD note: its gate goes down when a thruster lights and does not come up until every one is out. Only the edges matter - a rumble restruck every frame would never get past its own attack, and a bang struck every frame is a buzz - and the condition is the flames': a held button with a dry tank is a pilot doing nothing. Arriving latches two notes quickly. Middle C then the C above for taking hold of the station, the same pair reversed for letting go, and two octaves lower for the ground - the same shape in a different register, because setting down and taking hold are the same kind of event. The second note is PENDING rather than played: at an undocking the pilot is mid-burn, and stopping the world for an eighth of a second to fit a note in would be felt as the controls sticking. Where the game is stopping anyway, runPend simply pumps it out. Four channels for five sounds. The bang and the latch share one, because a lander arriving either arrives or does not, and a crash ends the run. That leaves the thruster its two, which it needs: a held note struck on the same channel as the ignition bang would cut the bang off at the moment it was meant to be heard. ---- A held note outlives the loop that was holding it ---- Landing while the thruster was still down ended the flying and then waited to be told the message had been read, so the frame that would have noticed the button coming up never ran. The engine roared under the verdict and went on roaring until the machine stopped. Anything that stops to wait hushes it now, and forgets last frame with it, so a thruster still held when the waiting ends counts as lighting again. ---- Three checks that had to be rebuilt around the new noise ---- A landing is not silent any more, so the crash is measured against the second BEFORE it rather than against a quiet landing. The dust samples moved eight frames later, because the latch plays first. And the warning check lost its measure twice: counting bursts could not tell a beep from a nag, and measuring total length stopped working the day the thruster got a rumble. It burns, stops, and listens AFTER - warned once there is nothing left, nagging the last beep is still fading. Nought against 5,679.
59 lines
2.4 KiB
NASM
59 lines
2.4 KiB
NASM
; ThrustHoldPatch, converted from Programs/Sounds/ThrustHold.json by SoundPatch.
|
|
; Designed in soundThing, where it can be heard. Do not edit the numbers
|
|
; here: change the patch and convert it again.
|
|
|
|
#Data
|
|
|
|
ThrustHoldPatch:
|
|
0d50 ; how many pairs follow
|
|
0x00 0d5 ; oscillator 0, waveform
|
|
0x01 0d255 ; gain
|
|
0x02 0d128 ; duty
|
|
0x03 0d128 ; detune, in cents
|
|
0x04 0d128 ; octave
|
|
0x05 0d1 ; on
|
|
0x06 0d0 ; what moves its width
|
|
0x07 0d128 ; and how far
|
|
0x08 0d0 ; what moves its pitch
|
|
0x09 0d128 ; and how far
|
|
0x0A 0d0 ; what moves its gain
|
|
0x0B 0d128 ; and how far
|
|
0x10 0d0 ; oscillator 1, waveform
|
|
0x11 0d183 ; gain
|
|
0x12 0d128 ; duty
|
|
0x13 0d125 ; detune, in cents
|
|
0x14 0d127 ; octave
|
|
0x15 0d1 ; on
|
|
0x16 0d0 ; what moves its width
|
|
0x17 0d128 ; and how far
|
|
0x18 0d3 ; what moves its pitch
|
|
0x19 0d161 ; and how far
|
|
0x1A 0d0 ; what moves its gain
|
|
0x1B 0d128 ; and how far
|
|
0x20 0d35 ; amplitude envelope, attack
|
|
0x21 0d54 ; decay
|
|
0x22 0d255 ; sustain
|
|
0x23 0d4 ; release
|
|
0x30 0d4 ; modulation envelope, attack
|
|
0x31 0d59 ; decay
|
|
0x32 0d0 ; sustain
|
|
0x33 0d4 ; release
|
|
0x40 0d1 ; filter, on
|
|
0x41 0d0 ; type: 0 low, 1 high, 2 band
|
|
0x42 0d171 ; cutoff, in hertz
|
|
0x43 0d0 ; resonance
|
|
0x44 0d2 ; what moves the cutoff
|
|
0x45 0d0 ; and how far, in hertz
|
|
0x46 0d0 ; what moves the resonance
|
|
0x47 0d128 ; and how far
|
|
0x60 0d1 ; LFO 0, on
|
|
0x61 0d0 ; waveform
|
|
0x62 0d253 ; rate, in hertz
|
|
0x63 0d1 ; 0 free, 1 starts with a voice
|
|
0x70 0d0 ; LFO 1, on
|
|
0x71 0d0 ; waveform
|
|
0x72 0d127 ; rate, in hertz
|
|
0x73 0d0 ; 0 free, 1 starts with a voice
|
|
0x50 0d1 ; what shapes the level
|
|
0x51 0d0 ; 0 gated, 1 triggered
|