Commit Graph

265 Commits

Author SHA1 Message Date
tildearrow 0b7d27dc29 YM2612: add reverse sample playback 2022-05-27 02:47:44 -05:00
cam900 cbf20c6320 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (58 commits)
  SMS: early Nuked-PSG modding
  SMS: add modified Nuked-PSG core
  build release and don't strip
  strip MinGW builds
  FDS: a bit more
  FDS: set a post-amp value
  FDS: fix NSFplay core low pass filter precision
  fix .dmf saving
  fix compilation on GCC 12
  Fix multithreading on CI
  Lynx: why did I not commit this
  Lynx: more sample improvements
  Lynx: sample improvements
  Lynx: add sample support!
  GUI: fix wavetable list oversight
  WaveSynth: fix phase modulation - again
  GUI: fix possible wave editor crash
  WaveSynth: fix phase modulation
  Lynx: add phase reset macro
  fix another fucking IGFD crash bug
  ...

# Conflicts:
#	src/gui/insEdit.cpp
#	src/gui/presets.cpp
2022-05-27 13:01:06 +09:00
cam900 17881837ab Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (64 commits)
  finish wave synth!
  update contributing guidelines
  Namco WSG: make non-linear slides faster
  wave synth work
  SoundUnit: fix order of filter bits
  GUI: add Namco arcade presets
  implement some dual wave synth effects
  Y8950: fix ADPCM VGM export
  Namco WSG: finish it up
  Namco WSG: 8 channel WSG (CUS30) now works
  Namco WSG: muting
  Namco WSG: 8 channel WSG (15xx) now works
  Namco WSG: 3 channel WSG now works
  YM2612: change key on/off strategy
  GUI: fix scrollbars not working
  Please enter the commit message for your changes.
  shhhhhhhhhhhh
  update to-do list
  Whoops
  it doesn't work (yet)
  ...

# Conflicts:
#	src/engine/dispatch.h
#	src/engine/platform/su.cpp
#	src/engine/playback.cpp
#	src/engine/sample.cpp
#	src/engine/sample.h
#	src/engine/song.h
#	src/engine/vgmOps.cpp
#	src/gui/presets.cpp
2022-05-25 00:52:00 +09:00
tildearrow 2fa51e482a OPN(A/B/2/B-B): fix absolutely everything 2022-05-22 23:47:41 -05:00
tildearrow 82eaa45f5d increase range of relative pitch macro
-32768 to 32767 should be enough
2022-05-22 22:47:40 -05:00
tildearrow 393d1c018d dev97 - add old octave boundary compat flag 2022-05-22 13:25:59 -05:00
tildearrow b40c95013a fix phase reset in FM chips after note off 2022-05-22 04:30:56 -05:00
tildearrow a9f9d6144a YM2612: change key on/off strategy 2022-05-20 23:54:19 -05:00
Natt Akuma b7a6bf5a0b Add RF5C68 and RF5C164 support 2022-05-21 01:45:26 +07:00
tildearrow 0ef0296b7d fix non-linear pitch 2022-05-19 23:18:18 -05:00
cam900 028adf2c8e Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (70 commits)
  whoops
  GUI: AY8930 credits
  GUI: fix inability to close subsongs
  BANK
  OPN: wire up ExtCh system
  fix build failure
  dev95 - multiple songs in a single file (READ)
  DO NOT USE - THIS FAILS - WORK IN PROGRESS
  enforce asset limits
  old .dmf loading improvements
  add AICA and YMZ ADPCM formats
  allocate ID for YMZ280B
  harden .fur file saver
  Fix AY VGM output, Fix presets
  preparations for UI improvements
  GUI: add more presets
  prepare for ExtCh OPN/OPNA
  GUI: clarify that lock layout doesn't work yet
  GUI: remember last state of order edit mode
  GUI: store edit/followOrders/followPattern state
  ...

# Conflicts:
#	src/engine/fileOps.cpp
#	src/engine/platform/ym2610.cpp
#	src/engine/platform/ym2610b.cpp
#	src/engine/sample.cpp
#	src/engine/sample.h
#	src/engine/sysDef.cpp
#	src/gui/doAction.cpp
#	src/gui/sysConf.cpp
2022-05-18 03:09:55 +09:00
cam900 2a19834e14 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  full linear pitch is now the default
  add a full linear pitch mode, part 7
  X1-010: implement linear pitch (part 6)
  VERA: implement full linear pitch (part 5)
  YM2610(B): implement full linear pitch (part 4)
  add a full linear pitch mode, part 3
  YM2612: implement full linear pitch (part 2)
  update readme
  re-enable warnings are errors on MSVC
  YM2612: early full linear pitch experiment
  GUI: window movement only by clicking on title bar
  Fix GCC errors 2
  Fix GCC errors
  Remove SCC from TODO.md
  SCC has no config flags currently
  Add SCC and SCC+ support

# Conflicts:
#	CMakeLists.txt
#	src/engine/dispatchContainer.cpp
#	src/gui/guiConst.cpp
2022-05-16 00:37:07 +09:00
tildearrow 0a0ddfa661 partially bring up sample map 2022-05-13 23:04:40 -05:00
tildearrow f5dbc37902 YM2612: implement full linear pitch (part 2) 2022-05-10 23:17:40 -05:00
tildearrow aad5d818f2 YM2612: early full linear pitch experiment
u n t e s t e d
2022-05-10 16:22:40 -05:00
cam900 54e78699a7 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  dev94 - add a full linear pitch mode, part 1
  YM2610(B): use f-num/block baseFreq calculation
  GUI: remove insLoadAlwaysReplace setting
  GUI: right click menu for open instrument
  GUI: add a threshold for macro right click
  OPZ: remove debug printf
  GUI: add macro right click menu
  GUI: prepare for macro right click menu
  update gitignore
  add something
  prepare for something
  did i fix macOS build?
  GUI: macro edit improvements
2022-05-11 00:55:03 +09:00
cam900 4efa711a2b Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (44 commits)
  GUI: now add ability to load VMEM
  Update sysDef.cpp
  GUI: add an option for it
  add preliminary TX81Z SysEx response
  OPL: drum volume
  OPL: implement hard reset
  GUI: add icon size setting
  GUI: macro UI refactor, part 4
  Fix WIN32 define timing in IGFD
  Fix outdated calling convention in SAASound (maybe fix MinGW)
  GUI: macro UI refactor, part 3
  GUI: macro UI refactor, part 2
  Masochism Volatile Compiler
  GUI: is the macro UI back yet
  OPL: fix 4-op muting (I think)
  GUI: macro UI refactor, part 1 - PLEASE READ
  GUI: remove classic macro view
  Maybe just enforce for C++
  Forbid standard extensions
  .ftm loading progress (incomplete, not working)
  ...

# Conflicts:
#	src/engine/instrument.h
#	src/gui/insEdit.cpp

Transwave Checkpoint
2022-05-11 00:16:20 +09:00
tildearrow 5e14177e4e YM2610(B): use f-num/block baseFreq calculation
also allow for different octave boundary f-nums depending on chip clock
2022-05-10 02:22:08 -05:00
tildearrow 6e7b4d7e7f the final part of extra FM effects 2022-05-04 17:39:22 -05:00
tildearrow 467036df2a implement extra FM effects (OPN, OPM and OPZ)
issue #38
2022-05-04 14:09:43 -05:00
cam900 329048bf6c Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  Clang you are so arrogant
  ok so screw you
  let's hope this works
  attempt to fix CI
  per-channel oscilloscope, part 8
  per-channel oscilloscope, part 7
  per-channel oscilloscope, part 6
  per-channel oscilloscope, part 5
  but PCE supports samples!
  per-channel oscilloscope, part 4
  YM2612: fix Furnace DAC mode glitching slides
  per-channel oscilloscope, part 3
  GUI: add missing actions to settings
  per-channel oscilloscope, part 2
  Revert PC speaker presets
  Have host sound chip appear before expansions
2022-05-01 19:59:03 +09:00
tildearrow 415e490025 per-channel oscilloscope, part 6
YM2612 and OPM (ymfm)!
2022-05-01 03:12:32 -05:00
tildearrow e1fd16637c per-channel oscilloscope, part 4
OPM, OPN2, OPLL and SN
plus hide unimplemented channels
2022-04-30 22:59:26 -05:00
tildearrow ddcd486c61 YM2612: fix Furnace DAC mode glitching slides 2022-04-30 20:52:48 -05:00
cam900 5414213710 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  maybe uninitialized
  GUI: prepare for a per-channel oscilloscope?
  GUI: add backdrop if system file picker is open
  GUI: add ability to customize startup system
  GUI: finally implement "don't scroll when moving c ursor" setting
  new panning effects (80/81/82)
  GUI: fix sample paste crash
  GUI: implement sample scroll with mouse wheel
  sysDef oopsie

# Conflicts:
#	src/gui/guiConst.cpp
2022-05-01 00:25:21 +09:00
tildearrow 2e8634626d new panning effects (80/81/82) 2022-04-29 23:41:14 -05:00
cam900 cdb3a51766 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  implement channel swapping
  implement relative pitch macro mode
  prepare for relative pitch macro

# Conflicts:
#	src/gui/insEdit.cpp
2022-04-28 23:30:50 +09:00
cam900 3956b2cd30 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  dev90 - linear pitch macro option
  dev89 - C64: add test/gate macro
  YMU759: update system definition
  more changes to autoNoteOn
  SoundUnit: ring modulation
  GUI: improve the maximize auto-detection a bit
  GUI: possibly remember maximized state
  NES: fix audio resolution being too low
  update to-do list
  SoundUnit: more stuff
  SoundUnit: max cutoff 16383
  effectRows -> effectCols
  GUI: rename Amiga/Sample to Sample
  This is not a sample properties table
  Define the compact wave editor
  Menu option, settings file

# Conflicts:
#	src/gui/insEdit.cpp
2022-04-28 16:05:01 +09:00
tildearrow d211170e86 implement relative pitch macro mode 2022-04-28 01:31:16 -05:00
tildearrow 66f5b2117f dev90 - linear pitch macro option 2022-04-28 00:26:21 -05:00
cam900 97d2bddf1f Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
# Conflicts:
#	src/gui/insEdit.cpp
#	src/gui/sampleEdit.cpp
2022-04-26 12:54:11 +09:00
cam900 49a41ff862 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (77 commits)
  GUI: use pattern font for input latch
  GUI: partially implement note input latch UI
  GUI: transpose value does not transpose effect ID
  GUI: prepare for note input latch UI
  GUI: min ins selector width fix
  GUI: separate operation masks
  GUI: add missing FDS preset
  GUI: prepare for separate operation mask
  GUI: "none" instrument should not remove inscolumn
  GUI: fix ins 0 being inserted on blank song
  GUI: add a "none" option to instrument list
  update to-do list
  GUI: add "absorb" instrument input mode
  use good default instrument when adding ins
  better default instrument for OPL/OPLL
  GUI: fix selection being visible in dummy row area
  Further fix looped sample preview
  GUI: fix about screen in power saving mode
  VRC6: saw volume 63
  GUI: add an effect list window
  ...

# Conflicts:
#	src/engine/platform/amiga.cpp
#	src/engine/vgmOps.cpp
#	src/gui/dataList.cpp
#	src/gui/guiConst.cpp
#	src/gui/insEdit.cpp
#	src/gui/sampleEdit.cpp
2022-04-26 12:04:23 +09:00
tildearrow 1b97d3912b YM2612: hopefully the final pitch slide fix 2022-04-25 11:59:02 -05:00
tildearrow bcade6931a YM2612: allow for DAC rate higher than 32KHz
issue #391
2022-04-25 01:42:26 -05:00
tildearrow 832df58929 YM2612: fix several sample bugs 2022-04-25 01:24:42 -05:00
tildearrow 52e35fdf04 huh? TODO: fix this 2022-04-24 18:17:05 -05:00
tildearrow dd9bb8327a and this finally does it
the last thing to do is a compatibility flag
2022-04-23 18:02:43 -05:00
tildearrow dd80cb8b55 what the heck 2022-04-22 17:42:42 -05:00
tildearrow 943e013cb4 YM2612: new pitch slide formula
finally nailed it (almost)
2022-04-22 16:46:24 -05:00
tildearrow 8db53faf72 new FM frequency calculation experiments 2022-04-22 04:23:52 -05:00
tildearrow 79fa8f1d02 better default instrument for OPL/OPLL
no longer silence
2022-04-21 02:24:06 -05:00
cam900 29ea6dc360 Partially ES5506 support (not working yet!)
Add sample related enums
Add support for backward/pingpong loop, loop end position
Structize Notemap in sample instrument
2022-04-21 01:52:37 +09:00
tildearrow fc8a130c71 implement panning macro
except for QSound
2022-04-17 14:15:57 -05:00
tildearrow b4ac5c7e6a implement pitch macro 2022-04-16 01:39:40 -05:00
tildearrow fd3d57b1cb even more improvements to low-latency mode 2022-04-15 15:01:11 -05:00
tildearrow 96715ed88c add experimental low-latency mode
do not use (yet)!
2022-04-15 05:37:23 -05:00
tildearrow d47a59f5f0 implement pitch macro
TODO: test!
2022-04-15 03:37:16 -05:00
tildearrow c743a9e96a implement phase reset macro on supported systems 2022-04-15 03:16:14 -05:00
tildearrow a530934671 fix retrigger issue in sample instruments 2022-04-15 01:26:44 -05:00
cam900 68cf969600 Merge remote-tracking branch 'upstream/master' into macro 2022-04-10 16:34:23 +09:00
tildearrow f42855f170 add 30xx effect to hard reset envelope
currently only for 2612!
2022-04-10 02:11:36 -05:00
cam900 d3e5efe834 Prepare for macro refactoring 2022-04-10 14:01:55 +09:00
tildearrow a43034f559 OPN: fix portaPause not resetting on new note 2022-03-29 23:58:50 -05:00
tildearrow 5dac609d92 Genesis: better DAC write algorithm
only write DAC if there aren't too many queued writes
2022-03-27 01:47:27 -05:00
tildearrow 322981b021 maybe fix possible crash regarding smp loop points 2022-03-21 21:26:36 -05:00
tildearrow 67d516fcee Genesis: prioritize DAC writes 2022-03-14 01:38:11 -05:00
tildearrow 716298c49c Genesis: now fix off not working on channel 6 2022-03-11 22:41:04 -05:00
tildearrow 2a0aa19b2b fix broken DAC mode
adds new compat flag
2022-03-11 22:11:33 -05:00
tildearrow 3b8388d90c YM2151/2610/2612/Game Boy: fix panning - UNTESTED 2022-03-06 14:39:20 -05:00
tildearrow 5816f01c07 Genesis: PSG clean-up
since genesis is now split into YM2612 + SN, the "psg" inside
DivPlatformGenesis becomes useless.
2022-03-02 18:25:17 -05:00
tildearrow 19c4f5559a bring crash fix from 0.5.8 2022-02-24 22:52:20 -05: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
tildearrow df35b8fb45 add register view
supported chips only.
2022-02-21 22:31:27 -05:00
tildearrow e697c055b6 replay keyOn in active channels during forceIns
fixes an issue when playing orders
2022-02-20 21:39:14 -05:00
tildearrow 36eaea0fa7 OPN: apply max freq limit 2022-02-17 22:07:20 -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 7c80a88bbf GUI: fix debug menu a bit 2022-02-13 15:03:07 -05:00
tildearrow 6bcd3df691 oopsie 2022-02-12 21:19:38 -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 788ccfb334 unscrew alg + volume 2022-02-09 12:43:27 -05:00
tildearrow bf537881ce possibly implement envelope release points
no way to set them yet tho other than the MML string
2022-02-08 13:11:04 -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 cb430fc169 Genesis: fix bus overload when using ymfm core 2022-02-05 04:31:20 -05:00
tildearrow 6b040084e0 Genesis: add alternate clock speed 2022-02-04 21:35:24 -05:00
tildearrow 902febe298 actually implement pitch of C-4 2022-02-04 03:29:40 -05:00
tildearrow c682c921a1 fix compatible-style retrigger 2022-02-03 15:43:41 -05:00
tildearrow 5086bc1097 implement the linear pitch flag 2022-02-03 02:24:11 -05:00
tildearrow ccfe3bdd97 Genesis: add ability to use ymfm instead of Nuked 2022-02-02 23:08:45 -05:00
tildearrow 545f3ffdf4 Genesis: add DAC distortion flag 2022-02-02 03:06:30 -05:00
tildearrow d691ec6d76 add a chip playground
in debug menu
2022-02-01 18:08:19 -05:00
tildearrow f29d4bce1b implement 11xx effect on FM platforms
please no ch 3
2022-02-01 15:12:06 -05:00
tildearrow 4f5d37d415 VGM export: fix Genesis samples wrongly pitched 2022-02-01 03:23:29 -05:00
tildearrow bf9eb8b0a4 fix two possible pitch slide regressions
now let's fix blue crow
2022-01-30 15:55:31 -05:00
tildearrow 822d542350 limit volume macro to system maximum
fixes #71
2022-01-30 12:31:50 -05:00
tildearrow b6da7871d4 make the flags option actually work 2022-01-29 00:20:27 -05:00
tildearrow bfed0b3209 change setPAL to setFlags 2022-01-28 12:59:53 -05:00
tildearrow ec66b7a21b add song tuning
soon: system clock settings
2022-01-28 00:55:51 -05:00
tildearrow 5eb974456d Arcade: implement FM macros 2022-01-27 02:17:09 -05:00
tildearrow 0e633ea69b GUI: add a debug window 2022-01-27 00:29:16 -05:00
tildearrow 1347d16da4 Genesis: fully implement volume macro 2022-01-26 18:03:08 -05:00
tildearrow f86838df99 no longer shift arpeggio macro by 12 2022-01-26 15:53:52 -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 d945e5299a Merge commit 'bd8c06bbb786df086d478e1574c6fe11ee6651b6' 2022-01-24 15:53:02 -05:00
tildearrow bd8c06bbb7 prevent crash when playing empty sample
fixes #62
2022-01-24 15:47:39 -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 524f8c312e Genesis: implement arp macros 2022-01-23 15:55:12 -05:00
tildearrow 45d9bef2a8 Genesis: restore LFO value when changing order 2022-01-23 15:15:46 -05:00
tildearrow cd2854d027 it works 2022-01-23 15:12:00 -05:00
tildearrow b39b1c0a25 Genesis: implement FM macros (partial, untested) 2022-01-23 13:19:19 -05:00
tildearrow d62b111c78 Genesis: separate channel state from instrument
paves way for FM macros
with this change, extended channel 3 mode breaks! do not use
until I diagnose the problem.
2022-01-22 17:43:57 -05:00
tildearrow 371c23a7ee Genesis: fix sample desync when muting DAC channel 2022-01-22 02:36:58 -05:00
tildearrow 05bbfaced2 get rid of a debug message 2022-01-20 16:41:18 -05:00
tildearrow 917c9cf2e3 Genesis: allow sample preview 2022-01-20 16:40:18 -05:00
tildearrow 0f28ae0fee implement Furnace-style PCM on Arcade/Gen/NES/PCE 2022-01-20 16:09:05 -05:00
tildearrow 4ee17d35cd implement sample loop on the rest of systems 2022-01-20 02:46:28 -05:00
tildearrow f98662d329 slide accuracy fixes 2022-01-19 01:27:32 -05:00
tildearrow e87239f8ce fix retrigger implementation
no longer broken
2022-01-19 00:01:34 -05:00
tildearrow 6d9f5db6a4 add notifyInsChange
see issue #8
2022-01-17 23:59:52 -05:00
tildearrow ce027d99f6 force insChanged on note input
partially solves issue #8
2022-01-17 18:01:40 -05:00
tildearrow 12236248dd prepare for eventual export 2022-01-16 23:21:27 -05:00
tildearrow 91e8ff01cf add notifyInsDeletion
prevent invalid memory access when deleting instruments
2022-01-13 19:36:02 -05:00
tildearrow dc5990a37e a lot of master system fixes!
fixes forest frolick, professional tracker, YZYX, Monday (kinda),
MasterTracker and Ice Fields
2021-12-29 02:08:50 -05:00
tildearrow d766c4aaf0 finally do EFxx right
took a while to figure out...
2021-12-28 00:51:38 -05:00
tildearrow 65444d4a99 el diego 2 finally plays back correctly
ALMOST
2021-12-27 16:31:16 -05:00
tildearrow 7ba8607270 changes to sample rate storage
as of now we store and use the actual sample rate as opposed to an index
fo a fixed rate table.

this allows for more flexibility in a future file format...
2021-12-23 18:04:44 -05:00
tildearrow 726b457ae7 another uninitialized variable 2021-12-21 16:02:31 -05:00
tildearrow 997c460fc1 greatly improved playback resume
no more song weirding out when changing orders
2021-12-21 01:29:07 -05:00
tildearrow 3a0e94df5e genesis: fix muting the PCM channel 2021-12-19 00:51:10 -05:00
tildearrow efd5e844ce genesis: fix massive bug when muting SN 2021-12-19 00:49:47 -05:00
tildearrow b3b66ecbdb channel mute/solo! 2021-12-18 03:25:42 -05:00
tildearrow c54df74df1 GUI: rate change and new window title 2021-12-15 17:32:08 -05:00
tildearrow 52087edceb lots of changes
- GUI: ability to load files
- GUI: arrow key navigation
- fix sample volumes
2021-12-15 00:37:27 -05:00
tildearrow 2f813c55e0 GUI: instrument selector 2021-12-11 16:44:02 -05:00
tildearrow a17e91955a add reset() for every platform 2021-12-11 13:14:38 -05:00
tildearrow 248cc6d37a properly handle note off in PCM 2021-12-09 03:25:00 -05:00
tildearrow e2a41974ff PCM sample bank support 2021-12-09 03:13:37 -05:00
tildearrow 6a02754996 add PAL flag to dispatch
now platforms run at their correct clock speed when in PAL mode

also fix clipping in Genesis
2021-12-08 01:56:40 -05:00
tildearrow 65ab3a2b5d keyOffAffectsArp is now per-channel 2021-12-08 00:33:00 -05:00
tildearrow 145403e7dd Merge branch 'master' of github.com:tildearrow/furnace 2021-12-06 16:52:03 -05:00
tildearrow d6fb6b0bb3 more optimization
as of now non-stereo sound chips are only processed once
2021-12-06 16:51:18 -05:00
tildearrow 6efcfc2e8a prepare for possible major optimization
by just forwarding an output buffer to the dispatch and begin/length,
the number of calls may be reduced which improves performance.
2021-12-06 05:21:42 -05:00
tildearrow ce4b6c7044 genesis: comment out two debug messages 2021-12-06 03:26:33 -05:00
tildearrow 055b4f9c26 genesis: fix delay bug 2021-12-06 03:07:29 -05:00
tildearrow 8478481466 hmmm 2021-12-06 02:59:12 -05:00
tildearrow b30c5679ae genesis: reduce CPU usage
the chip uses TDM to output the channels one by one
so we just run the chip 6 times and output at 1/6th the rate, which
means less work for blip_buf and less C++ overhead
2021-06-09 01:57:12 -05:00
tildearrow 0b8fcc6e8d genesis: implement 10xx command 2021-06-05 23:27:02 -05:00
tildearrow 83ce4f0ebe game boy progress, part 5
now with almost accurate arpeggios.
2021-05-28 00:36:40 -05:00
tildearrow 892ea33e77 game boy progress, part 3 2021-05-27 23:03:10 -05:00
tildearrow 26463fd8d9 better pitch slides
now digital warmth doesn't choke at the toms
2021-05-19 14:39:39 -05:00
tildearrow 09ed99f0b0 genesis extended channel 3 support.
as of today Furnace is able to play most Genesis songs without trouble.
bugs are expected, and fixes will arrive.

are you ready?
2021-05-18 16:02:49 -05:00
tildearrow c766f98719 implement arp speed and arp tick 2021-05-18 02:53:59 -05:00
tildearrow c0f7f12c89 misc fixes and new effects
- fix 8-bit samples
- 0C effect
- E3 effect
2021-05-18 02:29:17 -05:00
tildearrow b2908413fe FM: better pitch slide accuracy
so... it appears that pitch slides in Genesis system aren't truly linear
instead, they are "kind of linear". the frequency isn't linear, and when
it overflows the range of an octave, the high bit changes and the
frequency is shifted right
2021-05-18 01:20:38 -05:00
tildearrow b34321b556 fix a tiny TL misbehavior 2021-05-18 00:43:00 -05:00
tildearrow cf7aa9139c TL change on out op fix 2021-05-17 16:32:56 -05:00
tildearrow 98180c3d23 now fix the volume slides in FM as well 2021-05-17 15:51:12 -05:00
tildearrow 9736b77401 better volume slide accuracy
volume slide seems to be kind of quirky:
- sliding all the way down and then up suddenly sets the vol to max
- apparently there is an overflow and the slide stops when it reaches
  its boundaries (instead of continuing)
2021-05-17 15:06:11 -05:00