Commit graph

748 commits

Author SHA1 Message Date
tildearrow
2a63baf26c dev244 - Namco 163: enable wave pos latch by defau 2026-01-18 19:58:31 -05:00
tildearrow
2da316b346 dev243 - N163: add convenience effects - READ
two effects for convenience and .ftm import:

- 1Axx: set wave load and play pos (equivalent to 11xx 15xx)
- 1Bxx: set wave load and play length (equivalent to 12xx 16xx)

*** Developer Information ***

a small change to the command stream format has been made. the commands for N163 loadpos/loadlen have been retired, and the commands for N163 wave position/length now take in 2 bytes instead of 1.
the first byte is the position/length.
the second byte is a bitset. if bit 0 is set, update playback state. if bit 1 is set, update load state.
2026-01-18 17:30:25 -05:00
tildearrow
7490afb810 update copyright year 2026-01-14 17:45:21 -05:00
tildearrow
a862a8ae59 dev242 - OPL4: add options for default FM/PCM leve
issue #2711
2026-01-13 19:08:05 -05:00
tildearrow
6473b5bd12 dev241 - bump version number 2025-11-23 05:14:50 -05:00
tildearrow
47e2910498 giga-refactor, part 20
convert compat SegaPCM to normal SegaPCM with 5 channels
convert Neo Geo CD to YM2610
2025-11-21 04:58:56 -05:00
tildearrow
9b35ca77c5 giga-refactor, part 14 - READ
a new way to define chip channels has been introduced, replacing the old one.
it looks cleaner and is more flexible (even supporting dynamic channel count).

it works by defining a function in the chip definition, which returns a DivChanDef with channel information (name, short name, type and instrument type(s)).
alternatively, a list can be provided in the DivChanDefFunc() constructor, in the event channels differ greatly and/or the number of channels is small.

some helper templates, such as stockChanDef and simpleChanDef also exist, which automatically map channel names and types regardless of count.
2025-11-17 19:38:45 -05:00
tildearrow
90a9a86e09 giga-refactor, part 9
new format saving
compatibility flags now part of own struct
2025-11-16 01:41:17 -05:00
tildearrow
a1bca68e4a asgfdlhjkashdjfl 2025-11-15 03:00:40 -05:00
tildearrow
68768004b0 giga-refactor, part 4
add minimum and maximum channel count properties to DivSysDef
2025-11-12 16:41:51 -05:00
tildearrow
a654d33df2 giga-refactor, part 1 2025-11-12 00:39:28 -05:00
tildearrow
2f25acd017 move asset dir functions to another file
and get them out of the engine
2025-11-11 18:33:23 -05:00
tildearrow
20dab0b08b prepare stuff 2025-11-11 02:53:58 -05:00
tildearrow
b8db5b4a1a dev239 - Merge branch 'noLegacySample' 2025-11-10 04:44:00 -05:00
tildearrow
9e8c97cc6f heuristic for song length determination
song length calculation of lorge.fur now takes 18ms (from ~1 hour)
2025-11-09 20:42:38 -05:00
tildearrow
0f5455831a total extinction of legacy sample mode, part 5
partially working converter
2025-11-09 05:23:32 -05:00
tildearrow
416148bd62 total extinction of legacy sample mode, part 1 2025-11-08 14:37:51 -05:00
tildearrow
5b145b7121 multiple instrument playback, part 1
not implemented for MIDI yet
2025-10-31 19:36:13 -05:00
tildearrow
08a27be76f GUI: chord input
looks like a horrid hack, but it works
I'll improve some of the code at some point
2025-10-31 05:03:58 -05:00
tildearrow
3516245d2e rename totalTicksOff to totalTimeDrift 2025-10-30 20:40:22 -05:00
tildearrow
5ff81aef33 some time refactors
no more weird totalTicks name
code looks better
2025-10-30 20:35:30 -05:00
tildearrow
319da2d391 file player cue point and loop tracking
no loop trail yet
2025-10-30 04:07:27 -05:00
tildearrow
cb220d41ec DivSongTimestamps, part 8
now remove walkSong()
2025-10-29 19:39:53 -05:00
tildearrow
a49306b4bd more reference player work 2025-10-29 19:25:08 -05:00
tildearrow
c1175bcc35 DivSongTimestamps, part 5
deprecate walkSong and remove findSongLength
2025-10-29 04:21:31 -05:00
tildearrow
8c1c338e91 DivSongTimestamps, part 1
this is actually a refactor
it will replace walkSong and the other function and fix bugs in the process
2025-10-28 21:07:21 -05:00
tildearrow
d3c85ae748 prepare for DivSongTimestamps
this will replace walkSong and findSongLength while
offering more features
2025-10-28 05:31:50 -05:00
tildearrow
394c6c35aa earliest implementation of sync
does not loop correctly
2025-10-27 19:34:21 -05:00
tildearrow
f77aafb44d reference player prototype
poor performance
no playback sync yet
2025-10-27 05:15:47 -05:00
tildearrow
99c6cbffa6 ASIO backend, part 8
add control panel button
last commit unless it doesn't work somewhere
2025-10-25 21:23:50 -05:00
tildearrow
db2f368813 ASIO backend, part 6
add support for handling device resets
this will be extended to the SDL and PortAudio backends soon
2025-10-25 18:40:02 -05:00
tildearrow
f5fd8102c7 ASIO backend, part 2
half-working:
- crashes on exit
- doesn't work on launch (must go to settings > audio and click OK)
2025-10-25 04:30:23 -05:00
tildearrow
22eb29cf6c remove 32-bit int option 2025-10-24 15:02:39 -05:00
tildearrow
ffb89ece04 a couple fixes
- fix export targets of mpg123
- initialize wavFormat
- fix format string localization
- fix certain settings being visible in per-chip export when they shouldn't
2025-10-24 04:04:45 -05:00
Eknous-P
ad4572be43 formats combo, more format for wav export 2025-10-24 11:19:38 +04:00
tildearrow
1bf5e8baaa POORLY WORKING Opus export 2025-10-22 20:57:38 -05:00
tildearrow
d2f7c49aa4 remove unused globalPitch variable 2025-10-22 14:25:03 -05:00
tildearrow
29929beeac remove partial pitch linearity
the hacky mode is no more
2025-10-22 14:00:52 -05:00
tildearrow
ab2f2a0a59 Merge branch 'master' into newMixer 2025-10-21 18:05:00 -05:00
tildearrow
6569477706 dev236 - fix OPM E5xx range
when loading older files or DefleMask modules, E5xx effects will be
converted to the new range (previously it was 40-C0).
2025-10-21 03:12:45 -05:00
Eknous-P
678a095822 Merge branch 'master' into newMixer 2025-10-20 16:43:27 +04:00
tildearrow
03aa58b1e1 comment the playback code 2025-10-18 21:42:57 -05:00
tildearrow
626120da8c pattern data refactor, part 9
fix MOD/S3M/XM/IT import:
- MOD was off by one octave
- S3M was off by a couple octaves
- several effects went missing in S3M/XM/IT
2025-10-17 20:58:01 -05:00
tildearrow
d4ecf4045b pattern data refactor, part 1
this first stage changes the way notes are encoded
instead of note/octave, it is just note
2025-10-14 05:07:35 -05:00
Eknous-P
2108cffec2 mixer: per-chp peak meters, fix almost every ui issue:
- fix wrong verticaltext clipping
- fix verticaltext overflow centering
- add hscroll to mixer
2025-10-10 19:36:02 +04:00
tildearrow
1f6f7f961e dev234 - extra config paranoia
featuring config start/end markers to ensure the config is complete.

necessary due to a problem which results in Furnace not writing the
entire config in time on Android sometimes.
best to fall back to the previous config than a total sudden reset...

issue #1825
2025-10-06 12:31:56 -05:00
yohannd1
1099c79ec8 channel drag copy: initial impl 2025-10-04 04:05:06 -05:00
cam900
1b712e03ee Add notifySampleChanged in dispatch and engine:
This method/variables are for notify sample is changed/altered/added/removed.  can be called together with updateSampleTex for sample update.

multipcm: Fix possible desync with instrument and sample parameter

opl4: Split sample table render and sample data render, Add notifySampleChange for refresh sample parameters
2025-10-01 12:31:39 +02:00
M374LX
d4470aa42b Start implementing EIF instrument support 2025-09-29 05:07:42 -05:00
tildearrow
98030de8c7 dev233 - breaking the limit, part 1
now up to 32768 wavetables and 32768 samples

this is the first part and does not implement the new sample limit correctly
I have to adapt every dispatch to the new limit... see you in the next part

the format version had to be bumped because the WL and SL .fui features were limited to 256 entries
there are new LW and LS blocks with more space
howwver there's a new issue... we can have a feature larger than 65536, which is a limit imposed by the feature header :<
this will be addressed though
2025-07-26 18:48:23 -05:00