<commit_before>![melo][melo_logo]

# Melo: your personal music hub

Melo is an embedded application to play music content from anywhere on any
speaker.

## Overview
Melo is intended to create a music hub on any device running Linux, anywhere in
a house or a company. It brings capabilities to play any audio content from
anywhere on speakers connected directly to the device running Melo, or to remote
speakers.

Melo is a plugin based software which offers possibility to any developer to
create and add its personal plugin and then support a new music content source.

## Build

First of all, you have to clone the git repository with the following command:

```sh
git clone https://github.com/dillya/melo.git
```

Melo is based on Meson for the build purpose and GLib low-level library on which
Gstreamer and many useful libraries are based. It brings the object oriented
coding style thanks to GObject.

For HTTP server / client side, Melo is based on libsoup which brings most of
HTTP features out of the box.

For messaging between modules, main program and the user interface, the Google
protocol buffers have been chosen for their scalability and the versioning of
protocol removal. The C compiler version from protobuf-c project has been
chosen.

The embedded media library database is using sqlite3 to store and fetch related
data such as artist, album, genre.

An optional network manager for IP addresses and WiFi configuration can be
enabled with Network Manager library (libnm).

You may need to install some development libraries and build tools before
starting with Melo build.

On Debian / Ubuntu Linux system, you can install required dependencies with the
following command:

```sh
apt install meson libglib2.0-dev libgstreamer-plugins-base1.0-dev \
    libsoup2.4-dev libjson-glib-dev libavahi-gobject-dev libsqlite3-dev \
    libprotobuf-c-dev protobuf-c-compiler
```

To enable network support, the following command should be additionally used:

```sh
apt install libnm-dev
```

Then, you are ready to build Melo:

```sh
cd melo
meson builddir
ninja -C builddir
```

To install Melo (by default in /usr/local), you can finally use the following
command:

```sh
sudo ninja -C builddir install
```

## Coding style

Melo uses clang-format to check and fix coding style of source code. It prevents
mix of different coding style and improves readability of the code.

## License

Melo is licensed under the LGPLv2.1 license. Please read LICENSE file or visit
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html for further details.

[melo_logo]: https://raw.githubusercontent.com/dillya/melo/melo-1.0.0/media/logo.png
<commit_msg>Add Debian package for UPnP support to README<commit_after>![melo][melo_logo]

# Melo: your personal music hub

Melo is an embedded application to play music content from anywhere on any
speaker.

## Overview
Melo is intended to create a music hub on any device running Linux, anywhere in
a house or a company. It brings capabilities to play any audio content from
anywhere on speakers connected directly to the device running Melo, or to remote
speakers.

Melo is a plugin based software which offers possibility to any developer to
create and add its personal plugin and then support a new music content source.

## Build

First of all, you have to clone the git repository with the following command:

```sh
git clone https://github.com/dillya/melo.git
```

Melo is based on Meson for the build purpose and GLib low-level library on which
Gstreamer and many useful libraries are based. It brings the object oriented
coding style thanks to GObject.

For HTTP server / client side, Melo is based on libsoup which brings most of
HTTP features out of the box.

For messaging between modules, main program and the user interface, the Google
protocol buffers have been chosen for their scalability and the versioning of
protocol removal. The C compiler version from protobuf-c project has been
chosen.

The embedded media library database is using sqlite3 to store and fetch related
data such as artist, album, genre.

An optional network manager for IP addresses and WiFi configuration can be
enabled with Network Manager library (libnm).

You may need to install some development libraries and build tools before
starting with Melo build.

On Debian / Ubuntu Linux system, you can install required dependencies with the
following command:

```sh
apt install meson libglib2.0-dev libgstreamer-plugins-base1.0-dev \
    libsoup2.4-dev libjson-glib-dev libavahi-gobject-dev libsqlite3-dev \
    libprotobuf-c-dev protobuf-c-compiler
```

To enable network support, the following command should be additionally used:

```sh
apt install libnm-dev
```

To enable the UPnP support, the following command should be additionally used:

```sh
apt install libgupnp-1.0-dev rygel-2.6-dev
```

Then, you are ready to build Melo:

```sh
cd melo
meson builddir
ninja -C builddir
```

To install Melo (by default in /usr/local), you can finally use the following
command:

```sh
sudo ninja -C builddir install
```

## Coding style

Melo uses clang-format to check and fix coding style of source code. It prevents
mix of different coding style and improves readability of the code.

## License

Melo is licensed under the LGPLv2.1 license. Please read LICENSE file or visit
https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html for further details.

[melo_logo]: https://raw.githubusercontent.com/dillya/melo/melo-1.0.0/media/logo.png

{'fraction_non_alphanumeric': 0.05805038335158817, 'fraction_numerical': 0.006206644760861628, 'mean_word_length': 4.309108527131783, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 6, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1808114', 'n_tokens_mistral': 1543, 'n_tokens_neox': 1483, 'n_words': 772}