Commit graph

241 commits

Author SHA1 Message Date
scratchminer ae8d45b1ff move the two PowerNoise commands to the end 2024-01-22 14:54:27 -05:00
scratchminer 85997e55e7 add Power Noise support 2024-01-21 06:44:29 -05:00
tildearrow b452641186 Merge branch 'macro-retrigger-effect-tildearow-version'
with rewritten retrigger- erm... RESTART function
2024-01-17 14:48:47 -05:00
LTVA1 7f94cdc930 port macro retrigger to orig Furnace 2024-01-17 15:28:29 +03:00
tildearrow f8187b9a5f dev191 - kind of remove DIV_ALWAYS_SET_VOLUME
it's useless crap I put during the Defle compat days
it serves nearly no purpose nowadays

also why is it a command?
2024-01-16 23:54:32 -05:00
tildearrow 88b42ddd58 update copyright year 2024-01-16 21:26:57 -05:00
Kagamiin~ 13e45cfce2 Merge branch 'master' into feature/esfm 2023-12-17 08:31:16 -03:00
tildearrow 51b385a1ef apply volExp on velocity input - PLEASE READ
DivDispatch::mapVelocity() now takes a float instead of an unsigned char
2023-12-16 19:52:37 -05:00
Kagamiin~ f42332f2c0 Merge branch 'master' into feature/esfm 2023-12-15 09:15:05 -03:00
tildearrow 69998e2c7e prepare for MIDI velocity mapping 2023-12-13 20:44:32 -05:00
Kagamiin~ 56d774bb3b Merge branch 'master' into feature/esfm 2023-11-18 09:15:48 -03:00
Zeta 36804d7c9b Add an option to round volumes up when applying linear scaling
This is secretly a FamiTracker compatibility mode, but it's useful
in many other contexts. With upwards rounding, if both the channel
and the macro volume are positive, then the computed result is
also positive, ie, it will never become 0, which is silent on many
chips.

Still needs UI changes to expose the setting, and save/load work
to persist it to file.
2023-11-14 03:27:03 -05:00
tildearrow d8daeb1169 GUI: channel status, part 4 2023-10-27 18:08:37 -05:00
tildearrow 20a5d9c089 GUI: channel status, part 3 2023-10-27 04:23:35 -05:00
Kagamiin~ 85db9ca16e Merge branch 'master' into feature/esfm 2023-10-25 17:10:16 -03:00
tildearrow 6dddee40d5 C64: 20xy and 21xy for setting ADSR
dropping DefleJank
2023-10-23 13:49:03 -05:00
Kagamiin~ a1b7e52467 Implementing pattern effects, detune on FM preview, default instrument 2023-10-21 14:35:20 -03:00
tildearrow 43468653a0 prepare for pre-calculated pitch table 2023-10-10 20:15:58 -05:00
tildearrow 839dc3cd91 prepare to add channel pair and mode hints 2023-10-05 04:47:14 -05:00
tildearrow cad63d8351 is this faster? 2023-09-20 00:24:55 -05:00
tildearrow c9cbf133d6 Eknous please HELP ME 2023-08-23 17:25:05 -05:00
tildearrow 9d410dfe9c add isVolGlobal to DivDispatch
do not key release on pendingNotes if so
issue #1325
2023-08-07 18:05:31 -05:00
tildearrow ad88ce46ab dev164 - Namco 163: improvements, part 4
- per-channel wave offset/length
- wave load position/length effects
- global wave load effects that actually make sense
- update doc
2023-07-21 19:54:35 -05:00
tildearrow 708c363635 FixedQueue, part 2 2023-07-13 04:09:20 -05:00
tildearrow 0c5e58fa3e YM2612: implement 9xxx, part 1
does not work on VGM export yet
2023-07-09 15:12:45 -05:00
MooingLemur a8a02b9ebb Changed EFxx to EExx at request of tildearrow 2023-07-05 15:29:11 -07:00
MooingLemur fba48149a5 VERA, ZSM Export: Add EFxx event as synchronization message, add sync message support in ZSM export 2023-07-05 15:07:44 -07:00
tildearrow ef57ad531d oh crap I did not commit 2023-06-22 03:24:39 -05:00
tildearrow e759200ac6 NES: add L I N E A R C O U N T E R effect 2023-05-05 01:10:03 -05:00
tildearrow b037b07c30 SNES: add global volume control effects 2023-05-04 16:49:47 -05:00
tildearrow 88654e26fc command stream arps 2023-03-27 03:29:43 -05:00
tildearrow f80a2b8864 GUI: make playing needles in sample editor work
currently only for YM2612 but I will implement more soon
2023-03-19 03:12:08 -05:00
tildearrow e5ab3413cb oh wow 2023-03-14 01:27:45 -05:00
cam900 f8b9901e4b Fix command order 2023-02-05 10:04:31 +09:00
cam900 dd79ae401b Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2023-02-05 10:00:27 +09:00
tildearrow 43ba2ff8f2 OPZ: implement LFO2
issue #831

untested and I can't test now
2023-02-03 17:00:15 -05:00
cam900 3403e10b0b Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2023-01-24 08:14:29 +09:00
tildearrow 45faadd4c8 update copyright year 2023-01-19 19:18:40 -05:00
cam900 536c345763 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2023-01-12 23:31:56 +09:00
tildearrow 707bbb54ea add effects for rear panning 2023-01-05 03:08:57 -05:00
tildearrow 08d2f12dbd prepare new dispatch
will allow for more than 2 outputs
2023-01-01 19:46:08 -05:00
cam900 f992346772 Addressing comments 2022-12-25 18:51:23 +09:00
cam900 80fd78dcdd Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-12-17 16:53:19 +09:00
tildearrow 6f22ade69a new arp strategy, part 1 2022-12-17 02:07:24 -05:00
tildearrow 3eb3d8a6f1 prepare for new arp strategy 2022-12-17 01:21:08 -05:00
cam900 429aed0ab1 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-12-17 15:00:44 +09:00
tildearrow 905329e1e4 help 2022-12-17 00:54:56 -05:00
tildearrow 9da46ee8ba implement macro masking 2022-12-17 00:09:56 -05:00
cam900 b2e15a5967
Merge branch 'master' into es5506_alt 2022-12-13 14:48:50 +09:00
cam900 47574fdede Move file into engine 2022-12-04 20:06:16 +09:00
cam900 18b87dcfaf Fix build 2022-12-04 20:02:59 +09:00
cam900 2ec4237076 Reduce duplicates of channel struct
Add/Fix custom clock limit defines (for YMF278B)
2022-12-04 19:58:58 +09:00
cam900 2ec35d903f Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-12-04 16:53:54 +09:00
tildearrow c6604ff581 add ability to select custom clock rates 2022-12-04 02:04:42 -05:00
tildearrow b647d17b12 prepare for custom chip clock rates 2022-12-03 04:24:08 -05:00
cam900 7867b59580 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-11-30 17:39:43 +09:00
tildearrow cf38680072 chip sample selection, part 4
partially works
2022-11-26 23:50:20 -05:00
tildearrow 3a9349d49a chip sample selection, part 3 2022-11-26 22:11:49 -05:00
tildearrow 85cb64b227 chip sample selection, part 2
add functions to retrieve whether a sample was loaded in chip memory
eventually I'll put warning feedback on the sample list
2022-11-26 18:44:04 -05:00
cam900 792beeb409 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-10-29 20:33:36 +09:00
cam900 90ed617cf6 Prepare for split volume scaling macro to 'log volume only' macro and 'log volume if compatibility flag set' macro 2022-10-28 22:36:50 +09:00
cam900 13b2a72a01 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-10-26 12:28:24 +09:00
tildearrow 9a1447e392 NES: envelope and length counter effects 2022-10-25 00:43:03 -05:00
cam900 87cb3c49a4 Update ES5506:
Remove transwave for now
- It consumes high CPU usage, so possibly little headroom for anything else.
Fix per-voice OSC via git master
Fix default channel for ES5506
Fix macro order - Filter macro must be executed after key on
Add SSV preset
2022-10-22 17:19:39 +09:00
cam900 487607b6ae Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-10-22 10:17:00 +09:00
tildearrow 4723ed3972 VGM: experimental direct stream mode for YM2612 2022-10-17 14:25:30 -05:00
tildearrow 684b5a928b VGM export: prepare for "direct stream mode"
this will eventually allow for DualPCM and MSM6258 export

DO NOT USE YET
2022-10-17 04:17:00 -05:00
tildearrow c3e2e902af prepare for possible DualPCM and MSM6258 VGM xprt 2022-10-16 21:35:25 -05:00
cam900 987cc113b4 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-09-30 20:01:21 +09:00
tildearrow 48db9a1d0c chip flags rewrite, part 4 - DO NOT USE
the next part is to drop systemFlagsOld completely
and then to fix the GUI
2022-09-29 20:13:40 -05:00
cam900 5a6cde65ed Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-09-25 18:34:36 +09:00
cam900 0a49d4bfd0 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt 2022-09-25 18:32:06 +09:00
tildearrow 01a592100f SNES: define effects (they don't work yet) 2022-09-25 04:02:06 -05:00
cam900 54dbd0690c Merge branch 'master' of https://github.com/tildearrow/furnace into sample_macro
# Conflicts:
#	src/engine/fileOps.cpp
#	src/engine/platform/lynx.cpp
#	src/engine/platform/rf5c68.cpp
#	src/engine/platform/su.cpp
#	src/engine/platform/x1_010.h
#	src/engine/platform/ym2610.cpp
#	src/engine/platform/ym2610.h
#	src/engine/platform/ym2610b.cpp
#	src/engine/platform/ym2610b.h
#	src/engine/sysDef.cpp
#	src/gui/insEdit.cpp

Add effect command for ADPCM-A global volume, X1-010 Sample bank slot
2022-08-27 17:25:48 +09:00
cam900 4cc79fb49d Prepare for split sample chip instrument
(MSM6258, MSM6295, QSound, Sega PCM, ADPCM-A, ADPCM-B, YMZ280B, RF5C68)
Instrument color and icons are placeholder.

different volume range, hard panned/soft panned and/or independent volume per output, chip-dependent features (global volume, echo, etc)
Allow use sample in instrument tab for chip with sample support
Prepare to support X1-010 Seta 2 style bankswitch behavior
Prepare to support AY89x0 PCM DAC
Support volume for PCE sample (DAC)
Fix Lynx, Y8950 sample pitch matches to sample preview
Support PCM DAC with backward and pingpong loop mode
Reduce some codes
Add Sega PCM, AY89x0, QSound, PCM DAC, Lynx per-channel debug support
2022-08-27 16:27:36 +09:00
Natt Akuma 7c42453422
Rewrite per-system effect handling (#548)
* Rewrite per-system effect handling

* fix build

* C64: fix fine cutoff regression

* fix some more crashes

Co-authored-by: tildearrow <tildearrow@protonmail.com>
2022-08-18 01:26:22 -05:00
tildearrow 09e32c7050 finish command dump hints 2022-08-04 15:14:29 -05:00
tildearrow fce0371756 add "hint" commands 2022-08-03 17:21:47 -05:00
tildearrow 52c3b10373 add getWantPreNote()
currently only C64 system requires this
2022-08-03 16:21:30 -05:00
cam900 2b5bb91237 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (55 commits)
  GUI: get rid of these stupid icons
  update to-do list
  MSM6258: the final bits
  MSM6258: clock/rate selection
  MSM6258: prepare for rate changing
  Update n163.md
  YM2612: DualPCM per-channel osc
  YM2612: more DualPCM muting fixes
  YM2612: fix DualPCM muting
  GUI: finish the blank ins up
  GUI: add "blank new instrument" option
  GUI: add mono/poly note preview button
  PC speaker: don't use printf/perror
  YM2612: CSM arpeggio and slides
  YM2612: - C   S   M -
  YM2612: half-working CSM
  YM2612: earliest completely untested CSM work
  delay collapse/expand pattern/song feature :<
  GUI: much more stable osc view
  YM2612: fix DAC output not visible in per-chan osc
  ...

# Conflicts:
#	src/engine/platform/genesis.cpp
#	src/engine/platform/genesis.h
#	src/ta-utils.h
2022-06-26 00:36:36 +09:00
tildearrow 8bfcf00203 prepare for impl of the final compat flag 2022-06-01 16:35:39 -05:00
cam900 32152fd89b Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (53 commits)
  prepare for better backward writing
  VGM export: fix oops
  GUI: drag-and-drop ins/wave/sample loading
  GUI: add "set loop" to sample editor
  MSM6295: VGM export!
  oops
  MSM6295: add rate select effect (20xx)
  update meteor shower
  MSVC is better than GCC right?
  update to-do list
  door into summer
  GUI: implement input for touch events
  GUI: update SDL hints
  fix Termux build
  add another demo song
  add demos/ecolove.fur
  update to-do list
  update demos/README.md
  add new demo songs
  dev99 - major Fractal system change
  ...

# Conflicts:
#	src/engine/dispatch.h
#	src/engine/platform/genesis.cpp
#	src/engine/playback.cpp
#	src/engine/song.h
#	src/engine/vgmOps.cpp
2022-05-29 13:47:39 +09:00
tildearrow 0b7d27dc29 YM2612: add reverse sample playback 2022-05-27 02:47:44 -05: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 6ec8674072 SoundUnit: many fixes. implement effects 2022-05-19 04:36:26 -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 23f086fda6 Allow 8 bit filter write, Linear pitch support 2022-05-11 15:10:21 +09:00
cam900 0ab1f69c7c Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  fix sample saving
  add extra FM effects to effect post handler
  dev91 - it's a breaking change
  aaaaaa
  AY8930: Fix tone and noise period in expanded mode.
  OPL: fix possible crash
2022-05-04 10:31:15 +09:00
tildearrow 30e60f643c add extra FM effects to effect post handler
see #38
the last thing left to do is to put these effects on the dispatch code
2022-05-03 17:37:17 -05:00
cam900 4021abe495 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  YM2610: optimize oscilloscope fetch CPU usage
  GUI: add audio load meter to statistics
  GUI: put "OK" and "Cancel" buttons in the bottom
  better FM chip names
  sysDef refactor, part 3 - PLEASE READ
  NO
  Reduce unnecessary line
  Debug improvements
  AY8930: Fix VGM output.

# Conflicts:
#	.gitignore
#	src/engine/playback.cpp
#	src/gui/debugWindow.cpp
2022-05-04 03:32:26 +09:00
cam900 e136db6d7a Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (26 commits)
  prepare for #38
  NES: DPCM work!
  fix bug caused by new renderSamples approach
  NES: prepare for DPCM
  OPZ: more fixed frequency mode fixes
  OPZ: possibly fix fixed freq emulation
  OPZ: fix muting
  OPL: fix panning
  damn it
  per-channel oscilloscope, part 10
  NES: NSFPlay per-channel osc
  NES: NSFPlay muting
  NES: now fix tri_mute
  NES: finally
  fix typo in playback engine
  NES: wire up NSFplay
  now fix it damn it
  now move these files
  add readme
  convertir de Shift-JIS a UTF-8
  ...

# Conflicts:
#	src/engine/engine.cpp
#	src/engine/engine.h
#	src/engine/platform/nes.cpp
#	src/engine/vgmOps.cpp
#	src/gui/stats.cpp
2022-05-03 11:07:50 +09:00
cam900 3f0c83eb45 Debug improvements
Add oscilloscope debug, Hideable sample debug
2022-05-03 10:20:20 +09:00
tildearrow 66f6ab4307 prepare for #38 2022-05-02 03:52:45 -05:00
tildearrow 5adc29906a
Merge pull request #410 from grauw/dispatch-render-samples
Move renderSamples() to DivDispatch implementations.
2022-05-02 00:25:58 -05:00
tildearrow 2c9bad3b3d per-channel oscilloscope, part 9
work in progress!
2022-05-01 18:29:16 -05:00
Laurens Holst 7f0074511c Move renderSamples() to DivDispatch implementations.
To prevent rendering samples for systems that are not in use.

Additionally, it gives the systems more flexibility to render the samples
according to their specific configuration.
2022-05-01 23:23:38 +02: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 4197fa44fb GUI: prepare for a per-channel oscilloscope?
currently supported systems:
- Amiga
- AY-3-8910
- Dummy System
- OPLL
- SegaPCM

no trigger supported yet!
2022-04-30 03:58:30 -05:00
tildearrow 2e8634626d new panning effects (80/81/82) 2022-04-29 23:41:14 -05:00
cam900 72e8bb89a7 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  GUI: sample/macro zoom with ctrl-wheel
  GUI: prevent division by zero
  GUI: possibly fix an instrument saving issue
  GUI: add chip randomizer button
  update to-do list
  oops
  NES: add DMC write effect
  SoundUnit: implement panning
  QSound: implement panning macro - PLEASE READ
  further improve channel allocation
  update format.md for eventual ExtCh extra systems
  improvements to swap/stomp channel

# Conflicts:
#	src/gui/insEdit.cpp
2022-04-30 02:32:55 +09:00