You need Visual Studio C++ 2017 (with Windows XP support for C++).

First you need to compile all 3rd-party libraries.

Precompiled libraries and everything else that are needed to build the program also avaliable here:  
https://drive.google.com/file/d/1_LJhmeySUFwvI7CXPuFgB84bDYPr5tiR/view?usp=sharing  
You don't need to follow the instructions below if you use it, but you must use the same compiler (VC++ 2017 for now).

----------
Build SQLite:

1. Download amalgamation from https://www.sqlite.org/download.html
2. Unzip all files to Winyl/src/sqlite3/sqlite3/src
3. Build Winyl/src/sqlite3/sqlite3.sln

----------
Build TagLib:

1. Download https://github.com/taglib/taglib
2. Configure Visual Studio projects with CMake (CMake GUI is the easiest way) with ENABLE_STATIC_RUNTIME only option
3. Patch file taglib/mpeg/id3v2/id3v2tag.cpp: in function downgradeFrames replace all String::Latin1 to String::UTF16 (must be 5 replacements)
4. In Visual studio in tag project properties change Platform Toolset to v141_xp
5. Build only tag project, other projects aren't needed
6. Copy all .h and .tcc files to Winyl/src/taglib (cmdline: for /r "taglib-master\taglib" %f in (*.h;*.tcc) do copy "%f" "Winyl\Winyl\src\taglib")
7. x86: Copy Release and Debug folders with .lib and .pdb files to Winyl/src/taglib
8. x64: Reconfigure Win64 Visual Studio projects with CMake and build it
9. x64: Copy Release and Debug folders with .lib and .pdb files to Winyl/src/taglib/x64

----------
Build zlib (can be skipped, needed only for PackSkin utility):

1. Download zlib https://zlib.net
2. Open contrib/vstudio/vc14/zlibvc.sln
3. Open zlibstat ReleaseWithoutAsm project properties
4. Change Platform Toolset to v141_xp
5. Change C/C++ -> Code Generation -> Runtime Library -> Set /MT
6. Change C/C++ -> General -> Debug Information Format -> Set None
7. Build zlibstat ReleaseWithoutAsm
8. x86: Copy zlibstat.lib to Winyl/src/zlib
9. x64: Copy zlibstat.lib to Winyl/src/zlib/x64
10. Copy zlib.h, zconf.h, ioapi.h, zip.h, unzip.h to Winyl/src/zlib
11. Build PackSkin utility Winyl/PackSkin/PackSkin.sln

----------
pugixml:

1. Download pugixml https://pugixml.org
2. Unzip it to Winyl/src/pugixml
3. Uncomment the following lines in pugiconfig.hpp  
#define PUGIXML_NO_XPATH  
#define PUGIXML_NO_STL  
#define PUGIXML_NO_EXCEPTIONS  
#define PUGIXML_HEADER_ONLY  
#define PUGIXML_HAS_LONG_LONG  

----------
BASS:

1. Download from http://www.un4seen.com  
bass24.zip  
bassmix24.zip  
bass_fx24.zip  
basswasapi24.zip  
bassasio13.zip  
bass_aac24.zip  
bass_ape24.zip  
bass_mpc24.zip  
bass_spx24.zip  
bass_tta24.zip  
bassalac24.zip  
bassflac24.zip  
bassopus24.zip  
basswm24.zip  
basswv24.zip  
2. Unzip .h files to Winyl/src/bass
3. x86: Unzip .lib files to Winyl/src/bass (for bass_fx use .lib file from safeseh folder)
4. x64: Unzip x64 .lib files to Winyl/src/bass/x64

----------
That is all if you only need to compile the release version, build it with Winyl.sln.

----------
To run under the debugger or create packages you need Winyl/data folder.

The data folder structure:

File.ico  
License.txt  
Portable.dat  
Equalizer/Presets.xml  
Language/*  
Skin/*  
x86/bass.dll  
x86/bass_fx.dll  
x86/bassasio.dll  
x86/bassmix.dll  
x86/basswasapi.dll  
x86/Bass/bass_aac.dll  
x86/Bass/bass_ape.dll  
x86/Bass/bass_mpc.dll  
x86/Bass/bass_spx.dll  
x86/Bass/bass_tta.dll  
x86/Bass/bassalac.dll  
x86/Bass/bassflac.dll  
x86/Bass/bassopus.dll  
x86/Bass/basswma.dll  
x86/Bass/basswv.dll  
x64/(the same as above but dlls are x64)  


----------
Creating packages:

1. Copy the data folder somewhere
2. Remove Profile subfolder
3. Copy Winyl.exe to the data folder
4. Move dlls from x86/x64 to the data folder and delete x86 and x64 folders
5. Copy PackSkin.exe to data\Skin folder
6. Pack all skins with PackSkin utility and delete unpacked skins
7. Rename the data folder to 'Winyl'
8. Portable version: zip the folder
9. Setup version: run Inno Setup script
10. Repeat all for x64 version