Commit graph

401 commits

Author SHA1 Message Date
tildearrow
236ab5b3fe QSound: initialize memory to 0
for some reason this fixes some glitches?
2022-03-01 02:38:37 -05:00
cam900
ee013ad7a9 Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b 2022-02-27 06:41:11 +09:00
tildearrow
217e43dab3 fix 2022-02-26 05:04:31 -05:00
tildearrow
1a69794efe remove extension when loading ins from file 2022-02-26 04:49:40 -05:00
cam900
cd4c876c5e Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b
# Conflicts:
#	src/engine/engine.cpp
#	src/engine/playback.cpp
2022-02-25 23:47:28 +09:00
tildearrow
bd96bf484b fix 8-bit samples not loading correctly 2022-02-25 00:31:09 -05:00
tildearrow
35e459d9e5 Neo Geo: implement ADPCM-B 2022-02-25 00:11:27 -05:00
tildearrow
19c4f5559a bring crash fix from 0.5.8 2022-02-24 22:52:20 -05:00
cam900
d831a522a4 Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b
# Conflicts:
#	src/engine/engine.cpp
#	src/engine/platform/ym2610Interface.cpp
2022-02-25 12:20:00 +09:00
tildearrow
f7bd06c4eb yay ADPCM-A and QSound work again! 2022-02-24 16:16:02 -05:00
cam900
1e2d5694b9 Prepare to support YM2610B and with Extended channel 3 mode
Allow 8 bit volume for YM2610 ADPCM-B
Remove sample mode macro in YM2610, it's always enabled and seperated channels.

TODO: ADPCM-B is still not implemented, FM Channel 2 is silenced in extended channel 3 configuration
2022-02-25 01:02:35 +09:00
tildearrow
1e98f0c4a1 sample system rewrite! **PLEASE READ**
this commit mostly rewrites the sample system.
as of now samples can be ADPCM, 8-bit, BRR or 16-bit
or something...

consider this VERY EXPERIMENTAL.
if you find any issues REPORT THEM immediately.

it's nearly 4am...
2022-02-24 03:57:45 -05:00
Ian Karlsson
6472795b01 Update center rate and loop information when loading and saving samples 2022-02-23 14:32:35 +01:00
tildearrow
e4b9a6d1d9 compound system flattening, part 1
as of now compound systems (Genesis and Arcade) are translated to
separate chips.

this improves audio quality and makes things easier.

it also allows you to change the volume of each chip on a Genesis.

also adds SegaPCM system with 16 channels!
2022-02-23 02:52:30 -05:00
tildearrow
a5561f1899 tabs to spaces 2022-02-22 22:13:17 -05:00
Ian Karlsson
b3908216f8 Implement QSound support 2022-02-22 11:36:12 +01:00
tildearrow
7540f12596 don't warn about clipping
too much spam
2022-02-21 23:53:41 -05:00
tildearrow
4db91256b1 fix repeat pattern hanging audio/VGM export 2022-02-21 23:05:41 -05:00
tildearrow
df35b8fb45 add register view
supported chips only.
2022-02-21 22:31:27 -05:00
tildearrow
f815ee9427 don't round frequency
apparently that wasn't too good for some songs that relied on E5xx
2022-02-21 02:33:07 -05:00
tildearrow
57c4e22d70 add support for loading .vgi and .tfi instruments 2022-02-21 01:44:51 -05:00
tildearrow
8e17f20de2 fix deep clone not working at times 2022-02-20 23:07:46 -05:00
tildearrow
18c5867d9c fix playSub strategy
properly handle nested playSubs
fixes #174
2022-02-20 23:03:42 -05:00
tildearrow
fd00b1a815 allow loading 1.0 .dmw 2022-02-20 22:16:43 -05:00
tildearrow
840be64314 split config management 2022-02-18 13:11:04 -05:00
tildearrow
1a95e18f13 split system definition code
engine.cpp is now shy of 2500 lines
2022-02-18 13:04:33 -05:00
tildearrow
650beebe99 split VGM ops code 2022-02-18 12:58:36 -05:00
tildearrow
c39d3898b4 split file ops code 2022-02-18 12:39:45 -05:00
tildearrow
ce2af4303e yay for more compatibility flags
ignore duplicate slides on .dmf
2022-02-18 02:03:31 -05:00
tildearrow
fbed03dd0c fix E1xy/E2xy behaving wrong with arps 2022-02-18 01:27:26 -05:00
tildearrow
eafc3078cf NES: fix high pitch being out of tune 2022-02-17 21:59:48 -05:00
tildearrow
79fe54d4b6 fix some glitches 2022-02-17 03:20:08 -05:00
tildearrow
bacf57bb65 add stop song effect! finally! 2022-02-17 03:15:51 -05:00
tildearrow
810ee33d11 GUI: prepare for drawing prev/next pat content 2022-02-16 16:11:15 -05:00
tildearrow
b0996371b7 suffix with 00 instead of 0 in file export 2022-02-15 21:15:19 -05:00
tildearrow
647f2f96b0 dear tildearrow are you drunk or what? 2022-02-15 17:22:09 -05:00
tildearrow
b24c572632 prevent division by zero, part 1 2022-02-15 15:19:36 -05:00
tildearrow
853ade2416 improve the status bar
issue #39
2022-02-15 01:46:03 -05:00
tildearrow
b9832abbeb license clarification, part 3 2022-02-14 22:12:20 -05:00
tildearrow
b319614fb5 fix channel cut not being reset when changing orde
r
2022-02-14 02:43:56 -05:00
tildearrow
53482105dc add an option to select audio device 2022-02-13 21:42:57 -05:00
tildearrow
49d91818bb add deep clone warnings 2022-02-12 18:02:33 -05:00
tildearrow
27497608fe add deep clone order - UNTESTED 2022-02-12 03:59:05 -05:00
tildearrow
1580e5836b GUI: wire up the code for custom keybinds
still no way to set them up, and four are missing
please be patient
2022-02-11 18:20:39 -05:00
tildearrow
d27dcfecac rename Neo Geo to Neo Geo CD
pave the way for Neo Geo with ADPCM-B
2022-02-10 03:28:20 -05:00
tildearrow
d1e166a34e add a little visual to channel names 2022-02-10 03:15:39 -05:00
tildearrow
62f2f67b9d add two more compatibility flags
for songs that relied upon pre-0.5.5 broken behavior
2022-02-09 22:07:32 -05:00
tildearrow
3d8991cdb8 save compat flags in the file 2022-02-08 16:43:40 -05:00
tildearrow
3cc4add1e3 don't alter instruments in patterns when moving
fixes #150
2022-02-07 23:42:54 -05:00
tildearrow
fbb6c4cb4f add a setting to reset on system prop change
issue #131
2022-02-07 17:24:26 -05:00
tildearrow
7599f99ca0 maybe fix audio backend not changing post-failure 2022-02-06 17:00:01 -05:00
tildearrow
d0457a2e1b VGM export: improvements
- use shorthand command for waiting at 50/60Hz
- don't write stream rate change if DAC is off
2022-02-06 16:47:12 -05:00
tildearrow
28a7348863 add failsafe 2022-02-06 16:29:30 -05:00
tildearrow
127eb1569e dumb clang plugin randomly inserting headers
when i don't want it to
2022-02-06 16:28:04 -05:00
tildearrow
e06e316e10 add two new compatibility flags
proper noise range and duty macro is wave volume
2022-02-06 01:56:50 -05:00
tildearrow
8772439d3e add ability to play by one row 2022-02-06 00:42:07 -05:00
tildearrow
107187a20c GUI: add ability to play from cursor position
Shift-Enter or F7
2022-02-06 00:07:35 -05:00
tildearrow
b0698dbac3 GUI: audio failure resilience 2022-02-05 23:48:56 -05:00
tildearrow
fe47a2ba09 GUI: add audio want/got details 2022-02-05 21:26:24 -05:00
tildearrow
560be4f341 FIX IT 2022-02-05 01:57:24 -05:00
tildearrow
088e49a3f4 implement channel hiding, names and song comment 2022-02-05 01:48:35 -05:00
tildearrow
15d310077d revert name of sound master
it was dual AY8930
2022-02-04 20:33:29 -05:00
tildearrow
a93a9c19f3 add "force mono audio" option and fix flags not be
ing set after a dispatch reset
2022-02-04 17:04:36 -05:00
tildearrow
16f497fcf1 what happened with sample loading 2022-02-04 16:46:56 -05:00
tildearrow
4e1c6d78c2 fix Neo Geo detuning 2022-02-04 16:21:18 -05:00
tildearrow
b57e85134e prepare for end of song effect 2022-02-04 14:43:57 -05:00
tildearrow
29174e97cc ignore centerRate in old version 2022-02-04 03:34:38 -05:00
tildearrow
902febe298 actually implement pitch of C-4 2022-02-04 03:29:40 -05:00
tildearrow
764196c1ad coupé 2022-02-03 18:39:54 -05:00
tildearrow
584b8426ff GUI: improve debug menu 2022-02-03 18:38:57 -05:00
freq-mod
ead65d8c21 revert OPLL system 2022-02-03 14:41:34 -05:00
freq-mod
8e3355ad4a revert OPL3 and FDS
FDS is wave + pitch mod, so that one goes too
2022-02-03 14:41:34 -05:00
freq-mod
6a78b620c3 revert AY systems back 2022-02-03 14:41:34 -05:00
freq-mod
8a4787fbe4 partially revert previous commit
w/r/t feedback
2022-02-03 14:41:34 -05:00
freq-mod
93dfe8f4ac what am I doing 2022-02-03 14:41:34 -05:00
freq-mod
28f14e241e Change misleading name
PC-9801-86 is Ym2608 without ADPCM + stereo DAC, allowing up to 8ch PCM. That isn't what is done here. Idle Japan's speak board (or PC-9801-73?) is a pure YM2608 with ADPCM intact.
2022-02-03 14:41:34 -05:00
freq-mod
5326cb67c5 typo
also omitted one 2610 variant
2022-02-03 14:41:34 -05:00
freq-mod
8a946eb99f changed channel naming a bit
to be more specific
2022-02-03 14:41:34 -05:00
tildearrow
5086bc1097 implement the linear pitch flag 2022-02-03 02:24:11 -05:00
tildearrow
2a15673610 implement loop modality and pitch control flags
issue #113
2022-02-03 00:52:50 -05:00
tildearrow
3379e8b380 prepare for compat flags, piano, comments, etc. 2022-02-03 00:34:48 -05:00
tildearrow
ccfe3bdd97 Genesis: add ability to use ymfm instead of Nuked 2022-02-02 23:08:45 -05:00
tildearrow
da8e4715bd finally fix the build 2022-02-02 18:24:33 -05:00
tildearrow
d691ec6d76 add a chip playground
in debug menu
2022-02-01 18:08:19 -05:00
tildearrow
df97142157 fix improper dir sep when loading sample on Win 2022-02-01 03:20:15 -05:00
tildearrow
ba08d3515f GUI: fix several file dialog bugs
damn it
2022-02-01 02:52:36 -05:00
tildearrow
de931c1d2f did I just make an instrument loader 2022-02-01 01:21:51 -05:00
tildearrow
227fff021e try fixing .dmp loading
what a mess this format was before 1.0
2022-02-01 00:58:00 -05:00
tildearrow
af26ec9faf fix loading some .dmf modules 2022-01-31 16:33:32 -05:00
tildearrow
da8380a6e2 prepare to fix loading old .dmp files 2022-01-31 12:55:51 -05:00
tildearrow
432f440be5 VGM export: fix SN chip mode not being set 2022-01-30 23:51:35 -05:00
tildearrow
ff5357de10 VGM export: fix playback speed being wrong
if audio rate wasn't 44100Hz
2022-01-30 23:07:09 -05:00
tildearrow
fe0dc38f37 add VGM export warnings 2022-01-30 17:18:10 -05:00
tildearrow
5b2f776718 which arcade 2022-01-30 13:26:51 -05:00
tildearrow
9b213223cc VGM export: respect clock rate flags 2022-01-30 13:07:23 -05:00
tildearrow
17ca6402d3 add instrument read error messages 2022-01-29 04:25:55 -05:00
tildearrow
54a84c2ce1 preliminary .dmp loading
preliminary I said
some things don't load
2022-01-29 03:21:47 -05:00
tildearrow
5dafd10fc7 add several warning dialogs 2022-01-29 01:22:32 -05:00
tildearrow
e9accf16db one more change to the format 2022-01-29 00:22:12 -05:00
tildearrow
629d229bc1 i will finish this later today 2022-01-28 18:12:56 -05:00
tildearrow
bfed0b3209 change setPAL to setFlags 2022-01-28 12:59:53 -05:00
tildearrow
0567a3f71b GUI: add chip names option 2022-01-28 03:17:35 -05:00
tildearrow
ec66b7a21b add song tuning
soon: system clock settings
2022-01-28 00:55:51 -05:00
tildearrow
0071894471 GUI: add a preliminary oscilloscope 2022-01-27 17:49:00 -05:00
tildearrow
b812fc4041 prepare for sample C-4 freq
issue #70
2022-01-27 16:52:06 -05:00
tildearrow
cd9b2b675e VGM export: dual chip for real 2022-01-27 15:47:57 -05:00
tildearrow
60a1e6f395 VGM export: kind of dual chip support 2022-01-27 13:10:51 -05:00
tildearrow
c577eeafac VGM export: implement sys selection/loop options
the final thing to do is dual chip support, but I wanna get 0.5
out already
2022-01-27 02:46:40 -05:00
tildearrow
c47851e7c7 GUI: highlight loop 2022-01-27 01:04:26 -05:00
tildearrow
0e633ea69b GUI: add a debug window 2022-01-27 00:29:16 -05:00
tildearrow
f86838df99 no longer shift arpeggio macro by 12 2022-01-26 15:53:52 -05:00
tildearrow
c822532b54 several improvements to new macro UI
now it is fully usable
well, almost
2022-01-26 03:49:46 -05:00
tildearrow
496501803f GUI: add advanced VGM export menu
does NOT work yet!
2022-01-26 00:26:15 -05:00
tildearrow
b2d2da1f1c correct names for Genesis and SMS 2022-01-25 22:29:00 -05:00
tildearrow
8bcab6e139 VGM export: write resets and GD3 tag
may be non-standard compliant (yet)
also it crashes foobar2000 for some reason but this will be fixed
2022-01-25 18:46:27 -05:00
tildearrow
3672ceccb7 VGM export: write loop point
proper channel reset after loop pending!!!
2022-01-25 16:44:21 -05:00
tildearrow
503a79c904 what? 2022-01-25 15:51:53 -05:00
tildearrow
61a1932bce add walkSong 2022-01-25 15:06:29 -05:00
tildearrow
6d54023b70 VGM export: report number of total writes 2022-01-25 04:43:56 -05:00
tildearrow
b527fc06b2 try to unglitch the sample loops again
this time it works better but it slightly moves the song clock...
will look at it when i wake up
2022-01-25 03:34:11 -05:00
tildearrow
e8163b71e2 try to unglitch the sample loops
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2022-01-25 03:24:32 -05:00
tildearrow
0c8ec07633 VGM export: kind of implement sample loop
for PCE, NES and Genesis
kinda glitchy
2022-01-25 03:12:53 -05:00
tildearrow
b6c536c907 VGM export: fix PC Engine samples 2022-01-25 02:38:46 -05:00
tildearrow
511b6ba0be VGM export: PCE samples (kinda) 2022-01-24 18:04:09 -05:00
tildearrow
cda191afee VGM export: NES samples 2022-01-24 17:48:58 -05:00
tildearrow
9d2032d627 VGM export: Arcade sample looping 2022-01-24 17:13:47 -05:00
tildearrow
50a0f1f360 VGM export: fix up SegaPCM
turns out it is capable of arbitrary loop position!
2022-01-24 15:23:42 -05:00
tildearrow
993ab767b6 ADPCM memory safety 2022-01-24 12:47:18 -05:00
tildearrow
e221bcb023 VGM export: bake SegaPCM samples
after this, the following has to be done:
- PCM playback
- PCM playback on PCE and NES (let's hope this is possible)
2022-01-24 12:39:05 -05:00
tildearrow
066f0f074f fix clicking 2022-01-24 02:55:01 -05:00
tildearrow
1b4081a044 VGM export: implement ADPCM storage
possibly first open-source Neo Geo tracker that exports to .vgm
2022-01-24 02:52:45 -05:00
tildearrow
a3a2e3ff47 add more chips to VGM export
missing:
- Sega PCM
- Neo Geo ADPCM
2022-01-24 02:09:03 -05:00
tildearrow
0ab0ebdddb GUI: actually add the export VGM option 2022-01-24 01:10:38 -05:00
tildearrow
858d5343b8 earliest VGM export!
only supports single-chip Genesis for now
the other systems will be added shortly
2022-01-24 01:01:08 -05:00
tildearrow
35ee06d6cf fix ECxx effect
fixes #57
2022-01-23 22:00:46 -05:00
tildearrow
9fe0efd63a VGM export skeleton DOES NOT WORK
VGM export not there yet. please don't use it.
2022-01-23 21:50:45 -05:00
tildearrow
04f0c6a7cb prepare the skeleton for VGM export 2022-01-23 13:19:06 -05:00
tildearrow
e79a1bd64d bring command-line audio export back! 2022-01-22 23:50:49 -05:00
tildearrow
8b79bf78a9 add Furnace instrument loading
TODO: .dmp loading
2022-01-22 00:14:48 -05:00
tildearrow
724b1cd1a8 move more wavetable loading logic
now it's safer
2022-01-21 18:17:05 -05:00
tildearrow
186e491c59 allow loading wavetables 2022-01-21 17:59:48 -05:00
tildearrow
46fd774f30 allow sample preview via keyboard 2022-01-20 16:51:31 -05:00
tildearrow
e23df0f09e move config file to proper directory on macOS 2022-01-20 16:27:11 -05:00
tildearrow
751f6d025a prepare to add effect descriptions 2022-01-20 13:48:20 -05:00
tildearrow
8ab97a959c add ps_fopen to properly handle fopen on Windows
fixes #22
2022-01-20 05:04:03 -05:00
tildearrow
6db9d312ec fix crash when previewing size 0 waves 2022-01-20 00:43:08 -05:00
tildearrow
85dd6c3579 add ability to preview wavetables
issue #16
2022-01-20 00:07:53 -05:00
tildearrow
18df843864 reduce clicking on play/loop 2022-01-19 21:04:51 -05:00
tildearrow
0e346f5d73 temporarily reduce channel limit to 63
thanks ImGui
2022-01-19 18:24:37 -05:00
tildearrow
62a499644f add wavetable saving 2022-01-19 05:10:06 -05:00