Skip to content

Repository files navigation

Noise Machine

A Raycast extension for playing ambient sounds and white noise to help you focus, relax, or sleep. Mix multiple sounds, control per-track volume, save presets, and enjoy seamless gapless looping — all without leaving your keyboard.

Features

  • 70+ ambient sounds across 8 categories: Noise, Nature, Rain, Animals, Urban, Places, Transport, Things
  • Seamless gapless looping via the Web Audio API — no click or pop at the loop boundary, even for MP3 files
  • Multi-sound mixing — play several sounds simultaneously at independent volumes
  • Per-sound volume control with keyboard shortcuts
  • Global volume affecting all playing sounds at once
  • Pause / Resume all with a single command or shortcut
  • Presets — save your favourite mix and reload it instantly
  • Random mix — pick 3 random sounds with one keystroke
  • Offline playback — sounds are cached locally after the first download
  • Toggle Playback no-view command for pausing/resuming from anywhere in Raycast

Commands

Command Description
Browse Sounds Main view: browse categories, play/stop individual sounds, manage volume, presets
Toggle Playback No-view command to pause or resume all currently playing sounds

Keyboard Shortcuts (Browse Sounds)

Shortcut Action
↵ Enter Play / Stop the selected sound
⌘ ↑ / ⌘ ↓ Sound volume +10% / −10%
⌘ ⌥ ↑ / ⌘ ⌥ ↓ Global volume +10% / −10%
⌘ ⇧ P Pause / Resume all sounds
⌘ ⇧ S Stop all sounds
⌘ S Save current mix as a preset
⌘ R Play a random 3-sound mix
⌘ . Refresh state

Seamless Looping

Ambient sounds loop continuously using the Web Audio API's AudioBufferSourceNode with hardware-accurate loop points. For MP3 files this extension also parses the LAME gapless header (the Xing/Info + LAME extension block in the first VBR frame) to extract the encoder delay and trailing padding inserted by the MP3 encoder, and adjusts loopStart/loopEnd accordingly. This eliminates the audible gap or click that would otherwise occur when the loop wraps around.

WAV files and MP3 files without a LAME header fall back to looping the full decoded buffer.

Requirements

  • macOS (the extension uses macOS system APIs via Raycast's Electron runtime)
  • Raycast 1.79.0 or later

Development

# Install dependencies
npm install

# Run in development mode (Raycast hot-reload)
npm run dev

# Run tests
npm test

# Lint
npm run lint
npm run fix-lint

# Build for distribution
npm run build

Sound Credits

All sounds are sourced from Moodist and are used under their respective licenses.

About

Raycast white noise extention base on https://github.com/remvze/moodist

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages