Skip to content

Commit 9f41a4f

Browse files
author
John Sheppard
committed
Add project files.
1 parent 217dc8e commit 9f41a4f

6 files changed

Lines changed: 643 additions & 0 deletions

File tree

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Relikk (John Sheppard)
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# MD+ Audio Player for foobar2000
2+
3+
Seamless loop playback support for MD+ compatible CUE sheets in foobar2000.
4+
5+
## Features
6+
7+
- Seamless audio looping at specified loop points
8+
- Support for REM LOOP and REM NOLOOP commands
9+
- Compatible with WAV and OGG files (included because OGG is compatible with emulators such as Genesis Plus GX)
10+
- Works alongside standard CUE file handling
11+
12+
## Installation
13+
14+
1. Download the appropriate DLL for your foobar2000 version:
15+
- **32-bit (x86)** (v1.x): [foo_mdplus.dll (x86)](../../releases/latest/download/foo_mdplus_x86.dll)
16+
- **64-bit (x64)** (v2.x): [foo_mdplus.dll (x64)](../../releases/latest/download/foo_mdplus_x64.dll)
17+
18+
2. Copy the DLL to your foobar2000 components folder:
19+
- Usually (for v1.x): `C:\Program Files (x86)\foobar2000\components\`
20+
- (for v2.x): `C:\Program Files\foobar2000\components\`
21+
- Or: `%APPDATA%\foobar2000\user-components\`
22+
23+
3. Restart foobar2000
24+
25+
## Usage
26+
27+
1. Rename your MD+ CUE files from `.cue` to `.mdpcue`
28+
- Example: `game_name.cue` -> `game_name.mdpcue`
29+
30+
2. Add the `.mdpcue` file to foobar2000
31+
32+
3. Tracks with `REM LOOP` will loop seamlessly and indefinitely at the specified value in the CUE file
33+
- Tracks with `REM NOLOOP` play once and continue to next track
34+
35+
## Example MD+ CUE File Format
36+
37+
```cue
38+
FILE "01-Track.wav" WAVE
39+
TRACK 01 AUDIO
40+
INDEX 01 00:00:00
41+
REM LOOP 12345
42+
43+
FILE "02-Track.wav" WAVE
44+
TRACK 02 AUDIO
45+
INDEX 01 00:00:00
46+
REM NOLOOP
47+
```
48+
49+
## Building from Source
50+
51+
### Requirements
52+
- Visual Studio 2022
53+
- foobar2000 SDK (2025-03-07 or later)
54+
55+
### Steps
56+
1. Clone this repository
57+
2. Download the foobar2000 SDK and extract to `foobar2000_SDK/` folder
58+
3. Open `foo_mdplus.sln` in Visual Studio
59+
4. Select platform: **x86** or **x64**
60+
5. Build -> Build Solution
61+
6. DLL will be in `Debug/` or `Release/` folder
62+
63+
## Credits
64+
65+
- Author: Relikk (John Sheppard)
66+
- Version: 1.0
67+
- License: MIT License
68+
69+
## Support
70+
71+
For issues or feature requests, please open an issue on GitHub.

foo_mdplus.sln

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.14.36518.9 d17.14
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foo_mdplus", "foo_mdplus\foo_mdplus.vcxproj", "{F9B380D5-5606-41CD-BCFD-E4717D24D49D}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|x64 = Debug|x64
11+
Debug|x86 = Debug|x86
12+
Release|x64 = Release|x64
13+
Release|x86 = Release|x86
14+
EndGlobalSection
15+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
16+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Debug|x64.ActiveCfg = Debug|x64
17+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Debug|x64.Build.0 = Debug|x64
18+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Debug|x86.ActiveCfg = Debug|Win32
19+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Debug|x86.Build.0 = Debug|Win32
20+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Release|x64.ActiveCfg = Release|x64
21+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Release|x64.Build.0 = Release|x64
22+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Release|x86.ActiveCfg = Release|Win32
23+
{F9B380D5-5606-41CD-BCFD-E4717D24D49D}.Release|x86.Build.0 = Release|Win32
24+
EndGlobalSection
25+
GlobalSection(SolutionProperties) = preSolution
26+
HideSolutionNode = FALSE
27+
EndGlobalSection
28+
GlobalSection(ExtensibilityGlobals) = postSolution
29+
SolutionGuid = {8B895FAA-626A-49AD-9797-5443D6F101DA}
30+
EndGlobalSection
31+
EndGlobal

0 commit comments

Comments
 (0)