Thomas Harte
|
18790a90ae
|
Ensures timer 2 doesn't use timed behaviour when in pulse mode.
|
2020-09-17 21:09:32 -04:00 |
|
Thomas Harte
|
21afc70261
|
Adds formal data-sheet names.
|
2020-09-17 19:00:46 -04:00 |
|
Thomas Harte
|
a17d0e428f
|
Protects against some further uninitialised values.
|
2020-09-16 18:15:57 -04:00 |
|
Thomas Harte
|
bb57f0bcc7
|
Ensures all 6560 properties have a valid default value.
|
2020-09-16 17:24:18 -04:00 |
|
Thomas Harte
|
fa95a17af5
|
Resolves receive_bit_count-unused warnings.
|
2020-07-24 21:59:27 -04:00 |
|
Thomas Harte
|
8aeebdbc99
|
Remove redundant comment.
|
2020-07-16 23:26:45 -04:00 |
|
Thomas Harte
|
1288369865
|
Merge branch 'master' into FurtherSCC
|
2020-07-11 23:54:40 -04:00 |
|
Thomas Harte
|
2477752fa4
|
Adds further [[fallthrough]] attributes.
|
2020-06-19 23:36:51 -04:00 |
|
Thomas Harte
|
3cb1072c29
|
Adds an explicit [[fallthrough]] tag.
|
2020-06-19 23:10:25 -04:00 |
|
Thomas Harte
|
d64b4fbc26
|
Adds a Qt timer class. Precision seems to be 'acceptable'.
|
2020-05-31 23:39:08 -04:00 |
|
Thomas Harte
|
73131735fa
|
Further qmake warning corrections.
|
2020-05-30 19:31:17 -04:00 |
|
Thomas Harte
|
48afc54af6
|
Cuts down unused parameter warnings to just a few that may well indicate implementation errors.
|
2020-05-30 01:06:43 -04:00 |
|
Thomas Harte
|
267006782f
|
Starts to add Qt target; resolves many build warnings.
|
2020-05-30 00:37:06 -04:00 |
|
Thomas Harte
|
512a52e88d
|
Increases const correctness, marks some additional constructors as constexpr, switches std::atomic construction style.
|
2020-05-20 23:34:26 -04:00 |
|
Thomas Harte
|
66c2eb0414
|
Further tightens const and constexpr usage.
|
2020-05-12 22:22:21 -04:00 |
|
Thomas Harte
|
9458963311
|
Factors out shift by 7.
|
2020-05-10 13:57:50 -04:00 |
|
Thomas Harte
|
44690b1066
|
Halves effect of vibrato.
|
2020-05-10 12:05:14 -04:00 |
|
Thomas Harte
|
64c62c16fb
|
Adjusts tremolo scale.
|
2020-05-10 00:43:46 -04:00 |
|
Thomas Harte
|
afef4f05fe
|
Adds damping and phase resets for the rhythm section.
|
2020-05-10 00:10:51 -04:00 |
|
Thomas Harte
|
25996ce180
|
Further doubles down on construction syntax for type conversions.
|
2020-05-09 23:00:39 -04:00 |
|
Thomas Harte
|
31c6faf3c8
|
Adds a bunch of const s.
|
2020-05-09 21:23:52 -04:00 |
|
Thomas Harte
|
40b60fe5d4
|
Renames folder as per intended scope.
|
2020-05-09 18:04:11 -04:00 |
|
Thomas Harte
|
eed357abb4
|
Introduces concept of 'average peak volume' in order better to normalise audio sources like the OPLL.
|
2020-05-09 17:57:21 -04:00 |
|
Thomas Harte
|
8f541602c1
|
Moves modulator updates a sample behind operator updates.
|
2020-05-08 21:14:25 -04:00 |
|
Thomas Harte
|
668f4b77f3
|
Implements feedback.
|
2020-05-08 21:05:23 -04:00 |
|
Thomas Harte
|
303965fbb8
|
Removes the crutch of my first-attempt implementation.
|
2020-05-08 20:53:34 -04:00 |
|
Thomas Harte
|
792aed242d
|
Fixes the use-sustain flag.
|
2020-05-08 20:49:39 -04:00 |
|
Thomas Harte
|
dc5654b941
|
Attempts to implement the proper attack phase.
It's sounding pretty good now, but for sustain.
|
2020-05-08 18:59:05 -04:00 |
|
Thomas Harte
|
e51e2425cc
|
Attempts to implement decay and release the right way around and with full precision.
Higher numbers = decay/release more quickly, not more slowly.
|
2020-05-08 18:40:49 -04:00 |
|
Thomas Harte
|
95c6b9b55d
|
Declare proper envelope precision.
|
2020-05-08 17:58:50 -04:00 |
|
Thomas Harte
|
ea25ead19d
|
Ensures rhythm envelope generators don't pick up should_damp state.
|
2020-05-08 00:18:31 -04:00 |
|
Thomas Harte
|
24100ec3b0
|
Switches snare and high-hat envelope generators.
|
2020-05-08 00:08:14 -04:00 |
|
Thomas Harte
|
32437fbf8b
|
Attempts to use the proper rhythm mode envelope generators.
|
2020-05-07 23:56:15 -04:00 |
|
Thomas Harte
|
5219a86a41
|
In principle fully implements rhythm mode.
|
2020-05-07 23:38:51 -04:00 |
|
Thomas Harte
|
e12dc5d894
|
Reduce the amount of time spent installing instruments.
|
2020-05-06 00:15:28 -04:00 |
|
Thomas Harte
|
75315406bb
|
Ensure all channels begin in 'release' phase, which is currently code for 'off' in conjunction with attenuation of 511.
|
2020-05-06 00:13:01 -04:00 |
|
Thomas Harte
|
ea42fe638a
|
Corrects channel attenuation and carrier sustain level settings.
|
2020-05-05 23:41:15 -04:00 |
|
Thomas Harte
|
744211cec0
|
Ensures rhythm instruments are installed.
|
2020-05-05 23:13:13 -04:00 |
|
Thomas Harte
|
1a4321d7d0
|
Attempts better to balance attenuations.
|
2020-05-05 22:14:11 -04:00 |
|
Thomas Harte
|
b943441901
|
Marks up more specific TODOs.
I think I'm already much happier with this factoring.
|
2020-05-05 00:35:03 -04:00 |
|
Thomas Harte
|
0505b82384
|
Restores top bit of channel period, propagates it to the envelope generator.
|
2020-05-05 00:28:24 -04:00 |
|
Thomas Harte
|
c9fb5721cd
|
Makes first attempt to reintroduce full-melodic output.
|
2020-05-05 00:16:45 -04:00 |
|
Thomas Harte
|
386a7ca442
|
Continues doing away with the attempt heavily to interleave the OPLL and OPL2, creating a new OPLL class.
|
2020-05-04 21:14:51 -04:00 |
|
Thomas Harte
|
e929d5d819
|
Ensures proper dereferencing of the std::optional.
|
2020-05-03 21:57:15 -04:00 |
|
Thomas Harte
|
94614ae4c3
|
Shifts the LFO implementation inline.
|
2020-05-03 21:44:22 -04:00 |
|
Thomas Harte
|
1223c99e0f
|
Adds waveform generation logic to the new factoring.
|
2020-05-03 21:38:20 -04:00 |
|
Thomas Harte
|
1ff5ea0a6e
|
Adds KeyLevelScaler, implements EnvelopeGenerator, adds reset to PhaseGenerator.
|
2020-05-03 16:24:55 -04:00 |
|
Thomas Harte
|
9d2691d1d2
|
Taking it as given that outstanding deficiencies are mostly due to poor design, starts breaking out the envelope and phase generators.
|
2020-05-01 23:46:42 -04:00 |
|
Thomas Harte
|
e4ef2c68bb
|
Feeds through drum volume levels.
|
2020-04-30 19:35:09 -04:00 |
|
Thomas Harte
|
7fffafdfd4
|
Wires the high-hat through, possibly incorrectly.
|
2020-04-29 22:44:15 -04:00 |
|
Thomas Harte
|
c4135fad2b
|
Attempts completely to decouple updates and audio outputs.
|
2020-04-29 22:07:40 -04:00 |
|
Thomas Harte
|
9f0c8bcae7
|
Attempts to add the missing noise generators. I think I may still be astray on volumes.
|
2020-04-26 15:51:33 -04:00 |
|
Thomas Harte
|
2bc36a6cde
|
Eliminates branch within snare output.
|
2020-04-26 00:21:15 -04:00 |
|
Thomas Harte
|
ee10fe3d2c
|
Fully separates updates and outputs in operators; takes a shot at the snare.
|
2020-04-26 00:18:09 -04:00 |
|
Thomas Harte
|
a424e867f9
|
Continues factoring this apart, albeit with a decision on whether to retain update-and-output still pending.
|
2020-04-25 23:07:40 -04:00 |
|
Thomas Harte
|
f52b40396a
|
Re-ups output level.
Though it's still quiet compared to the SN.
|
2020-04-25 23:07:06 -04:00 |
|
Thomas Harte
|
cd2ab70a58
|
Moves the LFSR to the LowFrequencyOscillator.
Possibly I should come up with a better name for that?
|
2020-04-25 22:21:42 -04:00 |
|
Thomas Harte
|
65a3783dd2
|
Attempts the tom tom.
|
2020-04-25 19:21:55 -04:00 |
|
Thomas Harte
|
b9b5c2a3bc
|
Takes a first run at proper slot mixing and the bass drum.
|
2020-04-25 18:01:05 -04:00 |
|
Thomas Harte
|
12c618642e
|
Corrects output range.
|
2020-04-25 00:07:58 -04:00 |
|
Thomas Harte
|
6ebc93c995
|
Switches to maximum-rate multiplexing. Hopefully to eliminate the mixer as a consideration for now.
|
2020-04-24 23:50:06 -04:00 |
|
Thomas Harte
|
6d4e29c851
|
Strips mixer back to basics in search of audio issues.
|
2020-04-24 23:32:02 -04:00 |
|
Thomas Harte
|
b3979e2fda
|
Looking towards rhythm mode, and in search of bugs: factors out ADSR.
Further factorings to come.
|
2020-04-24 18:48:32 -04:00 |
|
Thomas Harte
|
983c32bf75
|
Adds vibrato.
This would complete melodic output, subject to bug fixes.
|
2020-04-24 18:02:41 -04:00 |
|
Thomas Harte
|
9e3614066a
|
Adds tremolo support, switches to global timer for ADSR stages other than attack.
|
2020-04-23 23:55:49 -04:00 |
|
Thomas Harte
|
c7ad6b1b50
|
Minor layout and commenting improvements.
|
2020-04-21 23:35:48 -04:00 |
|
Thomas Harte
|
676dcf7fbb
|
Calculates the proper key scale rate, though ADSR itself is still lacking that precision.
|
2020-04-21 22:57:56 -04:00 |
|
Thomas Harte
|
50d725330c
|
Adds missing header.
|
2020-04-21 22:48:52 -04:00 |
|
Thomas Harte
|
2886dd1dae
|
Collapses key-level scaling to a single 2d table.
I dare imagine I can do better; the columns in particular look like arithmetic progressions.
|
2020-04-21 20:19:02 -04:00 |
|
Thomas Harte
|
40424ac38b
|
Re-enables key-level scaling, with 3db and 1.5db the correct way around.
|
2020-04-21 20:10:40 -04:00 |
|
Thomas Harte
|
a4d3865394
|
Decreases sustain level attenuation; disables key-level scaling for now.
The latter was definitely wrong, I also think I don't need the big four tables.
|
2020-04-21 19:58:40 -04:00 |
|
Thomas Harte
|
bdce1c464a
|
Takes a shot at key-level scaling. Testing to come.
|
2020-04-21 00:09:42 -04:00 |
|
Thomas Harte
|
475d75c16a
|
Preserves fractional part of modulator phase.
|
2020-04-20 23:35:37 -04:00 |
|
Thomas Harte
|
32fd1897d0
|
Via a unit test, confirms and fixes relative volumes of OPLL channels.
Also rejigs responsibility for scaling to emulator-standard volume.
|
2020-04-20 23:17:29 -04:00 |
|
Thomas Harte
|
f19fd7c166
|
Pulls out common melodic update calls.
|
2020-04-20 18:58:31 -04:00 |
|
Thomas Harte
|
100fddcee1
|
Corrects divider, takes another whack at ADSR.
|
2020-04-20 18:58:10 -04:00 |
|
Thomas Harte
|
99fa86a67e
|
Adds a test for lookup sine. And fixes lookup sine.
|
2020-04-20 18:40:47 -04:00 |
|
Thomas Harte
|
6568c29c54
|
Improves commentary.
|
2020-04-19 22:42:25 -04:00 |
|
Thomas Harte
|
c54bbc5a04
|
Rename Table.h; LogSin -> LogSign and make it a bit more typer.
|
2020-04-19 13:33:17 -04:00 |
|
Thomas Harte
|
92d0c466c2
|
Moves complete phase -> output calculation inside Operator.
Reasoning being: otherwise I wasn't currently enforcing non-sine waveforms.
|
2020-04-19 13:27:24 -04:00 |
|
Thomas Harte
|
020c760976
|
Simplifies the phase counter.
|
2020-04-19 00:30:14 -04:00 |
|
Thomas Harte
|
cdfd7de221
|
Minor: enables all melodic channels when rhythm mode is disabled; supports non-modulated channels.
|
2020-04-18 17:48:29 -04:00 |
|
Thomas Harte
|
3da2e91acf
|
Adjusts range of output, makes declaration of level full owner of type information.
|
2020-04-17 23:29:09 -04:00 |
|
Thomas Harte
|
3948304172
|
Attempts to use table-based maths.
|
2020-04-17 23:23:16 -04:00 |
|
Thomas Harte
|
4a295cd95e
|
Wraps log_sin in an access function to enshrine sign and mask rules; switches both functions to non-math.h clashing names.
|
2020-04-17 23:22:42 -04:00 |
|
Thomas Harte
|
6f7c8b35c5
|
Applies an ahead-of-time transformation to the exp table, and wraps it in a helper function.
|
2020-04-17 22:33:13 -04:00 |
|
Thomas Harte
|
e58ba27c00
|
Clarifies meaning of scaling. Though it isn't yet applied.
|
2020-04-17 22:30:10 -04:00 |
|
Thomas Harte
|
0aceddd088
|
Starts tidying up the OPL2.
This is as a precursor to switching to using the proper table lookups, which I hope will automatically fix my range issues.
|
2020-04-15 22:10:50 -04:00 |
|
Thomas Harte
|
30ff399218
|
With some fixes for scale, I think possibly this is close for melodic channels.
|
2020-04-15 21:27:27 -04:00 |
|
Thomas Harte
|
a7e63b61eb
|
Just from printing numbers: corrects transition from attack to decay.
|
2020-04-15 00:26:01 -04:00 |
|
Thomas Harte
|
b13b0d9311
|
Starts towards implementing some OPL test cases.
|
2020-04-14 23:51:45 -04:00 |
|
Thomas Harte
|
d8380dc3e2
|
Tries to be a little neater in spelling out the work here.
I think I'm somewhat circling here now; I need to think of a way of getting clean comparison data.
|
2020-04-14 21:55:42 -04:00 |
|
Thomas Harte
|
d805e9a8f0
|
Actually, octave probably works this way around? Higher octaves = higher frequencies.
|
2020-04-14 21:39:12 -04:00 |
|
Thomas Harte
|
aa45142728
|
Endeavours to fix attenuation and add FM synthesis.
I now definitely think my frequency counting is wrong.
|
2020-04-14 18:32:06 -04:00 |
|
Thomas Harte
|
09d1aed3a5
|
Attempts to voice the current attenuation (and, therefore, the ADSR output), even if linearly rather than logarithmically.
|
2020-04-13 22:12:55 -04:00 |
|
Thomas Harte
|
a1f80b5142
|
Takes a stab at per-operator ADSR.
Heavy caveats apply: no KSR is applied, non-ADSR attenuation isn't applied, attenuation isn't voiced in general.
|
2020-04-13 21:39:06 -04:00 |
|
Thomas Harte
|
d3fbdba77c
|
Add missing #include.
|
2020-04-12 14:20:02 -04:00 |
|
Thomas Harte
|
632d797c9d
|
Adjusts frequency formula. This could be close.
I guess next I need to get ADSR/volume in general working, before I can go FM? Then I'll worry about using the proper log-sin/exp tables.
|
2020-04-12 14:15:09 -04:00 |
|
Thomas Harte
|
559a2d81c1
|
Baby step: starts trying to output the raw FM carrier, no modulation, no ADSR.
|
2020-04-12 12:46:40 -04:00 |
|
Thomas Harte
|
7a5f23c0a5
|
Adds accommodations for the OPLL.
|
2020-04-10 22:05:22 -04:00 |
|