Skip to content

Releases

v0.9.5.0

Choose a tag to compare

@PieOrCake PieOrCake released this 16 Jul 22:48

What's new

  • LotRO .abc notation support (experimental) — drop .abc files into music/ and Serenade plays them. Multi-tune/multi-voice files each become their own library entry.
  • Pie UI theme integration — when the optional Pie UI addon is installed, Serenade tints its windows to match Pie's active palette. Toggle in Options (on by default); looks unchanged if Pie isn't present.
  • Relicensed to LGPLv3 — so Serenade can be distributed alongside the Nexus platform without a licensing conflict.

Both new features are pending live in-game verification.

v0.9.4.2

Choose a tag to compare

@PieOrCake PieOrCake released this 16 May 03:38
  • Stop playback when entering combat
  • Improved player window font rendering using Nexus-provided fonts

v0.9.4.1

Choose a tag to compare

@PieOrCake PieOrCake released this 09 May 03:27
  • Fixed unreliable chat announce — now checks whether the GW2 chatbox is already focused before sending Enter, preventing double-Enter failures
  • Added unload safety: in-flight chat sends abort cleanly when the addon is unloaded
  • Added chat channel selector in Options: post Now Playing to Currently Active Channel, Say, Party, Squad, Map, or Guild 1–6
  • Channel choice persists across sessions

v0.9.4.0

Choose a tag to compare

@PieOrCake PieOrCake released this 06 May 04:54

What's new

  • Drum Kit support — drum songs start instantly with no octave reset delay or inter-song gap
  • Fixed instrument filter tabs — tabs in the song library and downloader now correctly filter the song list
  • Code reorganisation — source split into src/player/, src/parsers/, and src/ui/ subdirectories

Installation

Download Serenade.dll and copy it into <GW2>/addons/.

v0.9.3.2

Choose a tag to compare

@PieOrCake PieOrCake released this 20 Apr 05:37

Playback Timing Fix

Addresses an issue where music could occasionally lag behind then speed up to catch up.

Fixes

  • Playback thread priority — The thread that sends keypresses to play music now runs at THREAD_PRIORITY_ABOVE_NORMAL, preventing the OS scheduler from starving it when GW2 is under heavy CPU load.
  • 1ms timer resolution — timeBeginPeriod(1) is now called at addon load, reducing Windows Sleep() granularity from the default ~15ms to ~1ms. This makes the playback thread's timing loops significantly more accurate. Properly cleaned up with timeEndPeriod(1) at unload.

Music Library

  • 53 new songs added to the downloadable library, including Africa (Toto), Stairway To Heaven (Led Zeppelin), Don't Stop Me Now (Queen), Sweet Home Alabama (Lynyrd Skynyrd), Take On Me (a-ha), and many more.

v0.9.3.1

Choose a tag to compare

@PieOrCake PieOrCake released this 09 Apr 23:37

Performance Fix: Reduce ImGui Text Input Lag

Nexus addons share the same ImGui context and render sequentially in the same frame. Expensive per-frame computation causes keystrokes to arrive between frames and get dropped, resulting in laggy text input fields.

Changes

  • Cached song durations — Song::GetTotalDurationSeconds() previously iterated every note event (potentially thousands) on every call. It was called per visible row per frame in both the library and playlist tables, plus in sort comparisons. Now uses a lazy mutable cache computed once on first access.
  • Cached instrument counts & artist lists — The library and download panes previously rebuilt std::map/std::set of instrument counts and artist names by iterating all songs every frame with string copies. Now cached and only recomputed when library content changes or the instrument tab changes.
  • Cached filtered & sorted lists — Filter/sort operations (O(N) string lowercasing + O(N log N) sort) previously ran every frame. Now use dirty-flag tracking: the filtered+sorted index list only rebuilds when filter text, artist selection, instrument tab, sort column/direction, or library size actually changes.

Result

On a steady-state frame with no user interaction, the render path now does zero data iteration — just ImGui widget drawing from cached vectors. All recomputation only triggers on actual user input.

v0.9.3.0

Choose a tag to compare

@PieOrCake PieOrCake released this 09 Apr 11:20

What's New

  • GW2-Themed UI — dark slate and warm gold accent theme matching Alter Ego and the game aesthetic
  • Weighted Shuffle — shuffle now avoids recently played songs, prioritising unplayed tracks
  • Song Filters — instrument tabs, artist dropdown, and text search in both the song library and downloader
  • Chat Announcements — optionally announce the current song in game chat (configurable format with placeholders)
  • Auto-scroll Playlist — playlist smoothly scrolls to the current track on song change (pauses while mouse is hovering)
  • Time-based Seek Bar — progress bar and timer now reflect actual elapsed time instead of event count
  • Library Artist Filter — artist dropdown added to the song library pane, matching the downloader UI

v0.9.2.1

Choose a tag to compare

@PieOrCake PieOrCake released this 06 Apr 04:56

Serenade v0.9.2.1

Music Library

  • Added ~32 new songs
  • Updated 15 existing songs with improved conversions

Changes

  • Code improvements to MusicPlayer, PlaylistEditor, and addon core

v0.9.2.0

Choose a tag to compare

@PieOrCake PieOrCake released this 02 Apr 09:12

Critical Bugfix

Fixed: Octave switching direction was reversed when playing AHK files

The AHK parser had Numpad9 mapped to Octave Up and Numpad0 mapped to Octave Down — the opposite of GW2's actual behavior. This caused all octave switches to go the wrong direction during playback, resulting in melody notes playing in the low octave and accompaniment in the high octave.

Changes

  • Fixed swapped Numpad0/Numpad9 octave direction in SongParser.cpp
  • Version bumped to 0.9.2.0

v0.9.1.1

Choose a tag to compare

@PieOrCake PieOrCake released this 30 Mar 08:57

Bugfixes.