A plugin for AIMP that exposes a REST API and WebSocket server for remote control of the audio player. Designed for AIMP v5.40 (build 2709) and above.
- Full player control: play/pause, next, previous, seek, volume, mute, shuffle, repeat
- Real-time track change events via WebSocket (track metadata, position, player state)
- Track information and cover art retrieval
- Playlist browsing: list, info, statistics, items, and direct playback
- QR code display in AIMP settings dialog for easy connection from mobile devices
- No external client required -- works with any HTTP/WebSocket client
The plugin runs two servers inside the AIMP process:
| Server | Port | Library | Purpose |
|---|---|---|---|
| HTTP (REST) | 3553 | cpp-httplib | Player control and data queries |
| WebSocket | 3554 | ixwebsocket | Real-time event broadcasting |
The plugin uses AIMP's Remote Access API (window messages WM_AIMP_COMMAND and WM_AIMP_PROPERTY) to interact with the player, and listens to AIMP core messages via IAIMPMessageHook for real-time events.
| Method | Path | Description |
|---|---|---|
| GET | /player/state |
Get player state, position, volume |
| GET | /player/volume |
Get current volume (0-100) |
| POST | /player/playpause |
Toggle playback |
| POST | /player/next |
Skip to next track |
| POST | /player/previous |
Go to previous track |
| POST | /player/volume |
Set volume ({"volume": 0-100}) |
| POST | /player/seek |
Seek to position ({"position": ms}) |
| POST | /player/mute |
Toggle mute |
| POST | /player/shuffle |
Toggle shuffle |
| POST | /player/repeat |
Toggle repeat |
| Method | Path | Description |
|---|---|---|
| GET | /track/info |
Current track metadata (title, artist, etc) |
| GET | /track/cover |
Current track cover art image |
| Method | Path | Description |
|---|---|---|
| GET | /playlist/list |
List all playlists |
| GET | /playlist/current |
Get current active playlist |
| GET | /playlist/info |
Get playlist details |
| GET | /playlist/stats |
Get playlist statistics |
| GET | /playlist/items |
Get all items in a playlist |
| GET | /playlist/play |
Play a specific item from playlist |
The WebSocket server broadcasts JSON events in real time:
| Event | Description |
|---|---|
track_changed |
A new track started playing |
player_state |
Player state changed (0/1/2) |
position |
Playback position update (every sec) |
volume_changed |
Volume level changed |
mute_changed |
Mute toggled |
shuffle_changed |
Shuffle mode toggled |
repeat_changed |
Repeat mode toggled |
- Visual Studio 2022 (v143 platform toolset)
- vcpkg with manifest mode (enabled by default)
- Windows SDK 10.0
All managed via vcpkg manifest (vcpkg.json):
- cpp-httplib -- HTTP server
- nlohmann-json -- JSON serialization
- ixwebsocket -- WebSocket server
- Open the solution file
aimp_remote_reitansora.slnxin Visual Studio. - Build the solution. vcpkg will automatically restore dependencies.
- The output DLL (
aimp_remote_reitansora.dll) will be placed in the build output directory.
Copy the built DLL to AIMP's plugin directory (typically %APPDATA%\AIMP\Plugins or the AIMP installation Plugins folder). Enable the plugin in AIMP's plugin manager.
Server ports and bind addresses are compile-time constants defined in src/core/Config.h:
| Constant | Default | Description |
|---|---|---|
HTTP_HOST |
0.0.0.0 |
HTTP server bind address |
HTTP_PORT |
3553 |
HTTP server port |
WEBSOCKET_HOST |
0.0.0.0 |
WebSocket server bind address |
WEBSOCKET_PORT |
3554 |
WebSocket server port |
src/
core/ -- Plugin lifecycle, events, UI, utilities
routes/ -- HTTP endpoint handlers (player, playlist, track)
models/ -- Data transfer structs (Track, Playlist)
tasks/ -- Async AIMP tasks for playlist operations
helpers/ -- Network helper, QR code generation
third_party/ -- Bundled QR Code generator library
sdk/
aimp/5.40/ -- AIMP SDK headers
If you want to download the mobile app, please scan the following QR code, and select the last available version.
Distributed under the MIT License. See LICENSE for more information.
Stiven Pilca (ReitanSora)

