DEV505 / SOUND LAB / 10
A little liftoff.
Conditions, countdowns, aborts, and a flying finale.
Try it in Unity
Section titled “Try it in Unity”In Unity’s Project window, open Assets/DEV505/SoundManager/Samples/10-Launch/Demo.unity. The supplied scene already has its Sound Manager, event registrations, generated keys, camera, and Audio Listener. Press Play, wait for the demo to be ready, and click the Game view before using the keyboard. If you are setting up a separate scene, follow Your first sound first.
| Control | Action |
|---|---|
| Space | Begin launch preparation. |
| M | Switch Auto / Manual while the demo allows it. |
| Up / Down, power slider | Adjust power in Manual. |
| C | Open or close the clamps during Manual preparation. |
| V | Vent pressure when available. |
| X | Abort. |
| P | Pause or resume the interaction. |
| R | Reset for another launch. |
Try Auto first. Start preparation, watch power rise and clamps open, then listen to three countdown ticks and ignition. Flight begins after the sequence sound finishes. Pause in flight and resume; rocket motion and its audio continue together.
Reset and try Manual. Increase power with the clamps still closed. As pressure rises, the warning repeats faster. Vent, open the clamps, and supply enough power to satisfy clearance. Abort during preparation or countdown to hear shutdown without launching.
The listener stays near Mission Control. Pad machinery remains on the island while the flight sound follows the rocket exhaust away from it.
The six sound roles
Section titled “The six sound roles”| Key | Job |
|---|---|
Sounds.LaunchPad |
Layered machinery, pressure warning, and shutdown. |
Sounds.LaunchSequence |
Wait for clearance, count, and ignite. |
Sounds.LaunchFlight |
Rocket thrust that follows the exhaust. |
Sounds.LaunchClamp |
Short mechanical cue when clamps change. |
Sounds.LaunchVent |
Short vent response. |
Sounds.LaunchUI |
2D control-room click that can ignore game pause. |
1. Power up the pad
Section titled “1. Power up the pad”LaunchPad stays alive while waiting for control. Power shapes its layered machinery; Pressure shapes the warning. The demo changes targets, then uses the smoothed current Power to simulate pressure building or draining. The graph does not simulate a real pressure vessel.
Track Condition keeps checking whether Pressure is above 0.72. Its active branch runs a Repeat, with the warning interval mapped from 0.95 to 0.22 seconds as pressure rises from 0.72 to 1. The warning accelerates because the interval changes; the controller is not starting a new pad event for every beep.
2. Wait for clearance, then count
Section titled “2. Wait for clearance, then count”LaunchSequence starts with Wait For Condition. All three conditions must be true: Power at least 0.72, Pressure below 0.85, and ClampsOpen true. These parameters are supplied at start and updated as the controls change.
Once clearance is satisfied, a Sequence orders three commands: reset the Counter, start a one-second Repeat, then send the first count immediately. Counter’s limit is three. Its count also maps the tick playback speed from 0.85 to 1.15, lifting the pitch as the count advances.
At the limit, the graph stops the Repeat, waits one more second, then plays the two-second ignition. When that recording finishes and the graph has no remaining work, the play finishes naturally.
Wait For Condition is the initial gate, not a permanent safety monitor. After clearance, LaunchDemo separately aborts if power drops below 0.65, pressure exceeds 0.96, or the clamps close. A game that needs ongoing safety must also keep checking it.
3. Lift off on completion
Section titled “3. Lift off on completion”The controller subscribes to sound notifications and matches the sequence’s handle. Only its natural Finished notification requests liftoff:
if (message.Handle.Equals(sequence) && message.Kind == SoundNotificationKind.Finished){ launchPending = true;}Here message is the notification delivered to the callback. The controller performs the next action in Update, respecting pause and abort state. Cancelled or Failed is not successful completion. The visual 3–2–1 countdown is a presentation estimate; it is not the timer that launches the rocket.
The new flight context follows the rocket exhaust with a rocket owner, separate from the pad owner. Thrust controls the moving sound. The graph has a 12-second event length; the demo’s shorter flight sequence can stop it earlier. Following updates position as the controller animates the rocket.
4. Vent, clamp, abort, and pause
Section titled “4. Vent, clamp, abort, and pause”Clamp and Vent are short spatial responses. Their graph cooldowns are 0.5 and 0.7 seconds. The controller also limits its vent interaction, reduces simulated pressure, and animates the hardware.
Abort stops the countdown and sends "Abort" to LaunchPad. That signal reaches Stop Instance, which enters the pad’s stopping flow. Its Release Bool decides whether to play the shutdown ending; ReleaseGain sets that ending’s level. Reset suppresses Release before cleanup to avoid an unwanted shutdown cue while rebuilding the starting state.
Pause sets the sound service’s global Paused state and pauses the demo’s visual motion. LaunchUI is configured to ignore that game pause, allowing control clicks to remain audible. The controller restores the prior pause state when leaving the interaction. A per-play Resume alone would not override a paused service.
What belongs to the demo?
Section titled “What belongs to the demo?”Power input, pressure simulation, auto venting, safety checks, clamps, HUD timing, rocket motion, voxel fire, and lens flare are C# and scene effects. The graph supplies audio layers, conditions, scheduled pulses, signals, shutdown, and completion. Auto mode targets Power 0.86 and opens clamps after about 2.2 seconds; those choices are demo logic, not universal audio behavior.
Common surprises
Section titled “Common surprises”- The countdown waits silently. Check all three clearance conditions and their types, especially the Bool clamps value.
- An abort accidentally launches. React only to Finished for the matching sequence handle, and clear pending work before cancelling.
- The rocket lifts on a guessed timer. Use the actual sound completion notification; the visual timer can drift.
- Closing clamps after clearance does nothing in a small integration. The graph’s initial gate has already passed. Add ongoing safety checks as the full controller does.
- Resume does not unpause a sound. Check both the handle’s own pause and the service’s global pause.
Event settings, parameters, and signals
Section titled “Event settings, parameters, and signals”These are the saved graph settings. A play can supply different initial parameter values. Float smoothing is measured in units per second; a rate of 0 applies changes immediately.
Sounds.LaunchClamp
- Position
- 3D · 3–18 units (minimum–maximum distance)
- Overlapping plays
- 2 ·
ReplaceOldest - Cooldown
- 0.5 seconds between accepted requests
- Owner loss
- Stop
- Keep Alive
- Off — ends when its work is finished
No exposed parameters.
Signals: None authored.
Sounds.LaunchFlight
- Position
- 3D · 4–28 units (minimum–maximum distance)
- Overlapping plays
- 1 ·
ReplaceOldest - Cooldown
- None
- Owner loss
- Stop
- Keep Alive
- Off — ends when its work is finished
| Parameter | Type | Default | Range | Rise / fall rate |
|---|---|---|---|---|
Thrust | Float | 1 | 0–1 | 1 / 2 |
Signals: None authored.
Sounds.LaunchPad
- Position
- 3D · 4–22 units (minimum–maximum distance)
- Overlapping plays
- 2 ·
ReplaceOldest - Cooldown
- None
- Owner loss
- Stop
- Keep Alive
- On — can wait silently for signals
| Parameter | Type | Default | Range | Rise / fall rate |
|---|---|---|---|---|
Power | Float | 0 | 0–1 | 0.24 / 0.6 |
Pressure | Float | 0 | 0–1 | 3 / 4 |
Release | Bool | true | false / true | Not smoothed |
ReleaseGain | Float | 0.7 | 0–1 | 0 / 0 |
| Signal | Response in this graph |
|---|---|
Abort | Enter the stopping flow and optional shutdown ending. |
Sounds.LaunchSequence
- Position
- 3D · 4–22 units (minimum–maximum distance)
- Overlapping plays
- 1 ·
RejectNew - Cooldown
- None
- Owner loss
- Stop
- Keep Alive
- Off — ends when its work is finished
| Parameter | Type | Default | Range | Rise / fall rate |
|---|---|---|---|---|
Power | Float | 0 | 0–1 | 0 / 0 |
Pressure | Float | 0 | 0–1 | 0 / 0 |
ClampsOpen | Bool | false | false / true | Not smoothed |
Signals: None authored.
Sounds.LaunchUI
- Position
- 2D
- Overlapping plays
- 3 ·
ReplaceOldest - Cooldown
- None
- Owner loss
- Stop
- Keep Alive
- Off — ends when its work is finished
- Game pause
- Ignored — this UI cue can play while the service is paused
No exposed parameters.
Signals: None authored.
Sounds.LaunchVent
- Position
- 3D · 3–18 units (minimum–maximum distance)
- Overlapping plays
- 2 ·
ReplaceOldest - Cooldown
- 0.7 seconds between accepted requests
- Owner loss
- Stop
- Keep Alive
- Off — ends when its work is finished
No exposed parameters.
Signals: None authored.
For the meaning of these settings, see Playback settings. The default numbers above come from the Unity graph audit stored with this documentation.
Take it into your own game
Section titled “Take it into your own game”Open the complete integration recipe for the script, Inspector setup, a short test, and cleanup. Use Play context for initial values and placement, and SoundBus for playback controls.
All Launch Unity captures includes further states and readable graph details, with steps to reproduce each view.