Skip to content

Repository files navigation

Foghorn

Android app that sounds COLREGS Rule 35 fog signals — a practical tool for fog watch aboard any vessel.

What it does

Select your vessel type, press START, and the app plays the correct fog signal sequence at the legally mandated interval, running continuously as a foreground service so it keeps going while the screen is off or you switch apps. A countdown shows the time to the next signal.

Supported vessel types (COLREGS Rule 35)

Vessel type Signal Rule
Power-driven vessel (making way) 1 prolonged blast every 2 min 35(a)
Power-driven vessel (stopped) 2 prolonged blasts every 2 min 35(b)
Sailing vessel 1 prolonged + 2 short blasts every 2 min 35(c)
Vessel not under command 1 prolonged + 2 short blasts every 2 min 35(c)
Restricted in ability to maneuver 1 prolonged + 2 short blasts every 2 min 35(c)
Constrained by draught 1 prolonged + 2 short blasts every 2 min 35(c)
Vessel engaged in fishing 1 prolonged + 2 short blasts every 2 min 35(c)
Vessel towing or pushing 1 prolonged + 2 short blasts every 2 min 35(c)
Last vessel being towed 1 prolonged + 3 short blasts every 2 min 35(d)
At anchor (vessel < 100 m) Rapid bell (~5 s) every 1 min 35(e)
At anchor (vessel ≥ 100 m) Rapid bell + gong every 1 min 35(e)
Vessel aground 3 bell strokes + rapid bell + 3 bell strokes every 1 min 35(f)
Pilot vessel on duty 4 short blasts every 2 min 35(i)

Audio synthesis

Sounds are synthesized in real time via AudioTrack (44100 Hz PCM) — no audio files bundled:

  • Horn blast — 220 Hz fundamental with harmonics, shaped with an attack/release envelope
  • Bell stroke — 600 Hz with inharmonic partials and exponential decay
  • Rapid bell — repeated 350 ms strikes over 5 seconds

Technical details

  • Min SDK: Android 8.0 (API 26)
  • Language: Kotlin 2.1
  • Build: AGP 8.10, Gradle 8.12
  • Package: fi.omoroi.foghorn
  • The signal loop runs in a foreground service (mediaPlayback type), keeping the process alive and showing a persistent notification.

Building

Open in Android Studio and run, or build from the command line:

./gradlew assembleDebug

Legal note

This app is a navigational aid. The signals it produces are intended to comply with the International Regulations for Preventing Collisions at Sea (COLREGS) 1972. Always verify signal correctness against the current official text of the regulations.

About

COLREGS Rule 35 fog signal generator for Android

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages