PHPackages                             amused/amused - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. amused/amused

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

amused/amused
=============

An asynchronous server for cataloging and synchronizing music

12PHP

Since Feb 8Pushed 12y ago1 watchersCompare

[ Source](https://github.com/pwhelan/amused)[ Packagist](https://packagist.org/packages/amused/amused)[ RSS](/packages/amused-amused/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Amused
======

[](#amused)

I am not amused! ... So I set out to make a server to handle my music for me.

Amused aims to be a multi-service server that scans, re-encodes and syncs music between several servers and clients. At it's core it uses ReactPHP to provide said services.

At the moment this is at best a Proof of Concept for what you can do with ReactPHP, at worst it's a demonstration of what you should not do (ie: invoke a bunch of packages from packagist without considering whether or not they are sync or async).

Prerequisites
-------------

[](#prerequisites)

Amused requires several services to store data as well as to communicate.

- Redis - key/value store database, used as a task queue.
- MySQL - relational database, used to store data.

It also requires several PHP PECL extensions.

- Inotify - inode notifications, used to watch for changes in music files/directories.
- Phpiredis - high speed API for redis.

Recommended
-----------

[](#recommended)

ReactPHP works best with libev or libevent, so get that if you can.

Installation
------------

[](#installation)

Once the base services and extensions are installed it's time to get Amused up and running. Simply check out a copy from Github and run composer to get the dependencies:

```
user@host:~Code$ git clone https://github.com/pwhelan/amused.git
user@host:~Code$ cd amused
user@host:~Code/amused$ composer install

```

Now that you have it fully installed it is time to configure it. For the momment there are no fancy configuration files so go ahead and search for all instances of the \\React\\Mysql\\Connection class and change the parameters to match your database configuration. Do the same for the phinx.yml file, then execute phinx to create the database schema:

```
user@host:~Code/amused$ ./vendor/bin/phinx migrate

```

Now you should have a fully working instance of Amused, prepare to be Amased.

Execution
---------

[](#execution)

To start up Amused all one needs to do is use the amused script:

```
user@host:~Code/amused$ ./bin/amused

```

To get it to scan a directory use the amuse command line script:

```
user@host:~Code/amused$ ./bin/amuse ~/Music

```

Now all the services will start talking to each other, scanning all the files, searching for those that have music, getting their tags and saving them in the database.

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/55b7b320fa2efdf6bc7f641c37e817a9c1dd0478d223951100711a37db4ceb98?d=identicon)[pwhelan](/maintainers/pwhelan)

---

Top Contributors

[![pwhelan](https://avatars.githubusercontent.com/u/601645?v=4)](https://github.com/pwhelan "pwhelan (13 commits)")

### Embed Badge

![Health badge](/badges/amused-amused/health.svg)

```
[![Health](https://phpackages.com/badges/amused-amused/health.svg)](https://phpackages.com/packages/amused-amused)
```

###  Alternatives

[adigital/cookie-consent-banner

Add a configurable cookie consent banner to the website.

1150.7k](/packages/adigital-cookie-consent-banner)[michaels/data-manager

Simple data manager for nested data, dot notation array access, extendability, and container interoperability.

121.9k2](/packages/michaels-data-manager)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
