Skip to content

Commit b2902b2

Browse files
committed
Merge branch 'master' into dev
2 parents fb7fa1e + d6cf0fc commit b2902b2

File tree

3 files changed

+91
-72
lines changed

3 files changed

+91
-72
lines changed

.github/FUNDING.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# These are supported funding model platforms
2+
3+
github: freyacodes # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4+
patreon: # Replace with a single Patreon username
5+
open_collective: # Replace with a single Open Collective username
6+
ko_fi: # Replace with a single Ko-fi username
7+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9+
liberapay: # Replace with a single Liberapay username
10+
issuehunt: # Replace with a single IssueHunt username
11+
otechie: # Replace with a single Otechie username
12+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

IMPLEMENTATION.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ The Java client has support for JDA, but can also be adapted to work with other
99
## Significant changes v3.3 -> v3.4
1010
* Added filters
1111
* The `error` string on the `TrackExceptionEvent` has been deprecated and replaced by
12-
the `exception` object following the same structure as the `LOAD_FAILED` error on [`/loadtracks`](#rest-api)
12+
the `exception` object following the same structure as the `LOAD_FAILED` error on [`/loadtracks`](#track-loading-api)
1313
* Added the `connected` boolean to player updates.
1414
* Added source name to REST api track objects
1515
* Clients are now requested to make their name known during handshake
@@ -154,16 +154,16 @@ Note that filters may take a moment to apply.
154154
"guildId": "...",
155155

156156
// Float value where 1.0 is 100%. Values >1.0 may cause clipping
157-
"volume": 1.0,
157+
"volume": 1.0, // 0 ≤ x ≤ 5
158158

159159
// There are 15 bands (0-14) that can be changed.
160160
// "gain" is the multiplier for the given band. The default value is 0. Valid values range from -0.25 to 1.0,
161161
// where -0.25 means the given band is completely muted, and 0.25 means it is doubled. Modifying the gain could
162162
// also change the volume of the output.
163163
"equalizer": [
164164
{
165-
"band": 0,
166-
"gain": 0.2
165+
"band": 0, // 0 ≤ x ≤ 14
166+
"gain": 0.2 // -0.25 ≤ x ≤ 1
167167
}
168168
],
169169

@@ -177,9 +177,9 @@ Note that filters may take a moment to apply.
177177

178178
// Changes the speed, pitch, and rate. All default to 1.
179179
"timescale": {
180-
"speed": 1.0,
181-
"pitch": 1.0,
182-
"rate": 1.0
180+
"speed": 1.0, // 0 ≤ x
181+
"pitch": 1.0, // 0 ≤ x
182+
"rate": 1.0 // 0 ≤ x
183183
},
184184

185185
// Uses amplification to create a shuddering effect, where the volume quickly oscillates.
@@ -202,14 +202,14 @@ Note that filters may take a moment to apply.
202202

203203
// Distortion effect. It can generate some pretty unique audio effects.
204204
"distortion": {
205-
"sinOffset": 0,
206-
"sinScale": 1,
207-
"cosOffset": 0,
208-
"cosScale": 1,
209-
"tanOffset": 0,
210-
"tanScale": 1,
211-
"offset": 0,
212-
"scale": 1
205+
"sinOffset": 0.0,
206+
"sinScale": 1.0,
207+
"cosOffset": 0.0,
208+
"cosScale": 1.0,
209+
"tanOffset": 0.0,
210+
"tanScale": 1.0,
211+
"offset": 0.0,
212+
"scale": 1.0
213213
}
214214

215215
// Mixes both channels (left and right), with a configurable factor on how much each channel affects the other.

README.md

Lines changed: 64 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Lavalink
2-
Standalone audio sending node based on Lavaplayer and JDA-Audio.
2+
A standalone audio sending node based on Lavaplayer and JDA-Audio.
33
Allows for sending audio without it ever reaching any of your shards.
44

55
Being used in production by FredBoat, Dyno, LewdBot, and more.
66

7-
A [very simple example bot](Testbot) is available.
7+
A [basic example bot](Testbot) is available.
88

99
[![JDA guild](https://discordapp.com/api/guilds/125227483518861312/embed.png?style=banner2)](https://discord.gg/jtAWrzU)
1010

@@ -24,12 +24,12 @@ A [very simple example bot](Testbot) is available.
2424

2525
## Requirements
2626

27-
* Java 11* LTS or greater required.
27+
* Java 11* LTS or newer required.
2828
* OpenJDK or Zulu running on Linux AMD64 is officially supported.
2929

3030
Support for Darwin (Mac), Windows AMD64, and Linux ARM (Raspberry Pi) is provided on a best-effort basis. This is dependent on Lavaplayer's native libraries.
3131

32-
Support for other JVMs is also best-effort. Periodic CPU utilization stats are prone to not work everywhere.
32+
Support for other JVMs is also best-effort. Periodic CPU utilization stats are prone not to work everywhere.
3333

3434
**\*Java 11 appears to have some issues with Discord's TLS 1.3. Java 14 has other undiagnosed HTTPS problems. Use Java 13. Docker images have been updated.** See [#258](https://github.com/freyacodes/Lavalink/issues/258), [#260](https://github.com/freyacodes/Lavalink/issues/260)
3535

@@ -39,76 +39,83 @@ Please see [here](CHANGELOG.md)
3939

4040
## Versioning policy
4141

42-
The public api ("api" in a very broad sense) of Lavalink can be categorized into two main domains:
43-
- **Client Domain:** The api exposed to clients, consisting of both the websocket protocol, and any public http endpoints
44-
- **Server Domain:** The server application with its runtime environment, its configuration, etc.
42+
- The public API ("API" in a very broad sense) of Lavalink can be categorized into two main domains:
43+
- **Client Domain:** The API exposed to clients, consisting of both the WebSocket protocol and any public HTTP endpoints
44+
- **Server Domain:** The server application with its runtime environment, its configuration, etc.
4545

46-
Changes that might be breaking to one domain need not be breaking to the other.
47-
Examples:
48-
- Removing an endpoint. This is a breaking change for the client domain, but is
49-
not a breaking change for running the server itself.
50-
- Upgrading the minimum Java version: This is a breaking change for the server domain,
51-
but client implementations couldn't care less about it.
46+
- A change that is breaking to one domain might not be breaking at all to another.
5247

53-
Given the above, the following versioning pattern lends itself well to the Lavalink project:
48+
*Examples:*
49+
- Removing an endpoint: This is a breaking change for the client domain but is not for running the server itself.
50+
- Upgrading the minimum Java version: This is a breaking change for the server domain, but client implementations couldn't care less about it.
51+
52+
**Given the above, the following versioning pattern lends itself well to the Lavalink project:**
5453

5554
_**api.major.minor.patch**_
5655

57-
- **Api**: Bumped when breaking changes are comitted to the client domain of Lavalink
58-
Examples: Removing an endpoint, altering output of an endpoint in a non backwards compatible manner
59-
- **Major**: Bumped when breaking changes are comitted to the Lavalink server domain
60-
Examples: Bumping the required Java version, altering the configuration in a non backwards compatible manner
56+
- **API**: Bumped when breaking changes are committed to the client domain of Lavalink
57+
58+
*Examples:* Removing an endpoint, altering the output of an endpoint in a non-backward-compatible manner
59+
- **Major**: Bumped when breaking changes are committed to the Lavalink server domain
60+
61+
*Examples:* Bumping the required Java version, altering the configuration in a non-backward-compatible manner
6162
- **Minor**: New features in any domain
62-
Examples: New optional endpoint or op code, additional configuration options, change of large subsystems or dependencies
63+
64+
*Examples:* New optional endpoint or opcode, additional configuration options, change of large subsystems or dependencies
6365
- **Patch**: Bug fixes in any domain
66+
6467
Examples: Fixing a race condition, fixing unexpected exceptions, fixing output that is not according to specs, etc.
6568

66-
While major, minor and patch will do a best effort to adhere to [Semantic Versioning](https://semver.org/),
67-
prepending it with an additional api version makes life easier for developers of client implementations
68-
in two ways: It is a clear way for the Lavalink project to communicate the actually relevant breaking changes
69-
to client developers, and in turn, client developers can use the api version to clearly communicate to their
70-
users about the compatibility of their clients to the Lavalink server.
69+
While major, minor and patch will do an optimum effort to adhere to [Semantic Versioning](https://semver.org/), prepending it with an additional API version makes life easier for developers in two ways: It is a clear way for the Lavalink project to communicate the relevant breaking changes to client developers, and in return, client developers can use the API version to communicate to their users about the compatibility of their clients to the Lavalink server.
7170

7271

7372
## Client libraries:
74-
* [Lavalink-Client](https://github.com/freyacodes/lavalink-client) (JDA or generic, Java)
75-
* [LavaClient](https://github.com/SamOphis/LavaClient) (Java)
76-
* [Lavalink.kt](https://github.com/DRSchlaubi/lavalink.kt) (Kord, JDA, generic, Kotlin (Coroutines))
77-
* [Lavalink.py](https://github.com/Devoxin/Lavalink.py) (discord.py, Python)
78-
* [pylava](https://github.com/Pandentia/pylava) (discord.py, Python)
79-
* [playlink](https://github.com/OverleapCo/Playlink) (Javascript/Typescript)
80-
* [SandySounds](https://github.com/MrJohnCoder/SandySounds) (JavaScript)
81-
* [Gorilink](https://github.com/Gorillas-Team/Gorilink) (JavaScript)
82-
* [eris-lavalink](https://github.com/briantanner/eris-lavalink) ([eris](https://github.com/abalabahaha/eris), JavaScript)
83-
* [LavaClient](https://github.com/lavaclient/lavaclient) (JavaScript)
84-
* [Shoukaku](https://github.com/Deivu/Shoukaku) ([discord.js](https://github.com/discordjs/discord.js), JavaScript)
85-
* [erela.js](https://github.com/MenuDocs/erela.js) (JavaScript)
86-
* [Lavacord](https://github.com/lavacord/lavacord) (JavaScript)
87-
* [LavaJS](https://github.com/OverleapCo/LavaJS) ([discord.js](https://github.com/discordjs/discord.js), JavaScript/TypeScript)
88-
* [@skyra/audio](https://github.com/skyra-project/audio) ([discord.js](https://github.com/discordjs/discord.js), JavaScript/TypeScript)
89-
* [EvoLava](https://github.com/EvolveJS/EvoLava) ([EvolveJS](https://github.com/EvolveJS/EvolveJS), Javascript/Typescript)
90-
* [SharpLink](https://github.com/Devoxin/SharpLink) ([Discord.Net](https://github.com/RogueException/Discord.Net), .NET)
91-
* [Victoria](https://github.com/Yucked/Victoria) ([Discord.NET](https://github.com/RogueException/Discord.Net), .NET)
92-
* [Lavalink.NET](https://github.com/Dev-Yukine/Lavalink.NET) (.NET)
93-
* [DSharpPlus.Lavalink](https://github.com/DSharpPlus/DSharpPlus/tree/master/DSharpPlus.Lavalink) ([DSharpPlus](https://github.com/DSharpPlus/DSharpPlus/), .NET)
94-
* [Lavalink4NET](https://github.com/angelobreuer/Lavalink4NET) ([Discord.Net](https://github.com/RogueException/Discord.Net), [DSharpPlus](https://github.com/DSharpPlus/DSharpPlus/), .NET)
95-
* [gavalink](https://github.com/foxbot/gavalink) (Go)
96-
* [waterlink](https://github.com/lukasl-dev/waterlink) (Go)
97-
* [Magma](https://github.com/initzx/magma/) (discord.py, Python)
98-
* [lavapotion](https://github.com/SamOphis/lavapotion) (Elixir)
99-
* [WaveLink](https://github.com/EvieePy/Wavelink) (discord.py, Python)
100-
* [Lavalink-rs](https://gitlab.com/vicky5124/lavalink-rs/) (All `tokio` Libraries, Rust)
101-
* [lavasnek_rs](https://github.com/vicky5124/lavasnek_rs/) (All `asyncio` Libraries, Python)
102-
* [Pomice](https://github.com/cloudwithax/pomice) (discord.py, Python)
103-
* Or [create your own](https://github.com/freyacodes/Lavalink/blob/master/IMPLEMENTATION.md)
73+
Client | Platform | Compatible With | Additional Information
74+
-------|----------|-----------------|-----------------------
75+
[Lavalink-Client](https://github.com/freyacodes/lavalink-client) | Java | JDA/**Any**
76+
[Lavalink.kt](https://github.com/DRSchlaubi/lavalink.kt) | Kotlin | JDA/Kord/**Any** | Kotlin Coroutines
77+
[Lavalink.py](https://github.com/Devoxin/Lavalink.py) | Python | **Any**
78+
[lavasnek_rs](https://github.com/vicky5124/lavasnek_rs) | Python | **Any\*** | *`asyncio`-based libraries only
79+
[lavaplayer-py](https://github.com/HazemMeqdad/lavaplayer) | Python | **Any\*** | *`asyncio`-based libraries only
80+
[Wavelink](https://github.com/PythonistaGuild/Wavelink) | Python | discord.py **V2**
81+
[Pomice](https://github.com/cloudwithax/pomice) | Python | discord.py/**Any\*** | *`discord`-namespace/`discord.py`-derived libraries only
82+
[Slate](https://github.com/Axelware/slate) | Python | discord.py/**Any\*** | *`discord`-namespace/`discord.py`-derived libraries only
83+
[Lavapy](https://github.com/Aspect1103/Lavapy) | Python | discord.py
84+
[Magma](https://github.com/initzx/magma) | Python | discord.py
85+
[Lavadeno](https://github.com/lavaclient/lavadeno) | Deno | **Any**
86+
[LavaJS](https://github.com/OverleapTechnologies/LavaJS) | Node.js | **Any**
87+
[erela.js](https://github.com/MenuDocs/erela.js) | Node.js | **Any**
88+
[LavaClient](https://github.com/lavaclient/lavaclient) | Node.js | **Any**
89+
[Lavacoffee](https://github.com/XzFirzal/lavacoffee) | Node.js | **Any**
90+
[Lavacord](https://github.com/lavacord/lavacord) | Node.js | **Any**
91+
[@skyra/audio](https://github.com/skyra-project/audio) | Node.js | discord.js | Archived
92+
[Poru](https://github.com/parasop/poru) | Node.js | **Any**
93+
[Shoukaku](https://github.com/Deivu/Shoukaku) | Node.js | **Any**
94+
[SpringLink](https://github.com/knyaoo/springlink) | Node.js | discord.js | Archived
95+
[Gorilink](https://github.com/Gorillas-Team/Gorilink) | Node.js | discord.js | Archived/Unmaintained
96+
[SandySounds](https://github.com/MrJohnCoder/SandySounds) | Node.js | **Any** | Unmaintained
97+
[eris-lavalink](https://github.com/briantanner/eris-lavalink) | Node.js | eris | Unmaintained
98+
[Victoria](https://github.com/Yucked/Victoria) | .NET | Discord.Net
99+
[Lavalink4NET](https://github.com/angelobreuer/Lavalink4NET) | .NET | Discord\.Net/DSharpPlus
100+
[DSharpPlus.Lavalink](https://github.com/DSharpPlus/DSharpPlus/tree/master/DSharpPlus.Lavalink) | .NET | DSharpPlus
101+
[Lavalink.NET](https://github.com/Dev-Yukine/Lavalink.NET) | .NET | **Any** | Unmaintained
102+
[SharpLink](https://github.com/Devoxin/SharpLink) | .NET | Discord.Net | Unmaintained
103+
[disgolink](https://github.com/DisgoOrg/disgolink) | Go | Disgo/DiscordGo/**Any**
104+
[waterlink](https://github.com/lukasl-dev/waterlink) | Go | **Any**
105+
[gavalink](https://github.com/foxbot/gavalink) | Go | **Any** | Unmaintained
106+
[Lavalink-rs](https://gitlab.com/vicky5124/lavalink-rs) | Rust | **Any\*** | *`tokio`-based libraries only
107+
108+
Or alternatively, you can create your own client library, following the [implementation documentation](https://github.com/freyacodes/Lavalink/blob/master/IMPLEMENTATION.md).
109+
Any client libraries marked with `Unmaintained` have been marked as such as their repositories have not received any commits for at least 1 year since time of checking,
110+
however they are listed as they may still support Lavalink, and/or have not needed maintenance, however keep in mind that compatibility and full feature support is not guaranteed.
104111

105112
## Server configuration
106113
Download binaries from [the CI server](https://ci.fredboat.com/viewLog.html?buildId=lastSuccessful&buildTypeId=Lavalink_Build&tab=artifacts&guest=1) or [the GitHub releases](https://github.com/freyacodes/Lavalink/releases).
107114

108-
Put an `application.yml` file in your working directory. [Example](https://github.com/freyacodes/Lavalink/blob/master/LavalinkServer/application.yml.example)
115+
Put an `application.yml` file in your working directory. ([Example here](https://github.com/freyacodes/Lavalink/blob/master/LavalinkServer/application.yml.example))
109116

110117
Run with `java -jar Lavalink.jar`
111118

112-
Docker images are available on the [Docker hub](https://hub.docker.com/r/fredboat/lavalink/).
119+
Docker images are available on the [Docker Hub](https://hub.docker.com/r/fredboat/lavalink/).
113120

114-
[![Docker Pulls](https://img.shields.io/docker/pulls/fredboat/lavalink.svg)](https://hub.docker.com/r/fredboat/lavalink/) [![Docker layers](https://images.microbadger.com/badges/image/fredboat/lavalink:dev.svg)](https://microbadger.com/images/fredboat/lavalink:dev "Get your own image badge on microbadger.com")
121+
[![Docker Pulls](https://img.shields.io/docker/pulls/fredboat/lavalink.svg)](https://hub.docker.com/r/fredboat/lavalink/)

0 commit comments

Comments
 (0)