mirror of
https://github.com/hax4dazy/TinWoo.git
synced 2025-02-09 19:25:05 +01:00
auto switch between wav and other audio formats
This commit is contained in:
parent
3d63a8abf6
commit
695d477578
@ -19,7 +19,8 @@ namespace inst::util {
|
|||||||
std::vector<uint32_t> setClockSpeed(int deviceToClock, uint32_t clockSpeed);
|
std::vector<uint32_t> setClockSpeed(int deviceToClock, uint32_t clockSpeed);
|
||||||
std::string getIPAddress();
|
std::string getIPAddress();
|
||||||
int getUsbState();
|
int getUsbState();
|
||||||
void playAudio(std::string audioPath);
|
void playAudio(std::string audioPath); //for mp3/ogg/mod etc
|
||||||
|
void playWav(std::string audioPath); //for wav files
|
||||||
std::vector<std::string> checkForAppUpdate();
|
std::vector<std::string> checkForAppUpdate();
|
||||||
std::string SplitFilename(const std::string& str);
|
std::string SplitFilename(const std::string& str);
|
||||||
}
|
}
|
@ -27,7 +27,6 @@ SOFTWARE.
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <thread>
|
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
#include "ThemeInstall.hpp"
|
#include "ThemeInstall.hpp"
|
||||||
#include "util/error.hpp"
|
#include "util/error.hpp"
|
||||||
@ -204,7 +203,7 @@ namespace ThemeInstStuff {
|
|||||||
else {
|
else {
|
||||||
if (url[url.size() - 1] != '/') //does this line even do anything?
|
if (url[url.size() - 1] != '/') //does this line even do anything?
|
||||||
|
|
||||||
//First try and stream the links
|
//First try and see if we have any links for zip files
|
||||||
response = inst::curl::downloadToBuffer(url);
|
response = inst::curl::downloadToBuffer(url);
|
||||||
|
|
||||||
//If the above fails we probably have an html page - try to download it instead.
|
//If the above fails we probably have an html page - try to download it instead.
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#define COLOR(hex) pu::ui::Color::FromHex(hex)
|
#define COLOR(hex) pu::ui::Color::FromHex(hex)
|
||||||
|
|
||||||
@ -209,6 +210,8 @@ namespace inst::ui {
|
|||||||
inst::ui::mainApp->ThemeinstPage->setInstBarPerc(0);
|
inst::ui::mainApp->ThemeinstPage->setInstBarPerc(0);
|
||||||
ourPath = inst::config::appDir + "/temp_download.zip";
|
ourPath = inst::config::appDir + "/temp_download.zip";
|
||||||
installing = 1;
|
installing = 1;
|
||||||
|
//to do put download on a seperate thread.
|
||||||
|
//https://www.geeksforgeeks.org/multithreading-in-cpp/
|
||||||
bool didDownload = inst::curl::downloadFile(selectedUrls[0], ourPath.c_str(), 0, true);
|
bool didDownload = inst::curl::downloadFile(selectedUrls[0], ourPath.c_str(), 0, true);
|
||||||
bool didExtract = false;
|
bool didExtract = false;
|
||||||
if (didDownload) {
|
if (didDownload) {
|
||||||
@ -221,6 +224,14 @@ namespace inst::ui {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (inst::config::useSound) {
|
||||||
|
std::string audioPath = "";
|
||||||
|
std::string fail = inst::config::appDir + "audio.fail"_theme;
|
||||||
|
if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(fail)) audioPath = (fail);
|
||||||
|
else audioPath = "romfs:/audio/ohno.wav";
|
||||||
|
std::thread audioThread(inst::util::playAudio, audioPath);
|
||||||
|
audioThread.join();
|
||||||
|
}
|
||||||
inst::ui::mainApp->ThemeinstPage->pageInfoText->SetText("theme.failed"_lang);
|
inst::ui::mainApp->ThemeinstPage->pageInfoText->SetText("theme.failed"_lang);
|
||||||
installing = 0;
|
installing = 0;
|
||||||
inst::ui::mainApp->ThemeinstPage->setInstBarPerc(0);
|
inst::ui::mainApp->ThemeinstPage->setInstBarPerc(0);
|
||||||
@ -235,6 +246,14 @@ namespace inst::ui {
|
|||||||
}
|
}
|
||||||
std::filesystem::remove(ourPath);
|
std::filesystem::remove(ourPath);
|
||||||
if (didExtract) {
|
if (didExtract) {
|
||||||
|
if (inst::config::useSound) {
|
||||||
|
std::string audioPath = "";
|
||||||
|
std::string pass = inst::config::appDir + "audio.pass"_theme;
|
||||||
|
if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(pass)) audioPath = (pass);
|
||||||
|
else audioPath = "romfs:/audio/yipee.wav";
|
||||||
|
std::thread audioThread(inst::util::playAudio, audioPath);
|
||||||
|
audioThread.join();
|
||||||
|
}
|
||||||
inst::ui::mainApp->ThemeinstPage->pageInfoText->SetText("theme.extracted"_lang);
|
inst::ui::mainApp->ThemeinstPage->pageInfoText->SetText("theme.extracted"_lang);
|
||||||
std::string good = "romfs:/images/icons/good.png";
|
std::string good = "romfs:/images/icons/good.png";
|
||||||
if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "icons_others.good"_theme)) {
|
if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "icons_others.good"_theme)) {
|
||||||
|
@ -142,9 +142,6 @@ namespace inst::ui {
|
|||||||
|
|
||||||
void playmusic() {
|
void playmusic() {
|
||||||
SDL_Init(SDL_INIT_AUDIO);
|
SDL_Init(SDL_INIT_AUDIO);
|
||||||
Mix_Init(MIX_INIT_MP3); //enable mp3 support
|
|
||||||
Mix_Init(MIX_INIT_FLAC); //enable flac support
|
|
||||||
Mix_Init(MIX_INIT_OGG); //enable ogg support
|
|
||||||
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096);
|
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096);
|
||||||
std::string loadsound = "romfs:/bluesong.mod";
|
std::string loadsound = "romfs:/bluesong.mod";
|
||||||
if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "audio.music"_theme)) {
|
if (inst::config::useTheme && std::filesystem::exists(inst::config::appDir + "/theme/theme.json") && std::filesystem::exists(inst::config::appDir + "audio.music"_theme)) {
|
||||||
@ -153,7 +150,7 @@ namespace inst::ui {
|
|||||||
const char* x = loadsound.c_str();
|
const char* x = loadsound.c_str();
|
||||||
audio = Mix_LoadMUS(x);
|
audio = Mix_LoadMUS(x);
|
||||||
if (audio != NULL) {
|
if (audio != NULL) {
|
||||||
Mix_PlayMusic(audio, 100); //Play the audio file 100 loops
|
Mix_PlayMusic(audio, -1); //loop "infinitely"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <sstream>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
@ -18,6 +19,11 @@
|
|||||||
#include "util/json.hpp"
|
#include "util/json.hpp"
|
||||||
#include "nx/usbhdd.h"
|
#include "nx/usbhdd.h"
|
||||||
|
|
||||||
|
// Include sdl2 headers
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include <SDL2/SDL_mixer.h>
|
||||||
|
Mix_Music* music = NULL;
|
||||||
|
|
||||||
namespace inst::util {
|
namespace inst::util {
|
||||||
void initApp() {
|
void initApp() {
|
||||||
if (!std::filesystem::exists("sdmc:/switch")) std::filesystem::create_directory("sdmc:/switch");
|
if (!std::filesystem::exists("sdmc:/switch")) std::filesystem::create_directory("sdmc:/switch");
|
||||||
@ -293,6 +299,36 @@ namespace inst::util {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void playAudio(std::string audioPath) {
|
void playAudio(std::string audioPath) {
|
||||||
|
//check to make sure we aren't trying to play a wav file...
|
||||||
|
std::string wav("wav");
|
||||||
|
std::size_t found = audioPath.find(wav);
|
||||||
|
if (found != std::string::npos) {
|
||||||
|
playWav(audioPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//if not wav try to play
|
||||||
|
SDL_Init(SDL_INIT_AUDIO);
|
||||||
|
Mix_Init(MIX_INIT_MP3); //enable mp3 support
|
||||||
|
Mix_Init(MIX_INIT_FLAC); //enable flac support
|
||||||
|
Mix_Init(MIX_INIT_OGG); //enable ogg support
|
||||||
|
Mix_Init(MIX_INIT_MID);
|
||||||
|
Mix_Init(MIX_INIT_OPUS);
|
||||||
|
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096);
|
||||||
|
const char* x = audioPath.c_str();
|
||||||
|
music = Mix_LoadMUS(x);
|
||||||
|
if (music != NULL) {
|
||||||
|
Mix_PlayMusic(music, 1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Mix_HaltChannel(-1);
|
||||||
|
Mix_FreeMusic(music);
|
||||||
|
Mix_CloseAudio();
|
||||||
|
Mix_Quit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void playWav(std::string audioPath) {
|
||||||
int audio_rate = 22050;
|
int audio_rate = 22050;
|
||||||
Uint16 audio_format = AUDIO_S16SYS;
|
Uint16 audio_format = AUDIO_S16SYS;
|
||||||
int audio_channels = 2;
|
int audio_channels = 2;
|
||||||
@ -319,7 +355,6 @@ namespace inst::util {
|
|||||||
|
|
||||||
Mix_FreeChunk(sound);
|
Mix_FreeChunk(sound);
|
||||||
Mix_CloseAudio();
|
Mix_CloseAudio();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user