diff --git a/media-sound/furnace/additional-files/furnace.rdef.in b/media-sound/furnace/additional-files/furnace.rdef.in new file mode 100644 index 000000000..b690ebff4 --- /dev/null +++ b/media-sound/furnace/additional-files/furnace.rdef.in @@ -0,0 +1,15 @@ +resource app_flags B_SINGLE_LAUNCH; + +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = @MINOR@, + + variety = B_APPV_BETA, + internal = 0, + + short_info = "@APP_NAME@", + long_info = "@LONG_INFO@" +}; + +resource app_signature "@APP_SIGNATURE@"; diff --git a/media-sound/furnace/furnace-0.6.1~git.recipe b/media-sound/furnace/furnace-0.6.1~git.recipe new file mode 100644 index 000000000..43b18b812 --- /dev/null +++ b/media-sound/furnace/furnace-0.6.1~git.recipe @@ -0,0 +1,197 @@ +SUMMARY="A multi-system chiptune tracker compatible with DefleMask modules" +DESCRIPTION="Features + +Over 50 sound chips - and counting: +Yamaha FM chips: + - YM2151 (OPM) + - YM2203 (OPN) + - YM2413 (OPLL) + - YM2414 (OPZ) used in Yamaha TX81Z + - YM2608 (OPNA) used in PC-98 + - YM2610 (OPNB) used in Neo Geo + - YM2610B (OPNB2) + - YM2612 (OPN2) used in Sega Genesis and FM Towns + - YM3526 (OPL) used in C64 Sound Expander + - YM3812 (OPL2) + - YMF262 (OPL3) with full 4-op support! + - Y8950 (OPL with ADPCM) +square wave chips: + - AY-3-8910/YM2149(F) used in several computers and game consoles + - Commodore VIC used in the VIC-20 + - Microchip AY8930 + - TI SN76489 used in Sega Master System and BBC Micro + - PC Speaker + - Philips SAA1099 used in SAM Coupé +sample chips: + - Amiga + - SegaPCM - all 16 channels + - Capcom QSound + - Yamaha YMZ280B (PCMD8) + - Ricoh RF5C68 used in Sega CD and FM Towns + - OKI MSM6258 and MSM6295 +wavetable chips: + - HuC6280 used in PC Engine + - Konami Bubble System WSG + - Konami SCC/SCC+ + - Namco arcade chips (WSG/C15/C30) + - WonderSwan + - Seta/Allumer X1-010 +NES (Ricoh 2A03/2A07), with additional expansion sound support: + - Konami VRC6 + - Konami VRC7 + - MMC5 + - Famicom Disk System + - Sunsoft 5B + - Namco 163 + - Family Noraebang (OPLL) +SID (6581/8580) used in Commodore 64 +Mikey used in Atari Lynx +ZX Spectrum beeper (SFX-like engine) +TIA used in Atari 2600 +Game Boy +modern/fantasy: + - Commander X16 VERA + - tildearrow Sound Unit + +Mix and match sound chips! + - over 200 ready to use presets from computers, game consoles and arcade boards... + - ...or create your own - up to 32 of them or a total of 128 channels! + +DefleMask compatibility + - loads .dmf modules from all versions (beta 1 to 1.1.3) + - saves .dmf modules - both modern and legacy + - Furnace doubles as a module downgrader + - loads .dmp instruments and .dmw wavetables as well + - clean-room design (guesswork and ABX tests only, no decompilation involved) + - bug/quirk implementation for increased playback accuracy through compatibility flags + +VGM export + +Modular layout that you may adapt to your needs + +Audio file export - entire song, per system or per channel + +Quality emulation cores (Nuked, MAME, SameBoy, Mednafen PCE, NSFplay, puNES, reSID, Stella, SAASound, vgsound_emu and ymfm) + +Wavetable synthesizer + - available on wavetable chips + - create complex sounds with ease - provide up to two wavetables, select and effect and let go! + +MIDI input support + +Fractal Sound support! + - the game-ready Sega Genesis/Mega Drive sound driver! + - compose your songs in Furnace using the Fractal Sound presets and then use them in your games with Fractal! + +Additional features: + - FM macros! + - negative octaves + - arbitrary pitch samples + - sample loop points + - SSG envelopes and ADPCM-B in Neo Geo + - full duty/cutoff range in C64 + - ability to change tempo mid-song + - multiple sub-songs in a module + - per-channel oscilloscope with waveform centering + - built-in sample editor + - chip mixing settings + - built-in visualizer in pattern view + +Open-source under GPLv2 or later." +HOMEPAGE="https://github.com/tildearrow/furnace" +COPYRIGHT="2021-2022 tildearrow and contributors" +LICENSE="GNU GPL v2" +REVISION="1" +srcGitRev="173e9b0df9590536e25b3126c17663cd1b08ffe7" +SOURCE_URI="$HOMEPAGE/archive/$srcGitRev.tar.gz" +CHECKSUM_SHA256="bcc10f4b4f4e111557bb444d8434be4dfeccb066f34e3ab1abe1d4a2d9394f76" +SOURCE_DIR="furnace-$srcGitRev" +srcGitRev2="ef7a217154badc3b99978ac481b268c8aab67bd8" +SOURCE_URI_2="https://github.com/superctr/adpcm/archive/$srcGitRev2.tar.gz" +CHECKSUM_SHA256_2="46da29342d2968ff222ba00e07c646e038b76af2e6c86de037c653059a056251" +srcGitRev3="64704a443f8f6c1906ba26297092ea70fa1d45d7" +SOURCE_URI_3="https://github.com/nukeykt/Nuked-OPN2/archive/$srcGitRev3.tar.gz" +CHECKSUM_SHA256_3="109d461d811cb223bfd55ab41068882573e3886f798eeb27d09f4d3ecefe94f5" +ADDITIONAL_FILES="furnace.rdef.in" + +ARCHITECTURES="?all !x86_gcc2" +SECONDARY_ARCHITECTURES="?x86" + +PROVIDES=" + furnace$secondaryArchSuffix = $portVersion + app:Furnace = $portVersion + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libfftw3$secondaryArchSuffix + lib:libfmt$secondaryArchSuffix + lib:librtmidi$secondaryArchSuffix + lib:libSDL2_2.0$secondaryArchSuffix + lib:libsndfile$secondaryArchSuffix + lib:libz$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + devel:libfftw3$secondaryArchSuffix + devel:libfmt$secondaryArchSuffix + devel:librtmidi$secondaryArchSuffix + devel:libSDL2_2.0$secondaryArchSuffix + devel:libsndfile$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:cmake + cmd:gcc$secondaryArchSuffix + cmd:make + cmd:pkg_config$secondaryArchSuffix + " + +BUILD() +{ + cp -rf $sourceDir2/adpcm-$srcGitRev2/* $sourceDir/extern/adpcm/ + cp -rf $sourceDir3/Nuked-OPN2-$srcGitRev3/* $sourceDir/extern/Nuked-OPN2/ + + cmake -Bbuild -S. -DCMAKE_BUILD_TYPE=Release \ + $cmakeDirArgs \ + -DCMAKE_INSTALL_BINDIR=$appsDir \ + -DSYSTEM_LIBSNDFILE=ON \ + -DSYSTEM_FFTW=ON \ + -DSYSTEM_FMT=ON \ + -DSYSTEM_RTMIDI=ON \ + -DSYSTEM_SDL2=ON \ + -DSYSTEM_ZLIB=ON + + make -C build $jobArgs +} + +INSTALL() +{ + make -C build install + + mv $appsDir/furnace $appsDir/Furnace + rm -rf $dataDir/{applications,icons,licenses,metainfo} + + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3 | cut -d~ -f1`" + local APP_NAME="Furnace" + local LONG_INFO="$SUMMARY" + local APP_SIGNATURE="application/x-vnd.furnace" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + -e "s|@APP_NAME@|$APP_NAME|" \ + -e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \ + $portDir/additional-files/furnace.rdef.in > furnace.rdef + addResourcesToBinaries furnace.rdef $appsDir/Furnace + + addAppDeskbarSymlink $appsDir/Furnace +} + +TEST() +{ + make -C build check +}