- Dec 04, 2024
-
-
Adrian Schollmeyer authored
This adds mappings for KORG nanoKontrol and a little custom configuration for A&H SQ5.
-
Adrian Schollmeyer authored
By allowing to set the MPD port, we can configure which MPD server to connect to, in case we have multiple MPDs running. For getting a little more robust against temporary connection failures, we retry the connection to MPD whenever it fails.
-
- Sep 09, 2023
-
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
Old commented out stuff we don't need anymore. This was only relevant during testing.
-
Adrian Schollmeyer authored
Improves code quality and finalizes the general playback control.
-
Adrian Schollmeyer authored
We need those to skip through tracks.
-
Adrian Schollmeyer authored
Seems like pipewires libjack is a bit problematic when it comes to closing the JACK client without deactivating it first (which can happen in some error conditions). To make sure we don't forget to deactivate the client, this commit implements logic to keep track of the activation state of the client and deactivate it on destruction before closing.
-
- Sep 03, 2023
-
-
Adrian Schollmeyer authored
We finally have them working, so let's use them to make this a useful program for playback control.
-
Adrian Schollmeyer authored
This ensures that we don't break idle mode invariants during unit tests.
-
Adrian Schollmeyer authored
We didn't use the template parameter, but a fixed type, which is of course not the desired way this should work. Fortunately, this didn't affect anything, yet, as this was the only type the function templated was instantiated for.
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
Required for play/pause toggle later on
-
Adrian Schollmeyer authored
This just makes debugging easier.
-
Adrian Schollmeyer authored
We use those functions in some tested code.
-
Adrian Schollmeyer authored
This improves upon the multi-threading and locking by transferring the locking logic for regular commands to the IdleGuard object, which can reduce code duplication and ensures a correct order of stopping the idle thread and locking the mutex. Adding more locking everywhere also allows to issue a permanent idle thread, which allows a long-lived session to stay intact even when no commands are issued for a long time (as MPD terminates idle connections which don't have an idle command running).
-
Adrian Schollmeyer authored
This improves upon the main thread by adding a thread name for easier identification. Furthermore, signal handling is improved by masking signals early on, transferring the singal mask onto the other threads which mustn't handle these signals. Lastly, continuous sleep timer output is removed as it is no longer needed.
-
Adrian Schollmeyer authored
This makes the program react a bit quicker, making it feel less laggy.
-
Adrian Schollmeyer authored
-
- Aug 28, 2023
-
-
Adrian Schollmeyer authored
This makes stopping and restarting of the idle thread safer by using RAII techniques to ensure idles are always started after being temporarily stopped. The newly introduced class IdleGuard shall work similar to how std::lock_guard works with mutexes.
-
Adrian Schollmeyer authored
This allows to control playback as soon as playback control via libmpdclient is implemented.
-
Adrian Schollmeyer authored
They make specifying durations in tests easier and that's where we need them the most.
-
Adrian Schollmeyer authored
This makes life easier when parsing configuration files in the future or code easier to read when matching against hard-coded note names.
-
Adrian Schollmeyer authored
This class just makes life easier when working with a ringbuffer for storing elements of the same type.
-
- Aug 22, 2023
-
-
Adrian Schollmeyer authored
This is a rather big and messy commit. Listening for events requires issuing idle commands, which hinder sending regular commands. This implies that idling must be temporarily stopped when sending other commands and thus requires a bunch of logic and testing to make sure idling is always stopped before issuing commands and restarted afterwards if needed. The solution in this commit is not perfect and can use some refining to allow running MPD commands inside event callbacks, but it suffices as a first step towards proper event listeners.
-
Adrian Schollmeyer authored
constexpr doesn't work for this function unless a newer C++ standard is used.
-
Adrian Schollmeyer authored
Seems like the find_first_of() call doesn't always work correctly if the URL passed is shorter than the prefix that is searched. Since this causes further bugs downstream, this commit adds a size check before the prefix check.
-
- Aug 21, 2023
-
-
Adrian Schollmeyer authored
It is constexpr after all.
-
Adrian Schollmeyer authored
We need this to test the interaction with libmpdclient without requiring a running MPD.
-
- Aug 20, 2023
-
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
Way too long without a commit. I don't know the exact details of the changes.
-
- Mar 13, 2023
-
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
This ensures a simpler codebase and allows proper distance calculations between readable and past-the-end iterators, allowing the ringbuffer API to be fed distances for advancing the buffer.
-
Adrian Schollmeyer authored
-
Adrian Schollmeyer authored
-