looper/playlist.hpp
2024-12-08 11:03:49 -08:00

39 lines
No EOL
1 KiB
C++

#pragma once
#include <filesystem>
#include <vector>
#define LOOP_FOREVER (-1)
namespace fs = std::filesystem;
struct PlaylistEntry {
double speed;
double tempo;
double pitch;
int loops;
int stream_idx;
fs::path path;
};
class Playlist {
friend class LooperXspfReaderCallback;
std::vector<PlaylistEntry> entries;
fs::path path;
using vec = std::vector<PlaylistEntry>;
using iterator = vec::iterator;
using const_iterator = vec::const_iterator;
using reverse_iterator = vec::reverse_iterator;
using const_reverse_iterator = vec::const_reverse_iterator;
public:
void save(fs::path output_file);
inline PlaylistEntry &operator[](int idx) {
return entries[idx];
}
iterator begin();
iterator end();
const_iterator cbegin();
const_iterator cend();
reverse_iterator rbegin();
reverse_iterator rend();
const_reverse_iterator crbegin();
const_reverse_iterator crend();
Playlist(fs::path input_file);
Playlist() = default;
};