Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement mp3/ogg Background Music Player using SDL2-mixer #725

Open
wants to merge 45 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
9ab5223
Revert "Use local game art ( image, marquee and video ) from romfolde…
joolswills Feb 27, 2018
49ca22a
bump version to v2.7.5
joolswills Feb 27, 2018
0330cfb
set curl to follow redirects to fix scraper error
jrassa May 23, 2018
920db2b
bump version to v2.7.6
joolswills Jul 11, 2018
66853e5
Revert "Revert "Use local game art ( image, marquee and video ) from …
joolswills Feb 9, 2019
a384c20
Merge remote-tracking branch 'retropie/master' into stable
joolswills Feb 9, 2019
2af2ec5
bump version to v2.8.0
joolswills Feb 9, 2019
c296a7d
Merge remote-tracking branch 'retropie/master' into stable
joolswills Feb 12, 2019
10ed2f2
bump version to v2.8.1
joolswills Feb 12, 2019
c6fa3c7
Merge remote-tracking branch 'retropie/master' into stable
joolswills Mar 4, 2019
25ef0c8
bump version to v2.8.2
joolswills Mar 4, 2019
5a40734
Revert "InputManager: improve trigger axis calibration"
joolswills Apr 6, 2019
3a9297a
bump version to v2.8.3
joolswills Apr 6, 2019
b4fb8ff
Merge remote-tracking branch 'retropie/master' into stable
joolswills Jun 26, 2019
72b8644
bump version to v2.8.4
joolswills Jun 26, 2019
a252ea2
filterTrigger: filter negative trigger axis event after positive axis…
psyke83 Jul 26, 2019
e8216c7
Merge remote-tracking branch 'retropie/master' into stable
joolswills Dec 29, 2019
7e6c2bf
bump version to v2.9.0
joolswills Dec 29, 2019
9d97dd1
Merge remote-tracking branch 'retropie/master' into stable
joolswills Apr 11, 2020
49d440a
bump version to v2.9.1
joolswills Apr 11, 2020
7aff7ce
Merge remote-tracking branch 'retropie/master' into stable
joolswills Jun 9, 2020
e56be5e
bump version to v2.9.2
joolswills Jun 9, 2020
6e24dfe
Merge remote-tracking branch 'retropie/master' into stable
joolswills Jun 11, 2020
982f6cc
bump version to v2.9.3
joolswills Jun 11, 2020
534883e
Merge remote-tracking branch 'retropie/master' into stable
joolswills Nov 1, 2020
be9e0f3
bump version to v2.9.4
joolswills Nov 1, 2020
91760a0
Merge remote-tracking branch 'retropie/master' into stable
joolswills Nov 3, 2020
2d6e425
bump version to v2.9.5
joolswills Nov 3, 2020
eae5f0f
Merge remote-tracking branch 'retropie/master' into stable
joolswills Nov 4, 2020
be5dcaf
bump version to v2.9.6
joolswills Nov 4, 2020
723935d
Merge remote-tracking branch 'retropie/master' into stable
joolswills Nov 13, 2020
d9be033
Merge remote-tracking branch 'retropie/master' into stable
joolswills Oct 31, 2021
c805670
bump version to v2.10.0
joolswills Oct 31, 2021
1d05ae4
Revert default ThreadedLoading option
pjft Dec 26, 2021
c9d905c
bump version to v2.10.1
joolswills Dec 26, 2021
677f63c
Merge remote-tracking branch 'retropie/master' into stable
joolswills Mar 7, 2022
2dd5e6b
bump version to v2.10.2
joolswills Mar 7, 2022
0091d04
Background Music Player
bluestang2006 Mar 8, 2022
ff6117f
Improved volume slider
bluestang2006 Feb 7, 2021
adcfcb9
Add music volume slider
bluestang2006 Mar 7, 2021
70a120a
Credits
bluestang2006 Mar 26, 2022
d67431f
Revert mixerName, mixerCard
bluestang2006 Mar 26, 2022
e5b5abd
Revert Settings.cpp, Settings.h
bluestang2006 Mar 26, 2022
6f6e9e9
Fix GuiMenu.cpp
bluestang2006 Mar 26, 2022
f19383e
Set default folders where music files can be stored
bluestang2006 Mar 26, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ccpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- name: configure
run: |
sudo apt-get update
sudo apt-get install libsdl2-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin
sudo apt-get install libsdl2-dev libsdl2-mixer-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin
shell: bash
- name: make
run: |
Expand Down
220 changes: 220 additions & 0 deletions CMake/Packages/FindSDL2_mixer.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

# Copyright 2019 Amine Ben Hassouna <amine.benhassouna@gmail.com>
# Copyright 2000-2019 Kitware, Inc. and Contributors
# All rights reserved.

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:

# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.

# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.

# * Neither the name of Kitware, Inc. nor the names of Contributors
# may be used to endorse or promote products derived from this
# software without specific prior written permission.

# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#[=======================================================================[.rst:
FindSDL2_mixer
--------------

Locate SDL2_mixer library

This module defines the following 'IMPORTED' target:

::

SDL2::Mixer
The SDL2_mixer library, if found.
Have SDL2::Core as a link dependency.



This module will set the following variables in your project:

::

SDL2_MIXER_LIBRARIES, the name of the library to link against
SDL2_MIXER_INCLUDE_DIRS, where to find the headers
SDL2_MIXER_FOUND, if false, do not try to link against
SDL2_MIXER_VERSION_STRING - human-readable string containing the
version of SDL2_mixer

This module responds to the following cache variables:

::

SDL2_MIXER_PATH
Set a custom SDL2_mixer Library path (default: empty)

SDL2_MIXER_NO_DEFAULT_PATH
Disable search SDL2_mixer Library in default path.
If SDL2_MIXER_PATH (default: ON)
Else (default: OFF)

SDL2_MIXER_INCLUDE_DIR
SDL2_mixer headers path.

SDL2_MIXER_LIBRARY
SDL2_mixer Library (.dll, .so, .a, etc) path.


Additional Note: If you see an empty SDL2_MIXER_LIBRARY in your project
configuration, it means CMake did not find your SDL2_mixer library
(SDL2_mixer.dll, libsdl2_mixer.so, etc). Set SDL2_MIXER_LIBRARY to point
to your SDL2_mixer library, and configure again. This value is used to
generate the final SDL2_MIXER_LIBRARIES variable and the SDL2::Mixer target,
but when this value is unset, SDL2_MIXER_LIBRARIES and SDL2::Mixer does not
get created.


$SDL2MIXERDIR is an environment variable that would correspond to the
./configure --prefix=$SDL2MIXERDIR used in building SDL2_mixer.

$SDL2DIR is an environment variable that would correspond to the
./configure --prefix=$SDL2DIR used in building SDL2.



Created by Amine Ben Hassouna:
Adapt FindSDL_mixer.cmake to SDL2_mixer (FindSDL2_mixer.cmake).
Add cache variables for more flexibility:
SDL2_MIXER_PATH, SDL2_MIXER_NO_DEFAULT_PATH (for details, see doc above).
Add SDL2 as a required dependency.
Modernize the FindSDL2_mixer.cmake module by creating a specific target:
SDL2::Mixer (for details, see doc above).

Original FindSDL_mixer.cmake module:
Created by Eric Wing. This was influenced by the FindSDL.cmake
module, but with modifications to recognize OS X frameworks and
additional Unix paths (FreeBSD, etc).
#]=======================================================================]

# SDL2 Library required
find_package(SDL2 QUIET)
if(NOT SDL2_FOUND)
set(SDL2_MIXER_SDL2_NOT_FOUND "Could NOT find SDL2 (SDL2 is required by SDL2_mixer).")
if(SDL2_mixer_FIND_REQUIRED)
message(FATAL_ERROR ${SDL2_MIXER_SDL2_NOT_FOUND})
else()
if(NOT SDL2_mixer_FIND_QUIETLY)
message(STATUS ${SDL2_MIXER_SDL2_NOT_FOUND})
endif()
return()
endif()
unset(SDL2_MIXER_SDL2_NOT_FOUND)
endif()


# Define options for searching SDL2_mixer Library in a custom path

set(SDL2_MIXER_PATH "" CACHE STRING "Custom SDL2_mixer Library path")

set(_SDL2_MIXER_NO_DEFAULT_PATH OFF)
if(SDL2_MIXER_PATH)
set(_SDL2_MIXER_NO_DEFAULT_PATH ON)
endif()

set(SDL2_MIXER_NO_DEFAULT_PATH ${_SDL2_MIXER_NO_DEFAULT_PATH}
CACHE BOOL "Disable search SDL2_mixer Library in default path")
unset(_SDL2_MIXER_NO_DEFAULT_PATH)

set(SDL2_MIXER_NO_DEFAULT_PATH_CMD)
if(SDL2_MIXER_NO_DEFAULT_PATH)
set(SDL2_MIXER_NO_DEFAULT_PATH_CMD NO_DEFAULT_PATH)
endif()

# Search for the SDL2_mixer include directory
find_path(SDL2_MIXER_INCLUDE_DIR SDL_mixer.h
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
${SDL2_MIXER_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES SDL2
# path suffixes to search inside ENV{SDL2DIR}
# and ENV{SDL2MIXERDIR}
include/SDL2 include
PATHS ${SDL2_MIXER_PATH}
DOC "Where the SDL2_mixer headers can be found"
)

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VC_LIB_PATH_SUFFIX lib/x64)
else()
set(VC_LIB_PATH_SUFFIX lib/x86)
endif()

# Search for the SDL2_mixer library
find_library(SDL2_MIXER_LIBRARY
NAMES SDL2_mixer
HINTS
ENV SDL2MIXERDIR
ENV SDL2DIR
${SDL2_MIXER_NO_DEFAULT_PATH_CMD}
PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX}
PATHS ${SDL2_MIXER_PATH}
DOC "Where the SDL2_mixer Library can be found"
)

# Read SDL2_mixer version
if(SDL2_MIXER_INCLUDE_DIR AND EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+[0-9]+$")
file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+[0-9]+$")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MAJOR "${SDL2_MIXER_VERSION_MAJOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MINOR "${SDL2_MIXER_VERSION_MINOR_LINE}")
string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_PATCH "${SDL2_MIXER_VERSION_PATCH_LINE}")
set(SDL2_MIXER_VERSION_STRING ${SDL2_MIXER_VERSION_MAJOR}.${SDL2_MIXER_VERSION_MINOR}.${SDL2_MIXER_VERSION_PATCH})
unset(SDL2_MIXER_VERSION_MAJOR_LINE)
unset(SDL2_MIXER_VERSION_MINOR_LINE)
unset(SDL2_MIXER_VERSION_PATCH_LINE)
unset(SDL2_MIXER_VERSION_MAJOR)
unset(SDL2_MIXER_VERSION_MINOR)
unset(SDL2_MIXER_VERSION_PATCH)
endif()

set(SDL2_MIXER_LIBRARIES ${SDL2_MIXER_LIBRARY})
set(SDL2_MIXER_INCLUDE_DIRS ${SDL2_MIXER_INCLUDE_DIR})

include(FindPackageHandleStandardArgs)

FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer
REQUIRED_VARS SDL2_MIXER_LIBRARIES SDL2_MIXER_INCLUDE_DIRS
VERSION_VAR SDL2_MIXER_VERSION_STRING)


mark_as_advanced(SDL2_MIXER_PATH
SDL2_MIXER_NO_DEFAULT_PATH
SDL2_MIXER_LIBRARY
SDL2_MIXER_INCLUDE_DIR)


if(SDL2_MIXER_FOUND)

# SDL2::Mixer target
if(SDL2_MIXER_LIBRARY AND NOT TARGET SDL2::Mixer)
add_library(SDL2::Mixer UNKNOWN IMPORTED)
set_target_properties(SDL2::Mixer PROPERTIES
IMPORTED_LOCATION "${SDL2_MIXER_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${SDL2_MIXER_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES SDL2::Core)
endif()
endif()
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ endif()
find_package(Freetype REQUIRED)
find_package(FreeImage REQUIRED)
find_package(SDL2 REQUIRED)
find_package(SDL2_mixer REQUIRED)
find_package(CURL REQUIRED)
find_package(VLC REQUIRED)
find_package(RapidJSON REQUIRED)
Expand Down Expand Up @@ -160,6 +161,7 @@ set(COMMON_INCLUDE_DIRS
${FREETYPE_INCLUDE_DIRS}
${FreeImage_INCLUDE_DIRS}
${SDL2_INCLUDE_DIR}
${SDL2_MIXER_INCLUDE_DIR}
${CURL_INCLUDE_DIR}
${VLC_INCLUDE_DIR}
${RAPIDJSON_INCLUDE_DIRS}
Expand Down Expand Up @@ -198,6 +200,7 @@ set(COMMON_LIBRARIES
${FREETYPE_LIBRARIES}
${FreeImage_LIBRARIES}
${SDL2_LIBRARY}
${SDL2_MIXER_LIBRARY}
${CURL_LIBRARIES}
${VLC_LIBRARIES}
pugixml
Expand Down
5 changes: 5 additions & 0 deletions CREDITS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
Programming
Alec "Aloshi" Lofquist - http://www.aloshi.com

BGM Player using SDL2-mixer
Nicolas Adenis-Lamarre - https://batocera.org
Fabrice Caruso - https://batocera.org
Andrew Falcon - bluestang2006@gmail.com (backported code)

UI Art & Design
Nils Bonenberger

Expand Down
4 changes: 2 additions & 2 deletions es-app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ SET(CPACK_RESOURCE_FILE README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Alec Lofquist <allofquist@yahoo.com>")
SET(CPACK_DEBIAN_PACKAGE_SECTION "misc")
SET(CPACK_DEBIAN_PACKAGE_PRIORITY "extra")
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libsdl2-2.0-0, libfreeimage3, libfreetype6, libcurl3, libasound2")
SET(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS "debhelper (>= 8.0.0), cmake, g++ (>= 4.8), libsdl2-dev, libfreeimage-dev, libfreetype6-dev, libcurl4-openssl-dev, libasound2-dev, libgl1-mesa-dev, rapidjson-dev")
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libsdl2-2.0-0, libsdl2-mixer-2.0-0, libfreeimage3, libfreetype6, libcurl3, libasound2")
SET(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS "debhelper (>= 8.0.0), cmake, g++ (>= 4.8), libsdl2-dev, libsdl2-mixer-dev, libfreeimage-dev, libfreetype6-dev, libcurl4-openssl-dev, libasound2-dev, libgl1-mesa-dev, rapidjson-dev")

SET(CPACK_PACKAGE_VENDOR "emulationstation.org")
SET(CPACK_PACKAGE_VERSION "2.0.0~rc1")
Expand Down
9 changes: 5 additions & 4 deletions es-app/src/EmulationStation.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
// These numbers and strings need to be manually updated for a new version.
// Do this version number update as the very last commit for the new release version.
#define PROGRAM_VERSION_MAJOR 2
#define PROGRAM_VERSION_MINOR 11
#define PROGRAM_VERSION_MAINTENANCE 0
#define PROGRAM_VERSION_STRING "2.11.0rp-dev"
#define PROGRAM_VERSION_MINOR 10
#define PROGRAM_VERSION_MAINTENANCE 2
#define PROGRAM_VERSION_STRING "2.10.2rp"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the version changed?


#define PROGRAM_BUILT_STRING __DATE__ " - " __TIME__

#define RESOURCE_VERSION_STRING "2,11,0\0"
#define RESOURCE_VERSION_STRING "2,10,2\0"

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the version changed?

#define RESOURCE_VERSION PROGRAM_VERSION_MAJOR,PROGRAM_VERSION_MINOR,PROGRAM_VERSION_MAINTENANCE

#endif // ES_APP_EMULATION_STATION_H
3 changes: 3 additions & 0 deletions es-app/src/FileData.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ void FileData::launchGame(Window* window)

window->init();
VolumeControl::getInstance()->init();
AudioManager::getInstance()->init();
window->normalizeNextUpdate();

//update number of times the game has been launched
Expand All @@ -313,6 +314,8 @@ void FileData::launchGame(Window* window)
CollectionSystemManager::get()->refreshCollectionSystems(gameToUpdate);

gameToUpdate->mSystem->onMetaDataSavePoint();

AudioManager::getInstance()->playRandomMusic();
}

CollectionFileData::CollectionFileData(FileData* file, SystemData* system)
Expand Down
Loading