Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/tildearrow/furnace into n…
Browse files Browse the repository at this point in the history
…mk112
  • Loading branch information
cam900 committed Feb 3, 2024
2 parents 6917c54 + 2957645 commit 3922770
Show file tree
Hide file tree
Showing 166 changed files with 4,822 additions and 2,047 deletions.
95 changes: 36 additions & 59 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Build furnace

on:
push:
branches: [master, esfm-contest]
branches: master
pull_request:
branches: master

Expand All @@ -22,8 +22,8 @@ jobs:
- { name: 'Windows MSVC x86_64', os: windows-latest, compiler: msvc, arch: x86_64 }
#- { name: 'Windows MinGW x86', os: ubuntu-20.04, compiler: mingw, arch: x86 }
#- { name: 'Windows MinGW x86_64', os: ubuntu-20.04, compiler: mingw, arch: x86_64 }
#- { name: 'macOS x86_64', os: macos-latest, arch: x86_64 }
#- { name: 'macOS ARM', os: macos-latest, arch: arm64 }
- { name: 'macOS x86_64', os: macos-latest, arch: x86_64 }
- { name: 'macOS ARM', os: macos-latest, arch: arm64 }
- { name: 'Linux x86_64', os: ubuntu-20.04, arch: x86_64 }
#- { name: 'Linux ARM', os: ubuntu-18.04, arch: armhf }
fail-fast: false
Expand All @@ -33,7 +33,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v3.1.0
uses: actions/checkout@v4.1.1
with:
submodules: recursive

Expand Down Expand Up @@ -106,7 +106,7 @@ jobs:
- name: Setup Toolchain [Windows MSVC]
if: ${{ matrix.config.compiler == 'msvc' }}
uses: vadz/gha-setup-vsdevenv@avoid-deprecation-warnings
uses: lunathir/gha-setup-vsdevenv@avoid-deprecation-warnings
with:
arch: ${{ steps.windows-identify.outputs.vswhere-target }}

Expand Down Expand Up @@ -150,57 +150,6 @@ jobs:
libjack-jackd2-dev:armhf
ls /usr/arm-linux-gnueabihf/lib
- name: Configure (System Libraries)
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
run: |
export USE_WAE=ON
export CMAKE_EXTRA_ARGS=()
if [ '${{ matrix.config.compiler }}' == 'msvc' ]; then
CMAKE_EXTRA_ARGS+=('-DCMAKE_GENERATOR_PLATFORM=${{ steps.windows-identify.outputs.msvc-target }}')
elif [ '${{ matrix.config.compiler }}' == 'mingw' ]; then
CMAKE_EXTRA_ARGS+=('-DCMAKE_TOOLCHAIN_FILE=scripts/Cross-MinGW-${{ steps.windows-identify.outputs.mingw-target }}.cmake')
else
# Test with system libs
CMAKE_EXTRA_ARGS+=(
'-DSYSTEM_FMT=OFF'
'-DSYSTEM_LIBSNDFILE=ON'
'-DSYSTEM_RTMIDI=ON'
'-DSYSTEM_ZLIB=ON'
'-DWITH_JACK=ON'
)
# Too old on Ubuntu
if [ '${{ runner.os }}' == 'macOS' ]; then
CMAKE_EXTRA_ARGS+=('-DSYSTEM_SDL2=ON')
fi
fi
cmake \
-B ${PWD}/build \
-DCMAKE_INSTALL_PREFIX=${PWD}/target \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-DWARNINGS_ARE_ERRORS=${USE_WAE} \
"${CMAKE_EXTRA_ARGS[@]}"
- name: Build (System Libraries)
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
run: |
cmake \
--build ${PWD}/build \
--config ${{ env.BUILD_TYPE }} \
--parallel ${{ steps.build-cores.outputs.amount }}
- name: Install (System Libraries)
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
run: |
cmake \
--install ${PWD}/build \
--config ${{ env.BUILD_TYPE }}
- name: Cleanup (System Libraries)
if: ${{ runner.os == 'Linux' && matrix.config.compiler != 'mingw' && matrix.config.arch == 'x86_64' }}
run: |
rm -rf build/ target/
- name: Configure
run: |
export USE_WAE=ON
Expand Down Expand Up @@ -284,15 +233,31 @@ jobs:
if: ${{ runner.os == 'macOS' }}
run: |
pushd build
cpack
retries=0
while ! cpack; do
echo "TRYING AGAIN..."
retries=$((retries+1))
if [ $retries -gt 5 ]; then
echo "OH NO, WE'VE FAILED..."
exit 1
break
fi
done
echo "making dirs"
mkdir orig
mkdir new
echo "attaching"
echo "y" | hdiutil attach Furnace-*-Darwin.dmg -readonly -mount required -mountpoint orig
echo "copying"
cp -v -r orig/Furnace.app new/Furnace.app
echo "synchronizing"
sync
echo "detaching"
hdiutil detach orig
echo "removing orig"
rmdir orig
rm Furnace-*-Darwin.dmg
Expand All @@ -301,6 +266,7 @@ jobs:
rmdir new/Furnace.app/Contents/Resources/bin
fi
echo "copying extra stuff"
cp -v ../LICENSE new/LICENSE.txt
cp -v ../res/releaseReadme/stable-mac.txt new/README
cp -v -r ../demos new/demos
Expand All @@ -310,7 +276,18 @@ jobs:
wget https://tildearrow.org/furnace/doc/latest/manual.pdf
cd ..
hdiutil create -srcfolder new -volname Furnace -format UDZO furnace.dmg
echo "creating new image"
retries=0
while ! hdiutil create -srcfolder new -volname Furnace -format UDZO furnace.dmg; do
echo "TRYING AGAIN..."
retries=$((retries+1))
if [ $retries -gt 5 ]; then
echo "OH NO, WE'VE FAILED..."
exit 1
break
fi
sleep 5
done
mv furnace.dmg ../${{ steps.package-identify.outputs.filename }}
popd
Expand Down Expand Up @@ -356,7 +333,7 @@ jobs:
- name: Upload artifact
if: ${{ github.repository == 'tildearrow/furnace' && github.ref_name == 'master' }}
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v4.3.0
with:
name: ${{ steps.package-identify.outputs.id }}
path: ${{ steps.package-identify.outputs.filename }}
19 changes: 11 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_PROJECT_VERSION_MAJOR 0)
set(CMAKE_PROJECT_VERSION_MINOR 6)
set(CMAKE_PROJECT_VERSION_PATCH 0)
set(CMAKE_PROJECT_VERSION_PATCH 1)

set(BUILD_GUI_DEFAULT ON)
set(USE_SDL2_DEFAULT ON)
Expand Down Expand Up @@ -198,14 +198,14 @@ if (BUILD_GUI AND USE_FREETYPE)
# TODO: FIX FIX FIX FIX FIX
if (SYSTEM_FREETYPE)
if (PKG_CONFIG_FOUND)
pkg_check_modules(FREETYPE freetype>=2.0.0)
pkg_check_modules(FREETYPE freetype2>=2.0.0)
if (FREETYPE_FOUND)
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${FMT_INCLUDE_DIRS})
list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${FMT_CFLAGS_OTHER})
list(APPEND DEPENDENCIES_LIBRARIES ${FMT_LIBRARIES})
list(APPEND DEPENDENCIES_LIBRARY_DIRS ${FMT_LIBRARY_DIRS})
list(APPEND DEPENDENCIES_LINK_OPTIONS ${FMT_LDFLAGS_OTHER})
list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${FMT_LDFLAGS})
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIRS})
list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${FREETYPE_CFLAGS_OTHER})
list(APPEND DEPENDENCIES_LIBRARIES ${FREETYPE_LIBRARIES})
list(APPEND DEPENDENCIES_LIBRARY_DIRS ${FREETYPE_LIBRARY_DIRS})
list(APPEND DEPENDENCIES_LINK_OPTIONS ${FREETYPE_LDFLAGS_OTHER})
list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${FREETYPE_LDFLAGS})
endif()
endif()
if (NOT FREETYPE_FOUND)
Expand Down Expand Up @@ -495,6 +495,8 @@ extern/YMF276-LLE/fmopn2.c
extern/ESFMu/esfm.c
extern/ESFMu/esfm_registers.c

extern/pwrnoise/pwrnoise.c

src/pch.cpp

src/engine/platform/sound/sn76496.cpp
Expand Down Expand Up @@ -703,6 +705,7 @@ src/engine/platform/k053260.cpp
src/engine/platform/ted.cpp
src/engine/platform/c140.cpp
src/engine/platform/esfm.cpp
src/engine/platform/powernoise.cpp
src/engine/platform/pcmdac.cpp
src/engine/platform/dummy.cpp

Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ for other operating systems, you may [build the source](#developer-info).
- YM3812 (OPL2)
- YMF262 (OPL3) with full 4-op support!
- Y8950 (OPL with ADPCM)
- ESS ESFM (like OPL3 but with more features)
- square wave chips:
- AY-3-8910/YM2149(F) used in several computers and game consoles
- Commodore VIC used in the VIC-20
Expand Down Expand Up @@ -86,6 +87,7 @@ for other operating systems, you may [build the source](#developer-info).
- modern/fantasy:
- Commander X16 VERA
- tildearrow Sound Unit
- PowerNoise
- Generic PCM DAC
- mix and match sound chips!
- over 200 ready to use presets from computers, game consoles and arcade boards...
Expand Down
8 changes: 0 additions & 8 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
# to-do

- finish color import improvements (settings refactor)
- new undo stuff
- fix some bugs
- finish auto-clone

once you have done all of this (maybe not the first one), release 0.6.1

# and then

- new oscilloscope renderer - custom code that uses texture and fixes two issues: too many vertices, and broken anti-aliasing
- new pattern renderer - performance improvements
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ android {
}
minSdkVersion 21
targetSdkVersion 26
versionCode 181
versionName "0.6"
versionCode 192
versionName "0.6.1"
externalNativeBuild {
cmake {
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON"
Expand Down
4 changes: 2 additions & 2 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.tildearrow.furnace"
android:versionCode="181"
android:versionName="0.6"
android:versionCode="192"
android:versionName="0.6.1"
android:installLocation="auto">

<!-- OpenGL ES 2.0 -->
Expand Down
Binary file added demos/amiga/trance_dream.fur
Binary file not shown.
Binary file added demos/ay8930/One_Minute_Waltz.fur
Binary file not shown.
Binary file removed demos/ay8930/PlayingOnTheStairs.fur
Binary file not shown.
Binary file added demos/ay8930/Playing_On_The_Stairs.fur
Binary file not shown.
Binary file added demos/ay8930/powerful-sample-generator.fur
Binary file not shown.
Binary file added demos/esfm/AAAA.fur
Binary file not shown.
Binary file added demos/esfm/ALCATRAZ_ALWAYS.fur
Binary file not shown.
Binary file added demos/esfm/CampingJourney.fur
Binary file not shown.
Binary file added demos/esfm/Deadline.fur
Binary file not shown.
Binary file added demos/esfm/Devil_Detective.fur
Binary file not shown.
Binary file added demos/esfm/Drinkin_Coffee_Way_Too_Much.fur
Binary file not shown.
Binary file added demos/esfm/EdgeRunning_2078.fur
Binary file not shown.
Binary file not shown.
Binary file added demos/esfm/I_Cant_Escape_Your_Memory.fur
Binary file not shown.
Binary file added demos/esfm/Just_me_and_my_Brain.fur
Binary file not shown.
Binary file added demos/esfm/Ken_Stage.fur
Binary file not shown.
Binary file added demos/esfm/Magician_Lake_Cover.fur
Binary file not shown.
Binary file added demos/esfm/Napalm-Loader.fur
Binary file not shown.
Binary file added demos/esfm/Perilous059.fur
Binary file not shown.
Binary file added demos/esfm/Poets_I.fur
Binary file not shown.
Binary file added demos/esfm/Redial.fur
Binary file not shown.
Binary file added demos/esfm/SearchPrincess.fur
Binary file not shown.
Binary file added demos/esfm/Second_Start.fur
Binary file not shown.
Binary file added demos/esfm/Strange_Sunset.fur
Binary file not shown.
Binary file added demos/esfm/Tangent_to_a_Segue.fur
Binary file not shown.
Binary file added demos/esfm/TheOneWayFuture.fur
Binary file not shown.
Binary file added demos/esfm/Unconscious_Unravelling.fur
Binary file not shown.
Binary file added demos/esfm/Unknown_Location.fur
Binary file not shown.
Binary file added demos/esfm/WalkInThePark.fur
Binary file not shown.
Binary file added demos/esfm/act_of_fighter.fur
Binary file not shown.
Binary file added demos/esfm/cielos_esfumados.fur
Binary file not shown.
Binary file added demos/esfm/esfm_ins.fur
Binary file not shown.
Binary file added demos/esfm/experiment.fur
Binary file not shown.
Binary file added demos/esfm/flashback.fur
Binary file not shown.
Binary file added demos/esfm/frosty_dusk.fur
Binary file not shown.
Binary file added demos/esfm/haunted_castle.fur
Binary file not shown.
Binary file added demos/esfm/her_wishes.fur
Binary file not shown.
Binary file added demos/esfm/ledstorm.fur
Binary file not shown.
Binary file added demos/esfm/loneguitarist.fur
Binary file not shown.
Binary file added demos/esfm/moon_closedspace.fur
Binary file not shown.
Binary file added demos/esfm/sticker1.fur
Binary file not shown.
Binary file added demos/esfm/synthy.fur
Binary file not shown.
Binary file added demos/esfm/wack.fur
Binary file not shown.
Binary file added demos/esfm/x_evil_soul.fur
Binary file not shown.
Binary file added demos/genesis/Kobito_of_the_Shining_Needle.fur
Binary file not shown.
Binary file added demos/misc/Playground_2xT6W28.fur
Binary file not shown.
Binary file removed demos/misc/RunningOnThePlayground_2xT6W28.fur
Binary file not shown.
Binary file added demos/misc/Someting_I_can_feel_MSM5232.fur
Binary file not shown.
Binary file added demos/misc/T_Six_T6W28.fur
Binary file not shown.
Binary file added demos/msx/Morning_Alarm.fur
Binary file not shown.
Binary file removed demos/msx/WakingUpWhenMorningAlarmRings_OPLL.fur
Binary file not shown.
Binary file added demos/multichip/Chip_Duel_AY-3-8910+SN76489.fur
Binary file not shown.
Binary file added demos/nes/Fur_Nes.fur
Binary file not shown.
Binary file added demos/nes/Future_Re-ference.fur
Binary file not shown.
Binary file added demos/specs2/back_into_adventure.fur
Binary file not shown.
Binary file added demos/specs2/spa.fur
Binary file not shown.
15 changes: 15 additions & 0 deletions doc/2-interface/asset-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,22 @@ right-clicking the Save button brings up a menu with the following options:

right-clicking a sample in the list brings up a menu:
- **make instrument**: creates a new instrument which is set to use the selected sample.
- **make me a drum kit**: allows you to instantly create a drum kit using all the samples in the list. see the next section for more information.
- **duplicate**: makes a copy of the selected sample.
- **replace...**: opens a file dialog to choose a replacement sample.
- **save**: opens a file dialog to choose where to save the sample.
- **delete**: removes the sample.

### make me a drum kit

I have added this option to make it easier for you to create a drum kit.
it puts all the samples into a new instrument with sample map.

after selecting this option, a list of parameters appears:

- **Drum kit mode**: select how to arrange the samples in the sample map.
- **Normal**: put all samples from the starting octave onwards.
- **12 samples per octave**: map the first 12 samples to all octaves, DefleMask-style.
- **Starting octave**: change the octave where the first sample will be at.

following that is a list of viable instrument types. click on one of them to proceed with drum kit creation!
2 changes: 1 addition & 1 deletion doc/2-interface/song-info.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ items in _italic_ don't appear in basic mode and are only available in advanced
- clicking the Tick Rate button switches to a more traditional **Base Tempo** BPM setting.

**Speed**: the number of ticks per row.
- clicking the "Speed" button changes to more complex modes covered in the [grooves] page.
- clicking the "Speed" button changes to more complex modes covered in the [grooves](../8-advanced/grooves.md) page.

_**Virtual Tempo**:_ Simulates any arbitrary tempo without altering the tick rate. it does this by adding or skipping ticks to approximate the tempo. the two numbers represent a ratio applied to the actual tick rate. example:
- set tick rate to 150 BPM (60 Hz) and speed to 6.
Expand Down
2 changes: 1 addition & 1 deletion doc/3-pattern/effects.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ however, effects are continuous, which means you only need to type it once and t
- `E2xy`: **Note slide down.** `x` is the speed, while `y` is how many semitones to slide down.
- ---
- `EAxx`: **Toggle legato.** while on, new notes instantly change the pitch of the currently playing sound instead of starting it over.
- `00xy`: **Arpeggio.** after using this effect the channel will rapidly switch between semitone values of `note`, `note + x` and `note + y`.
- `00xy`: **Arpeggio.** this effect produces a rapid cycle between the current note, the note plus `x` semitones and the note plus `y` semitones.
- `E0xx`: **Set arpeggio speed.** this sets the number of ticks between arpeggio values. default is 1.
- ---
- `04xy`: **Vibrato.** changes pitch to be "wavy" with a sine LFO. `x` is the speed, while `y` is the depth.
Expand Down
16 changes: 7 additions & 9 deletions doc/4-instrument/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@ alternatively, window > instrument editor displays it.

![top of instrument editor](instrument-editor-top.png)

**TODO: add descriptions to buttons in the image. it really needs them.**

- **Instrument Selector**: displays a list of instruments in the song.
- **Open**: open an instrument file.
- **Select**: displays a list of instruments in the song.
- **Load**: open an instrument file.
- **Save**: save current instrument to a file.
- right-click to see additional options, such as saving in DefleMask preset format (.dmp).
- **Name**: changes the instrument name.
Expand Down Expand Up @@ -76,6 +74,7 @@ the following instrument types are available:
- [TED](ted.md) - for use with Commodore Plus/4 and Commodore 16's TED chip.
- [C140](c140.md) - for use with C140 sample chip.
- [C219](c219.md) - for use with C219 sample chip.
- [PowerNoise](powernoise.md) - for use with PowerNoise chip.

## macros

Expand All @@ -93,9 +92,6 @@ each macro has the following parameters:
- **Step Length (ticks)**: determines the number of ticks between macro steps. default is 1.
- **Delay**: delays the macro until this many ticks have elapsed. default is 0.
- the button is highlighted if either of these parameters is set to non-default values.
- release mode: determines how macro release (`===` or `REL` in the pattern) is handled:
- **Active**: jumps to release position on release.
- **Passive**: does not jump to release position. this will result in delay if release position has not been reached yet.

## macro types

Expand All @@ -115,8 +111,6 @@ this is the most basic macro type. when the instrument is played, every value in

![bitmask sequence macro editor](macro-seq-bitmask.png)

**TODO: once again, text in the image. this sucks.**

the Length field allows you to set the number of steps in the sequence.

the sequence view allows you to edit the macro.
Expand Down Expand Up @@ -171,6 +165,10 @@ the sequence can be edited in the text input field at the very bottom. the follo

in bitmask-style macros, the values are added up in binary and converted to decimal.

the release mode parameter determines how macro release (`===` or `REL` in the pattern) is handled:
- **Active**: jumps to release position on release.
- **Passive**: does not jump to release position. this will result in delay if release position has not been reached yet.

### ADSR

![ADSR macro editor](macro-ADSR.png)
Expand Down
Loading

0 comments on commit 3922770

Please sign in to comment.