Set log output is sent to file. Implment seemingly correct replain gain support.
This commit is contained in:
@@ -10,7 +10,7 @@ find_package(Groove REQUIRED)
|
|||||||
find_package(TagLib REQUIRED)
|
find_package(TagLib REQUIRED)
|
||||||
|
|
||||||
add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp src/ui/LoginInterface.cpp src/ui/PlayerInterface.cpp src/ui/TrackDetails.cpp src/ui/RequestInterface.cpp src/ui/UploadInterface.cpp src/ui/AdminInterface.cpp)
|
add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp src/ui/LoginInterface.cpp src/ui/PlayerInterface.cpp src/ui/TrackDetails.cpp src/ui/RequestInterface.cpp src/ui/UploadInterface.cpp src/ui/AdminInterface.cpp)
|
||||||
target_link_libraries(arbitrateor ${Wt_LIBRARIES} ${GROOVE_LIBRARY} ${GROOVE_FINGERPRINT_LIBRARY} ${GROOVE_PLAYER_LIBRARY} ${TAGLIB_LIBRARY} pthread boost_system stdc++fs) #TODO get threading links based on platform. Remove gcc experimental fs when official c++17 exists.
|
target_link_libraries(arbitrateor ${Wt_LIBRARIES} ${GROOVE_LIBRARY} ${GROOVE_FINGERPRINT_LIBRARY} ${GROOVE_PLAYER_LIBRARY} ${GROOVE_LOUDNESS_LIBRARY} ${TAGLIB_LIBRARY} pthread boost_system stdc++fs) #TODO get threading links based on platform. Remove gcc experimental fs when official c++17 exists.
|
||||||
|
|
||||||
install(TARGETS arbitrateor RUNTIME DESTINATION .)
|
install(TARGETS arbitrateor RUNTIME DESTINATION .)
|
||||||
install(FILES ${CMAKE_SOURCE_DIR}/wt_config.xml DESTINATION .)
|
install(FILES ${CMAKE_SOURCE_DIR}/wt_config.xml DESTINATION .)
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ Arbitrateor - Audio Jukebox
|
|||||||
|
|
||||||
These packages are required to build on Ubuntu 16.04:
|
These packages are required to build on Ubuntu 16.04:
|
||||||
```
|
```
|
||||||
witty-dev libgroove-dev libgroovefingerprinter-dev libgrooveplayer-dev libtag1-dev g++ cmake
|
witty-dev libgroove-dev libgroovefingerprinter-dev libgrooveplayer-dev libgrooveloundness-dev libtag1-dev g++ cmake
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -7,14 +7,16 @@
|
|||||||
# GROOVE_LIBRARY
|
# GROOVE_LIBRARY
|
||||||
# GROOVE_FINGERPRINT_LIBRARY
|
# GROOVE_FINGERPRINT_LIBRARY
|
||||||
# GROOVE_PLAYER_LIBRARY
|
# GROOVE_PLAYER_LIBRARY
|
||||||
|
# GROOVE_LOUDNESS_LIBRARY
|
||||||
|
|
||||||
find_path(GROOVE_INCLUDE_DIR NAMES groove/groove.h)
|
find_path(GROOVE_INCLUDE_DIR NAMES groove/groove.h)
|
||||||
|
|
||||||
find_library(GROOVE_LIBRARY NAMES groove)
|
find_library(GROOVE_LIBRARY NAMES groove)
|
||||||
find_library(GROOVE_FINGERPRINT_LIBRARY NAMES groovefingerprinter)
|
find_library(GROOVE_FINGERPRINT_LIBRARY NAMES groovefingerprinter)
|
||||||
find_library(GROOVE_PLAYER_LIBRARY NAMES grooveplayer)
|
find_library(GROOVE_PLAYER_LIBRARY NAMES grooveplayer)
|
||||||
|
find_library(GROOVE_LOUDNESS_LIBRARY NAMES grooveloudness)
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(GROOVE DEFAULT_MSG GROOVE_LIBRARY GROOVE_FINGERPRINT_LIBRARY GROOVE_PLAYER_LIBRARY GROOVE_INCLUDE_DIR)
|
find_package_handle_standard_args(GROOVE DEFAULT_MSG GROOVE_LIBRARY GROOVE_FINGERPRINT_LIBRARY GROOVE_PLAYER_LIBRARY GROOVE_LOUDNESS_LIBRARY GROOVE_INCLUDE_DIR)
|
||||||
|
|
||||||
mark_as_advanced(GROOVE_INCLUDE_DIR GROOVE_LIBRARY GROOVE_FINGERPRINT_LIBRARY GROOVE_PLAYER_LIBRARY)
|
mark_as_advanced(GROOVE_INCLUDE_DIR GROOVE_LIBRARY GROOVE_FINGERPRINT_LIBRARY GROOVE_PLAYER_LIBRARY GROOVE_LOUDNESS_LIBRARY)
|
||||||
|
|||||||
@@ -227,6 +227,8 @@ void GroovePlayerMgr::grooveEventLoop()
|
|||||||
struct GroovePlayer* player = groove_player_create();
|
struct GroovePlayer* player = groove_player_create();
|
||||||
if(!player) {return;}
|
if(!player) {return;}
|
||||||
currentPlayer = player;
|
currentPlayer = player;
|
||||||
|
currentRPG = groove_loudness_detector_create();
|
||||||
|
groove_loudness_detector_attach(currentRPG,playlist);
|
||||||
|
|
||||||
groove_playlist_insert(playlist, groove_file_open(selectedTrack.trackPath.c_str()),1.0,1.0,nullptr);
|
groove_playlist_insert(playlist, groove_file_open(selectedTrack.trackPath.c_str()),1.0,1.0,nullptr);
|
||||||
|
|
||||||
@@ -245,6 +247,13 @@ void GroovePlayerMgr::grooveEventLoop()
|
|||||||
}
|
}
|
||||||
else if(event.eventType == GROOVE_NOWPLAYING)
|
else if(event.eventType == GROOVE_NOWPLAYING)
|
||||||
{
|
{
|
||||||
|
//Clean up playlist if more than 4
|
||||||
|
if(groove_playlist_count(playlist) > 4)
|
||||||
|
{
|
||||||
|
groove_file_close(currentPlaylist->head->file);
|
||||||
|
groove_playlist_remove(currentPlaylist,currentPlaylist->head);
|
||||||
|
}
|
||||||
|
//clean up state
|
||||||
currentSkipRequester.clear();
|
currentSkipRequester.clear();
|
||||||
currentTrack = getCurrentTrackDB(&sqlSession);
|
currentTrack = getCurrentTrackDB(&sqlSession);
|
||||||
getPictureFromTrack(¤tTrack);
|
getPictureFromTrack(¤tTrack);
|
||||||
@@ -266,6 +275,14 @@ void GroovePlayerMgr::grooveEventLoop()
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
Wt::log("info") << "Track playing changed to: " << currentTrack.trackName;
|
Wt::log("info") << "Track playing changed to: " << currentTrack.trackName;
|
||||||
|
//Make sure gain is suggested
|
||||||
|
struct GrooveLoudnessDetectorInfo info;
|
||||||
|
groove_loudness_detector_info_get(currentRPG,&info,1);
|
||||||
|
struct GroovePlaylistItem* item;
|
||||||
|
groove_player_position(currentPlayer,&item,nullptr);
|
||||||
|
groove_playlist_set_item_gain(currentPlaylist, item, clamp_rg(-18.0 - info.loudness));
|
||||||
|
groove_playlist_set_item_peak(currentPlaylist, item, info.peak);
|
||||||
|
Wt::log("info") << "Gain being set to:" << clamp_rg(-18.0 - info.loudness) << " and peak to:" << info.peak;
|
||||||
}
|
}
|
||||||
else if(event.eventType == VOTING_ENDED)
|
else if(event.eventType == VOTING_ENDED)
|
||||||
{
|
{
|
||||||
@@ -519,6 +536,8 @@ void GroovePlayerMgr::grooveEventLoop()
|
|||||||
currentPlayer = nullptr;
|
currentPlayer = nullptr;
|
||||||
groove_player_detach(player);
|
groove_player_detach(player);
|
||||||
groove_player_destroy(player);
|
groove_player_destroy(player);
|
||||||
|
groove_loudness_detector_detach(currentRPG);
|
||||||
|
groove_loudness_detector_destroy(currentRPG);
|
||||||
groove_playlist_destroy(playlist);
|
groove_playlist_destroy(playlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
#include "db/User.h"
|
#include "db/User.h"
|
||||||
#include "db/AudioTrack.h"
|
#include "db/AudioTrack.h"
|
||||||
#include <groove/groove.h>
|
#include <groove/groove.h>
|
||||||
|
#include <grooveplayer/player.h>
|
||||||
|
#include <grooveloudness/loudness.h>
|
||||||
#include <experimental/filesystem> //TODO:Change to non-gcc way when officially using c++17
|
#include <experimental/filesystem> //TODO:Change to non-gcc way when officially using c++17
|
||||||
namespace std {
|
namespace std {
|
||||||
namespace filesystem = experimental::filesystem;
|
namespace filesystem = experimental::filesystem;
|
||||||
@@ -48,6 +50,7 @@ public:
|
|||||||
|
|
||||||
struct GroovePlaylist* currentPlaylist;
|
struct GroovePlaylist* currentPlaylist;
|
||||||
struct GroovePlayer* currentPlayer;
|
struct GroovePlayer* currentPlayer;
|
||||||
|
struct GrooveLoudnessDetector* currentRPG;
|
||||||
AudioTrack currentTrack;
|
AudioTrack currentTrack;
|
||||||
std::list<AudioTrack> currentVoteBatch;
|
std::list<AudioTrack> currentVoteBatch;
|
||||||
std::list<std::pair<AudioTrack, int>> currentVoteStatus;
|
std::list<std::pair<AudioTrack, int>> currentVoteStatus;
|
||||||
@@ -87,6 +90,11 @@ private:
|
|||||||
void removeOrphanedTracks(Wt::Dbo::Session* session);
|
void removeOrphanedTracks(Wt::Dbo::Session* session);
|
||||||
|
|
||||||
AudioTrack getCurrentTrackDB(Wt::Dbo::Session* session);
|
AudioTrack getCurrentTrackDB(Wt::Dbo::Session* session);
|
||||||
|
static double clamp_rg(double x) {
|
||||||
|
if (x < -51.0) return -51.0;
|
||||||
|
else if (x > 51.0) return 51.0;
|
||||||
|
else return x;
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include <Wt/WServer>
|
#include <Wt/WServer>
|
||||||
#include <Wt/WConfig.h>
|
#include <Wt/WConfig.h>
|
||||||
#include "GroovePlayer.h"
|
#include "GroovePlayer.h"
|
||||||
|
#include <experimental/filesystem> //TODO:Change to non-gcc way when officially using c++17
|
||||||
|
|
||||||
Wt::WApplication* createApplication(const Wt::WEnvironment& env)
|
Wt::WApplication* createApplication(const Wt::WEnvironment& env)
|
||||||
{
|
{
|
||||||
@@ -13,6 +14,7 @@ int main ( int argc, char** argv )
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
Wt::WServer server(argv[0]);
|
Wt::WServer server(argv[0]);
|
||||||
|
server.logger().setFile(std::filesystem::current_path()/"arb-log.txt");
|
||||||
server.setServerConfiguration(argc, argv, WTHTTP_CONFIGURATION);
|
server.setServerConfiguration(argc, argv, WTHTTP_CONFIGURATION);
|
||||||
server.addEntryPoint(Wt::Application, createApplication);
|
server.addEntryPoint(Wt::Application, createApplication);
|
||||||
if(server.start())
|
if(server.start())
|
||||||
|
|||||||
@@ -52,10 +52,6 @@ AdminInterface::AdminInterface(WebInterface* app)
|
|||||||
|
|
||||||
AdminInterface::~AdminInterface()
|
AdminInterface::~AdminInterface()
|
||||||
{
|
{
|
||||||
delete addBtn;
|
|
||||||
delete passwordField;
|
|
||||||
delete usernameField;
|
|
||||||
delete userLayout;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdminInterface::addClicked()
|
void AdminInterface::addClicked()
|
||||||
|
|||||||
@@ -143,36 +143,6 @@ PlayerInterface::PlayerInterface(WebInterface* app)
|
|||||||
|
|
||||||
PlayerInterface::~PlayerInterface()
|
PlayerInterface::~PlayerInterface()
|
||||||
{
|
{
|
||||||
// Keep these out until I have a good reason to use.
|
|
||||||
// delete mainDisplay;
|
|
||||||
// delete requestPane;
|
|
||||||
// delete uploadPane;
|
|
||||||
// delete adminPane;
|
|
||||||
// delete track3vote;
|
|
||||||
// delete track2vote;
|
|
||||||
// delete track1vote;
|
|
||||||
// delete track3votecount;
|
|
||||||
// delete track2votecount;
|
|
||||||
// delete track1votecount;
|
|
||||||
// delete track3details;
|
|
||||||
// delete track2details;
|
|
||||||
// delete track1details;
|
|
||||||
// delete voteTracksLayout;
|
|
||||||
// delete voteTracksContainer;
|
|
||||||
// delete votePanel;
|
|
||||||
// delete voteControlContainer;
|
|
||||||
// delete voteMetaLayout;
|
|
||||||
// delete voteMetaContainer;
|
|
||||||
// delete skipRequest;
|
|
||||||
// delete skipDeny;
|
|
||||||
// delete playpause;
|
|
||||||
// delete currentTrackDetails;
|
|
||||||
// delete trackProgress;
|
|
||||||
// delete currentTrackProgress;
|
|
||||||
// delete skipControls;
|
|
||||||
// delete playControlLayout;
|
|
||||||
// delete playControlWidget;
|
|
||||||
// delete interfaceLayout;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlayerInterface::playpauseClicked()
|
void PlayerInterface::playpauseClicked()
|
||||||
|
|||||||
Reference in New Issue
Block a user