mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-03 09:47:26 +00:00
Merge branch 'master' into theUltimateFix
This commit is contained in:
commit
92a615eefc
35 changed files with 48 additions and 16 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
doc/4-instrument/MPCM-ADSRchart.png
Normal file
BIN
doc/4-instrument/MPCM-ADSRchart.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 169 KiB |
|
@ -1,6 +1,6 @@
|
|||
# AY-3-8910 instrument editor
|
||||
|
||||
the AY-3-8910 instrument editor consists of two tabs.
|
||||
the AY-3-8910 instrument editor consists of three tabs.
|
||||
|
||||
## Sample
|
||||
|
||||
|
@ -10,6 +10,13 @@ the only differences are the lack of an "Use wavetable" option, and the presence
|
|||
|
||||
note that using samples on AY is CPU expensive!
|
||||
|
||||
## Timer Macros
|
||||
- **Timer FX**: timer effect type sequence. 0- off, 1- tone PWM, 2- envelope distortion, 3- reserved
|
||||
- **TFX Offset**: PWM speed sequence.
|
||||
- **Timer Num and Den**: multiplier of a virtual square wave modulator (?)
|
||||
- **PWM Boundary**: sets the range of a pulse width modulation
|
||||
|
||||
note that timer effects might not be supported by VGM players, and are rather CPU expensive!
|
||||
## Macros
|
||||
|
||||
- **Volume**: volume sequence.
|
||||
|
|
|
@ -8,15 +8,20 @@ for sample settings, see [the Sample instrument editor](sample.md).
|
|||
|
||||
## MultiPCM
|
||||
|
||||
MultiPCM contains an ADSR envelope, not unlike Yamaha OPN/OPM envelpes, and simple LFO, also similiar to that found in OPN.
|
||||
MultiPCM contains an ADSR envelope, not unlike Yamaha OPN/OPM envelopes, and simple LFO, also similiar to that found in OPN.
|
||||
|
||||
you may use this tab to set up MultiPCM-specific parameters:
|
||||
|
||||
- **AR**: sets attack rate.
|
||||
- **D1R**: sets Decay 1 rate.
|
||||
- **AR**: sets Attack Rate.
|
||||
- **D1R**: sets Decay 1 Rate.
|
||||
- **DL**: sets Decay Level (analogue of Sustain Level on OPN chips).
|
||||
- **D2R**: sets Decay 2 rate (a.k.a. SR, Sustain Rate).
|
||||
- **RR**: sets release rate.
|
||||
- **LFO rate**: sets speed of LFO.
|
||||
- **D2R**: sets Decay 2 Rate (a.k.a. SR, Sustain Rate).
|
||||
- **RR**: sets Release Rate.
|
||||
|
||||
![MultiPCM envelope chart](MPCM-ADSRchart.png)
|
||||
|
||||
- **RC**: sets Rate Correction amount. similar to Key Scale or Rate Scale in FM parameters, this determines the degree to which the envelope execution speed increases according to the pitch.
|
||||
- **LFO Rate**: sets speed of LFO.
|
||||
- **PM Depth**: sets depth of LFO vibrato.
|
||||
- **AM Depth**: sets depth of LFO tremolo/amplitude modulation.
|
||||
- **Damp**: enforce quickly fading out the sample over 11 ms.
|
||||
|
|
|
@ -6,7 +6,7 @@ it is a 3-channel square/noise/envelope sound generator. the chip's powerful sou
|
|||
|
||||
the AY-3-8914 variant was used in Intellivision, which is pretty much an AY with 4 level envelope volume per channel and different register format.
|
||||
|
||||
Furnace is capable of doing software sample playback on AY-3-8910, where all 3 channels can play 4-bit PCM samples (at the cost of a very high CPU usage).
|
||||
Furnace is capable of doing software sample playback on AY-3-8910, where all 3 channels can play 4-bit PCM samples (at the cost of a very high CPU usage) and utilize CPU timer effects, providing all kinds of modulation (PWM and envelope distortion) effects, again at the cost of a higher CPU usage. Songs utilizing timer effects may not sound as intented after VGM export.
|
||||
|
||||
## effects
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ these are 2 pulse wave channels (same as on GB), barely working PCM channel and
|
|||
- range is `0` to `3 ` for pulses and `0` to `1` for noise.
|
||||
## info
|
||||
|
||||
this chip uses the [Watara Supervision](../4-instrument/vatarasv.md) and [Generic Sample](../4-instrument/sample.md) instrument editors.
|
||||
this chip uses the [Watara Supervision](../4-instrument/watarasv.md) and [Generic Sample](../4-instrument/sample.md) instrument editors.
|
||||
|
||||
### sample info
|
||||
|
||||
|
|
|
@ -123,6 +123,12 @@ SSG-EG is short for "Software-controlled Sound Generator – Envelope Generator"
|
|||
|
||||
a full guide to SSG-EG is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU), this [detailed technical explanation](https://gendev.spritesmind.net/forum/viewtopic.php?t=386&start=106), and this [chart of tunings](https://docs.google.com/spreadsheets/d/1HGKQ08CnLGAjA1U0StJFldod3FkQ3uq86rYy1VBIuZc/).
|
||||
|
||||
## CSM
|
||||
|
||||
CSM, or "Composite Sine Mode", involves a timer matching the frequency of the note in the "CSM Timer" channel. each time it triggers, it generates key-on and key-off commands to reset the phase of all operators on channel 3 and force their envelopes to restart at the release point. this can be used to create vocal formants (speech synthesis!) or other complex effects. outside this chip's specific implementation, the technique is known as "oscillator sync".
|
||||
|
||||
working with CSM is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU).
|
||||
|
||||
## chip config
|
||||
|
||||
the following options are available in the Chip Manager window:
|
||||
|
|
|
@ -123,6 +123,12 @@ SSG-EG is short for "Software-controlled Sound Generator – Envelope Generator"
|
|||
|
||||
a full guide to SSG-EG is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU), this [detailed technical explanation](https://gendev.spritesmind.net/forum/viewtopic.php?t=386&start=106), and this [chart of tunings](https://docs.google.com/spreadsheets/d/1HGKQ08CnLGAjA1U0StJFldod3FkQ3uq86rYy1VBIuZc/).
|
||||
|
||||
## CSM
|
||||
|
||||
CSM, or "Composite Sine Mode", involves a timer matching the frequency of the note in the "CSM Timer" channel. each time it triggers, it generates key-on and key-off commands to reset the phase of all operators on channel 3 and force their envelopes to restart at the release point. this can be used to create vocal formants (speech synthesis!) or other complex effects. outside this chip's specific implementation, the technique is known as "oscillator sync".
|
||||
|
||||
working with CSM is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU).
|
||||
|
||||
## chip config
|
||||
|
||||
the following options are available in the Chip Manager window:
|
||||
|
|
|
@ -121,6 +121,12 @@ SSG-EG is short for "Software-controlled Sound Generator – Envelope Generator"
|
|||
|
||||
a full guide to SSG-EG is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU), this [detailed technical explanation](https://gendev.spritesmind.net/forum/viewtopic.php?t=386&start=106), and this [chart of tunings](https://docs.google.com/spreadsheets/d/1HGKQ08CnLGAjA1U0StJFldod3FkQ3uq86rYy1VBIuZc/).
|
||||
|
||||
## CSM
|
||||
|
||||
CSM, or "Composite Sine Mode", involves a timer matching the frequency of the note in the "CSM Timer" channel. each time it triggers, it generates key-on and key-off commands to reset the phase of all operators on channel 2 and force their envelopes to restart at the release point. this can be used to create vocal formants (speech synthesis!) or other complex effects. outside this chip's specific implementation, the technique is known as "oscillator sync".
|
||||
|
||||
working with CSM is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU).
|
||||
|
||||
## chip config
|
||||
|
||||
the following options are available in the Chip Manager window:
|
||||
|
|
|
@ -120,6 +120,12 @@ SSG-EG is short for "Software-controlled Sound Generator – Envelope Generator"
|
|||
|
||||
a full guide to SSG-EG is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU), this [detailed technical explanation](https://gendev.spritesmind.net/forum/viewtopic.php?t=386&start=106), and this [chart of tunings](https://docs.google.com/spreadsheets/d/1HGKQ08CnLGAjA1U0StJFldod3FkQ3uq86rYy1VBIuZc/).
|
||||
|
||||
## CSM
|
||||
|
||||
CSM, or "Composite Sine Mode", involves a timer matching the frequency of the note in the "CSM Timer" channel. each time it triggers, it generates key-on and key-off commands to reset the phase of all operators on channel 3 and force their envelopes to restart at the release point. this can be used to create vocal formants (speech synthesis!) or other complex effects. outside this chip's specific implementation, the technique is known as "oscillator sync".
|
||||
|
||||
working with CSM is beyond the scope of this documentation. for more information, see this [brief SSG-EG and CSM video tutorial](https://www.youtube.com/watch?v=IKOR0TUlnWU).
|
||||
|
||||
## chip config
|
||||
|
||||
the following options are available in the Chip Manager window:
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 71 KiB |
|
@ -108,9 +108,8 @@ void DivEngine::loadPZI(SafeReader& reader, std::vector<DivSample*>& ret, String
|
|||
|
||||
for(int i = 0; i < PZI_BANK_SIZE; i++)
|
||||
{
|
||||
if (headers[i].start_pointer < MAX_SANITY_CAP && headers[i].sample_length < MAX_SANITY_CAP &&
|
||||
headers[i].loop_start < MAX_SANITY_CAP && headers[i].loop_end < MAX_SANITY_CAP &&
|
||||
headers[i].start_pointer > 0 && headers[i].sample_length > 0)
|
||||
if (headers[i].start_pointer < MAX_SANITY_CAP && headers[i].sample_length < MAX_SANITY_CAP &&
|
||||
headers[i].sample_length > 0)
|
||||
{
|
||||
DivSample* s = new DivSample;
|
||||
|
||||
|
@ -152,4 +151,4 @@ void DivEngine::loadPZI(SafeReader& reader, std::vector<DivSample*>& ret, String
|
|||
lastError=_("premature end of file");
|
||||
logE("premature end of file");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,7 +92,6 @@ const char* aboutLine[]={
|
|||
"AmigaX",
|
||||
"AquaDoesStuff",
|
||||
"AstralBlue",
|
||||
"AURORA*FIELDS",
|
||||
"Background2982",
|
||||
"battybeats",
|
||||
"bbqzzd",
|
||||
|
@ -143,10 +142,8 @@ const char* aboutLine[]={
|
|||
"LovelyA72",
|
||||
"LTVA",
|
||||
"LunaMoth",
|
||||
"Lunathir",
|
||||
"LVintageNerd",
|
||||
"Mahbod Karamoozian",
|
||||
"Martin Demsky",
|
||||
"masicbemester",
|
||||
"MelonadeM",
|
||||
"Miker",
|
||||
|
|
Loading…
Reference in a new issue