A PHP framework


License
MIT

Documentation

Soprano

Soprano is a self-hosted audio streaming service and media player. Scan, organize, and easily serve your music collection over the internet.

More information coming soon :)

soprano

Features

  • Music libraries
    • Supporting mp3/flac/m4a/ogg/wav
    • Directory file watcher
    • Extract album art and id3 metadata
    • Media session (Chrome/android compatibility)
    • Search music library by artist/album/title/genre
    • Create and add music tracks to playlist
    • Transcode to mp3 with ffmpeg (compatibility)
  • Podcasts
    • Supported by Listen Notes
    • Search for a podcast by title or episode
  • Radio
    • A curated list of Canadian/European radio streams
    • Collection:
      • B-93.3
      • 106.7 ROCK
      • 94.1 CJOC-FM
      • KiSS 107.7
      • CKXU 88.3
      • AMP 90.3
      • CJAY 92.1
      • X92.9
      • 100.3 The Bear
      • JACK 103.1
      • CBC Radio One (Calgary)
      • CBC Music (Edmonton)
      • 1 FM Amsterdam Trance

Upcoming

New features incoming... Thinking...

Installation

  • With composer: composer require whleucka/soprano
  • I have included the backend in the src/ folder
  • I am working on containerizing this project with Docker WIP

Directory file watcher

  • Example of systemd service
❯ cat /etc/systemd/system/soprano-watcher.service
[Unit]
Description=Soprano File Watcher
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/usr/bin/env php /path/to/soprano/scripts/Watcher.php

[Install]
WantedBy=multi-user.target

Using a celestial command

Usage: celestial [options...]
-h, --help                      Get help for commands
-s, --start                     Run development server
--migrate-up=filename           Run migration file, call up method
--migrate-down=filename         Run migration file, call down method
--migrate-fresh                 Drop database and run all migration files calling up method
--migrate-create=name           Create a migration file. Database table names should be plural. Eg, --migrate-create=users
--controller-create=name        Create a controller file. Controller names should be uppercase and singular. Eg, --controller-create=Profile
--model-create=name             Create a model file. Model names should be uppercase and singular. Eg, --model-create=Animal
--music-scan                    Scan for new music files and synchronize to database
--music-cover-scan              Update music cover art

License

MIT