Commit Graph

614 Commits

Author SHA1 Message Date
tildearrow b66cc81fc6 fix loading 24-bit samples 2022-06-23 22:33:25 -05:00
tildearrow 7586db9a1b fix Termux build again 2022-06-23 16:25:51 -05:00
tildearrow e3686c2e34 fix song playing from begin if stopped on last row 2022-06-20 22:14:16 -05:00
tildearrow ad5072dad6 more MIDI debugging messages 2022-06-16 23:55:17 -05:00
tildearrow b7d8f3c17a harden sample movement 2022-06-16 23:39:38 -05:00
tildearrow cdbcf7fcd3 fix loading 8-bit samples 2022-06-16 22:10:57 -05:00
tildearrow 327952f3f4 finally support loading floating-point samples 2022-06-16 22:07:12 -05:00
tildearrow ed6a110d44 initialize SF_INFO before loading sample 2022-06-16 21:25:21 -05:00
tildearrow 64fa5f804b finish fade out on audio export option 2022-06-06 04:00:56 -05:00
tildearrow b6ea8ede86 fade out experiments - DO NOT COMPILE 2022-06-06 03:05:55 -05:00
tildearrow 5a0a9db9c3 highlight cur row instead of next one on playback 2022-06-06 01:05:06 -05:00
tildearrow 1f1d2c85bd GUI: add mono/poly note preview button 2022-06-03 18:05:07 -05:00
tildearrow ddcd76328d add ability to move sub-songs 2022-06-01 18:50:30 -05:00
tildearrow 9d10b5bf2b OPL: complete the drum instrument type
#310
2022-05-31 17:44:52 -05:00
cam900 a3bca9efa7 Merge remote-tracking branch 'upstream/master' into es5506_alt 2022-05-31 12:18:46 +09:00
tildearrow fc0a51ed56 GUI: add oscilloscope window size setting
and also remember last zoom/winSize value
2022-05-30 21:40:07 -05:00
tildearrow 495aec86bd fix addOrder() undefined behavior 2022-05-30 14:02:54 -05:00
cam900 02dbafb728 Merge remote-tracking branch 'upstream/master' into es5506_alt 2022-05-30 22:20:24 +09:00
tildearrow 9b7145d2b0 harden wavetable loader 2022-05-29 22:21:37 -05:00
cam900 4f6f13e938 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  GUI: improve unified data view
  GUI: sample editor preview in selection
  finally
  Revert "fudge and bread"
  Revert "fire!"
  Revert "temporarily kill MSVC"
  Revert "MSVC: ughh, f**k you, you d**khead."
  MSVC: ughh, f**k you, you d**khead.
  temporarily kill MSVC
  fire!

# Conflicts:
#	src/engine/engine.h
#	src/engine/playback.cpp
2022-05-30 08:13:27 +09:00
tildearrow 84d4ca63c2 GUI: sample editor preview in selection 2022-05-29 02:13:08 -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 08543a2dc9 GUI: drag-and-drop ins/wave/sample loading 2022-05-28 18:51:05 -05:00
cam900 67a7f39d9a Allow more than 64 columns in Dear ImGUI (patched)
Improves Channel window displays, with System info.
2022-05-27 13:38:45 +09: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 e17c99dcdf allow building Furnace without SDL2 and libsndfile
for eventual libfurnace
2022-05-22 19:01:50 -05:00
cam900 f7ba60bfa9 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace: (46 commits)
  PCE: fix two issues
  SegaPCM: fix samples bigger than 64KB
  SCC: implement VGM soft reset
  GUI: add option to clear orders
  GUI: implement "clear all subsongs"
  GUI: fix crash when deleting current subsong
  CI: only 1 core for MinGW
  Fix AY8910 envelope hangs
  OPL: fix fixed frequency drums
  pick nits: the sequel
  pick nits
  AY: fix possible hang
  hide .ftm format
  Add x2 icon variations as well
  Install more size variations on Linux
  OPLL: fix fixed drums freq
  GUI: make backupTimer atomic
  Have OPN* platforms set the correct YM2149 chip type.
  update to-do list
  ZX beeper: clarify effects (will be done later)
  ...

# Conflicts:
#	src/engine/platform/segapcm.cpp
2022-05-22 18:24:17 +09:00
tildearrow cfa05143ab dev96 - add virtual tempo 2022-05-18 00:05:25 -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
tildearrow c4614bff30 GUI: implement "clear all subsongs" 2022-05-17 01:42:21 -05: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
James Alan Nguyen e6ad01b0f3 Merge branch 'master' into feature/Moar-patch-bank-support-part3 2022-05-15 18:46:45 +10:00
tildearrow f63c072517 fix build failure 2022-05-15 01:55:25 -05:00
James Alan Nguyen 0e07b745c7 Merge branch 'master' into feature/Moar-patch-bank-support-part3 2022-05-15 16:49:52 +10:00
tildearrow c5786b61fb dev95 - multiple songs in a single file (READ)
experimental feature! proceed with caution.
if you experience song corruption or crashes, report issue immediately!

files with multiple songs will be readable in older versions of Furnace,
but only the first song will be read in those versions.

issue #199
2022-05-15 01:42:49 -05:00
tildearrow 06ec22d6a5 enforce asset limits 2022-05-14 17:51:05 -05:00
James Alan Nguyen 80e8a3155c Merge branch 'master' into feature/Moar-patch-bank-support-part3 2022-05-14 23:22:57 +10:00
tildearrow db2ebc4930 OPNA: improvements 2022-05-13 03:18:14 -05:00
tildearrow 1b4256bb28 spelling change: Rom -> ROM - PLEASE READ
@Grauw: please update your MultiPCM code.
i know it's just a trivial change I made, but in my opinion "ROM"
indicates it's an acronym...
2022-05-12 22:15:03 -05:00
tildearrow 9bac00efe5
Merge pull request #448 from grauw/sample-rom-settings
Add emulation settings for YRW801, TG100 and MU5 sample ROMs.
2022-05-12 22:10:25 -05:00
Laurens Holst c29f18dfc2 Add emulation settings for YRW801, TG100 and MU5 sample ROMs. 2022-05-12 20:18:01 +02:00
James Alan Nguyen 4354e4064b Merge branch 'master' into feature/Moar-patch-bank-support-part3 2022-05-12 09:57:11 +10:00
tildearrow a7e6323db9 add a full linear pitch mode, part 3
round frequency/period
2022-05-10 23:42:24 -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 8784fe5664 dev94 - add a full linear pitch mode, part 1 2022-05-10 03:51:18 -05: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
James Alan Nguyen 7ae72f0fe4 Rebase fix and move reused fileIns lambdas into cpp static functions (since effectively private) 2022-05-09 21:22:20 +10:00
tildearrow 40e992cc6f prepare for something 2022-05-08 15:59:42 -05:00
tildearrow 2c643aca4c add preliminary TX81Z SysEx response
- load voice data
2022-05-08 02:01:32 -05: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
tildearrow dbe9bf25e7 fix bug caused by new renderSamples approach
when doing switchMaster
2022-05-02 02:54:23 -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 269f07f597 these are debug messages 2022-05-01 17:26:56 -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 fae3de53a9 maybe uninitialized 2022-04-30 04:30:33 -05: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 52c0044bd9 GUI: add ability to customize startup system 2022-04-30 01:37:37 -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
cam900 ee7633ba7a Add dummy sample for reduce phase accumulator wraparound related issue 2022-04-30 02:06:16 +09:00
tildearrow 5567746e0b QSound: implement panning macro - PLEASE READ
the panning strategy for QSound has changed!
it's now 08xy where x is left and y is right (muting is not possible though!)
this makes it consistent with other chips, plus QSound's pan range was
32 anyway

in order to toggle the QSound effect use effect 12xx
2022-04-28 23:58:11 -05:00
tildearrow 2ac0e8af42 further improve channel allocation 2022-04-28 18:32:24 -05:00
tildearrow 34c3473389 improvements to swap/stomp channel 2022-04-28 14:03:58 -05:00
cam900 eb3baabc1d Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  OPL 4-op note preview possible fix
  better channel allocation strategy
2022-04-28 23:33:12 +09: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
tildearrow 8675cdf802 OPL 4-op note preview possible fix 2022-04-28 05:38:28 -05:00
tildearrow 3906fc1dd4 better channel allocation strategy
issue #376
2022-04-28 05:04:34 -05:00
tildearrow 859b2cf8db implement channel swapping
issue #378
2022-04-28 03:36:15 -05: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 66f5b2117f dev90 - linear pitch macro option 2022-04-28 00:26:21 -05:00
tildearrow c0df205f2d more changes to autoNoteOn
now that there's a second prefer ins type, we get rid of DIV_INS_AMIGA check
2022-04-27 23:32:07 -05:00
tildearrow 3306e853d1 effectRows -> effectCols
i don't know why did I call it "rows"
2022-04-27 17:53:55 -05:00
cam900 37216e323f Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  fix MSVC oh my
  improvements to sysDef and UX changes

# Conflicts:
#	src/engine/dispatchContainer.cpp
#	src/gui/insEdit.cpp
2022-04-27 21:21:08 +09:00
cam900 0209ebda03 Merge branch 'master' of https://github.com/tildearrow/furnace into es5506_alt
* 'master' of https://github.com/tildearrow/furnace:
  sysDef refactor, part 2
  sysDef refactor, part 1 - PLEASE READ NOTE
  prepare for macroInt preview in instrument editor
  GUI: fix #400
  fix metronome in low-latency mode

# Conflicts:
#	src/engine/dispatch.h
#	src/engine/dispatchContainer.cpp
#	src/engine/instrument.h
#	src/engine/song.h
#	src/engine/sysDef.cpp
#	src/gui/dataList.cpp
#	src/gui/gui.h
#	src/gui/guiConst.cpp
2022-04-27 19:52:04 +09:00
tildearrow 78bdd98e0b improvements to sysDef and UX changes
- "no undo" in clear option
- only display instrument types depending on current systems
2022-04-27 04:48:56 -05:00
tildearrow 24d60507e7 sysDef refactor, part 2
to @cam900 and @grauw: you may now pull this to your branch.
check out the comments in sysDef.cpp though.
2022-04-27 00:56:15 -05:00
tildearrow 351c22cb77 sysDef refactor, part 1 - PLEASE READ NOTE
THIS WILL NOT COMPILE!!!
i'm still working on it

to @cam900: DO NOT PULL TO YOUR ES5506 BRANCH YET - wait until I am done
with this refactor

to @grauw: DO NOT PULL TO YOUR OPL4 BRANCH YET - wait until I am done
with this refactor
2022-04-26 18:32:33 -05:00
tildearrow 9eb9561b53 GUI: fix #400 2022-04-26 01:07:28 -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 e8c9b645c5 GUI: implement instrument preview in file dialog
SADLY it's just for the built-in file dialog
but i'll think of a solution for the external one
2022-04-25 18:58:17 -05:00
tildearrow 663e724111 I KNEW IT 2022-04-25 18:41:24 -05:00
tildearrow b3f1935f2b GUI: prepare for more UX improvements
- add "temporary instrument" to DivEngine
- prepare for two things:
  - instrument preview on file picker (at least built-in one)
  - instrument selector for banks (#364)
2022-04-25 18:23:12 -05:00
tildearrow 17cf657f6a one more pitch calc fix 2022-04-25 11:52:05 -05:00
tildearrow 832df58929 YM2612: fix several sample bugs 2022-04-25 01:24:42 -05:00
tildearrow c84ff399d9 YM2612: fix negative octaves 2022-04-24 22:45:59 -05:00
tildearrow 4195715dc0 use good default instrument when adding ins 2022-04-21 02:29:20 -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 d4380e1524 GUI: add an effect list window 2022-04-19 18:44:05 -05:00
tildearrow cc5013f3dc possibly fix OPl3 per-channel audio export 2022-04-18 04:42:51 -05:00
tildearrow afa59a27ff fix note preview for ADPCM-A 2022-04-18 04:16:59 -05:00
tildearrow 6450a5323a fix preview of sample instruments 2022-04-16 22:26:41 -05:00
tildearrow d0c76e020c GUI: more note preview fixes 2022-04-16 00:10:52 -05:00
tildearrow b48a2368be more low-latency mode work
playSub() runs at normal tick rate
2022-04-15 22:22:47 -05:00
tildearrow 45460df96d improve low-latency mode strategy 2022-04-15 14:38:25 -05:00
tildearrow 96715ed88c add experimental low-latency mode
do not use (yet)!
2022-04-15 05:37:23 -05:00
tildearrow 9795bca2ca fix audio export not aborting in per-channel mode 2022-04-14 02:26:47 -05:00
tildearrow cc1933dcbb export ExtCh op channels as a group
in per-channel audio export
2022-04-14 02:16:08 -05:00
tildearrow 2e2fafd878 GUI: add metronome volume setting 2022-04-13 02:29:07 -05:00
tildearrow a20861559b implement .dmc loading 2022-04-12 03:34:53 -05:00
tildearrow 8407a7d3a4 add several TODO comments
self-note: check this one after you come back!
2022-04-11 18:12:05 -05:00
tildearrow 6b627ab885 TOOK 2022-04-10 22:16:42 -05:00
tildearrow fddd05dc1a improve logging facility
we have a log viewer within the program now
2022-04-10 22:12:02 -05:00
tildearrow 5f526f4b6e add playSub time log 2022-04-10 17:24:41 -05:00
tildearrow 46bf69769b
Merge pull request #331 from OPNA2608/msvc/sane_warning_level
Resolve/Mute MSVC warnings, enable WAE for MSVC
2022-04-09 15:26:58 -05:00
OPNA2608 b6fb3820da Remove unneeded includes
Some are harmless, some screw with SDL's standard includes due to preceeding `_USE_MATH_DEFINES`.
2022-04-09 21:10:15 +02:00
tildearrow 320250b831 MIDI out improvements 2022-04-09 01:50:44 -05:00
tildearrow 9e0e8f3345 dev80 - increase song limits
up to 256 patterns
up to 256 orders
2022-04-08 17:21:36 -05:00
tildearrow 6567d29450 separate instrument file ops 2022-04-03 02:15:04 -05:00
tildearrow e44d081adc prepare for .opm support
goodbye addInstrumentFromFile
hello instrumentFromFile + addInstrumentPtr

these changes are required to allow loading instrument banks
2022-04-03 01:56:49 -05:00
tildearrow ffb536846b fix .dmp loading 2022-04-02 17:37:43 -05:00
tildearrow ffb01dd19c Revert "release 0.6pre0"
This reverts commit f7566455c2.
2022-04-01 05:20:00 -05:00
tildearrow f7566455c2 release 0.6pre0 2022-04-01 04:45:06 -05:00
tildearrow 4b436ef1fc and more MIDI input refinements 2022-04-01 02:21:10 -05:00
tildearrow f689409f02 kind of MIDI output 2022-03-31 03:33:05 -05:00
tildearrow 45ce940d66 better MIDI and note input handling
closes #147
2022-03-31 01:51:57 -05:00
tildearrow 4825fe7adb more work 2022-03-28 18:19:47 -05:00
tildearrow 08910d37b2 oh yes more MIDI work 2022-03-28 15:24:09 -05:00
tildearrow 5360cd73f4 earliest MIDI input! (no note input tho) 2022-03-28 03:46:50 -05:00
tildearrow b514ee30da MOD import: non-linear pitch 2022-03-26 22:34:11 -05:00
tildearrow 3ea9c0360f implement F3xx and F4xx for fine vol slides 2022-03-26 20:58:33 -05:00
tildearrow 5f7078db42 bang bang bang 2022-03-25 03:41:43 -05:00
tildearrow 0687a6f217 this stupid effect 2022-03-25 03:18:44 -05:00
tildearrow ed857b20c4 potentially breaking change: better freq formula
now using a 4096-entry-long table for calculating final period/frequency
see issue #303
2022-03-25 02:52:41 -05:00
tildearrow bd36a4ffdc dev71 - more compatibility flags for .mod 2022-03-23 23:57:10 -05:00
tildearrow ece34990e5 several pitch fixes and stuff
pull request #303
2022-03-23 23:19:16 -05:00
tildearrow 711b60d454 improved mutex locking - less xruns when seeking
especially in JACK and macOS
2022-03-23 21:38:28 -05:00
tildearrow 11d9ce3f87 what is going on 2022-03-23 17:00:40 -05:00
tildearrow 6492eeff56 GUI: proper sample errors 2022-03-23 16:39:08 -05:00
tildearrow 6050fc7208 one more race condition fix 2022-03-21 17:56:48 -05:00
tildearrow 1003d9fcb8 GUI: more "modified" status situations
fixes #236
2022-03-21 16:17:51 -05:00
tildearrow 1941ca3616 fix crash on sample preview at low rate 2022-03-20 13:36:48 -05:00
tildearrow 34e679d642
Merge pull request #298 from djtuBIG-MaliceX/feature/OPL_SBI_Instrument_Import
OPL1/2/3 Instrument Import - SBI and S3I (Adlib only) format
2022-03-20 04:39:52 -05:00
James Alan Nguyen cbe74b26ad More #79 - Add S3I Adlib instrument support. Also fix SafeReader `SEEK_CUR` handling (wasn't used at all). 2022-03-20 17:12:03 +11:00
tildearrow 90a18611cd sys flags: don't play when song is stopped 2022-03-19 22:03:12 -05:00
James Alan Nguyen 629049dea0 Redundant if-statement 2022-03-20 05:50:22 +11:00
James Alan Nguyen 5396889195 Missed feedback for 4op block 2022-03-20 01:04:38 +11:00
James Alan Nguyen b1a0aa86ef Instrument File Import support for 2op SBI, 4op SBI, and Freq Monster 801 SBI format (4op portion only). 2022-03-20 00:55:34 +11:00
James Alan Nguyen e032580639 Started SBI import work (Issue #79 SBI task). Also ensure catch by reference not value. 2022-03-20 00:55:34 +11:00
tildearrow 689ed3bf65 sample editor workkkkkkk 2022-03-19 03:42:44 -05:00
tildearrow 02e9edbad9 unlock the power of DECIMAL HZ! 2022-03-15 23:30:15 -05:00
tildearrow d8be1ddc4b make addSystem error more clear 2022-03-15 18:36:24 -05:00
tildearrow fa32cadd36 fix conflicting system flags when changing systems 2022-03-15 18:34:41 -05:00
Natt Akuma 54da047b5a Apply requested changes
- Use sample->init() instead
- Implement set Hz by tempo effect and move from C4xx to F0xx
- Add "SAMPLE_POS" to cmdName
2022-03-15 03:59:42 +07:00
Natt Akuma c7fb5df206 Merge branch 'master' of https://github.com/tildearrow/furnace into mod-import 2022-03-14 21:57:54 +07:00
Natt Akuma 87f225074c .mod import 2022-03-14 21:50:52 +07:00
tildearrow c6fda7a156 Merge branch 'x1_010' of https://github.com/cam900/furnace into cam900-x1_010 2022-03-10 18:24:52 -05:00
cam900 2e6cc9fc7c Merge branch 'master' of https://github.com/tildearrow/furnace into x1_010
# Conflicts:
#	CMakeLists.txt
#	papers/doc/7-systems/README.md
#	src/engine/dispatch.h
#	src/engine/dispatchContainer.cpp
#	src/engine/playback.cpp
#	src/engine/sysDef.cpp
#	src/gui/gui.cpp
2022-03-08 13:38:24 +09:00
cam900 65149a466f Fix accidently auto-generated spaces 2022-03-08 00:15:21 +09:00
Natt Akuma 3b88786ffb Merge branch 'master' of https://github.com/tildearrow/furnace into x16 2022-03-07 16:46:32 +07:00
tildearrow 8f957baa3e dispatch: add function to notify playback stopped
for the PC Speaker real driver
2022-03-07 01:48:48 -05:00
cam900 4a83c7c5a7 Add Seta/Allumer X1-010 Support
its 16 channel wavetable/PCM chip, with (optional) stereo support.
Its also has envelope, this feature has similar as AY PSG's one but its shape is also stored at RAM, and each nibble in envelope data is for each output: so i decided to added some feature for more stereo-ish envelope.
Split: Envelope shape will be splitted to Left and Right half for each output.
HInv, Vinv: Envelope shape will be Horizontally/Vertically mirrored the left one.

Max sample length is sample bank size of Seta 2 arcade hardware (currently not emulated yet, nor it doesn't support on VGM).

Chip id is temporary, it can be changed with to suggestions.
2022-03-07 02:31:03 +09:00
Natt Akuma 9abf872ff3 Add VERA support for Commander X16 2022-03-04 18:20:38 +07:00
tildearrow d94e0ec3e7 GUI: prepare a better new song thingy 2022-03-02 02:22:51 -05:00
tildearrow acc9b0aa57
Merge pull request #225 from cam900/ym2610b
Prepare to experimental support YM2610B and with Extended channel 3 mode, Some additions
2022-03-01 23:21:46 -05:00
tildearrow fa5e2bc439 TODO: revamp new song system picker 2022-03-01 17:19:52 -05:00
cam900 1631af8f8e Merge branch 'master' of https://github.com/tildearrow/furnace into ym2610b 2022-03-02 01:18:36 +09:00
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