Merge branch 'master' into ZSMv1

This commit is contained in:
ZeroByteOrg 2022-06-29 13:14:15 -05:00
commit 40d67d7bb5
757 changed files with 4340 additions and 359 deletions

View file

@ -13,10 +13,10 @@ Furnace generates sound from 3 different main types of sound sources.
- Instruments are the most standard and most used type of sound source in Furnace.
The instrument format is how you can specify parameters and macros for certain channels on certain soundchips, as well as binding samples and wavetables to a format that you can sequence on the note grid.
See [4-instrument](https://github.com/tildearrow/furnace/tree/master/papers/doc/4-instrument) for more details.
- Wavetables are the way that you create custom waveform shapes for the HuC6280 sound chip.
- Wavetables are the way that you create custom waveform shapes for the HuC6280, Seta X1-010, WonderSwan, any PCM chip with wavetable synthesizer support, etc.
Wavetables only work in the sequencer if you bind them to an instrument. See [4-instrument](https://github.com/tildearrow/furnace/tree/master/papers/doc/4-instrument) and [5-wave](https://github.com/tildearrow/furnace/tree/master/papers/doc/5-wave) for more details.
- Samples are how you play back raw audio streams (samples) on certain channels, on certain soundchips, and in some cases, in certain modes.
To sequence a sample, you do not need to assign it to an instrument, however, to resample samples (change the speed of a sample), you need to bind it to an Amiga/Sample instrument.
To sequence a sample, you do not need to assign it to an instrument, however, to resample samples (change the speed of a sample), you need to bind it to a Sample instrument.
See [6-sample](https://github.com/tildearrow/furnace/tree/master/papers/doc/6-sample) and [4-instrument](https://github.com/tildearrow/furnace/tree/master/papers/doc/4-instrument) for more details.
## Interface/other

View file

@ -5,3 +5,5 @@ PCE instrument editor consists of only three macros, almost like TIA:
- [Volume] - volume sequence
- [Arpeggio] - pitch sequence
- [Waveform] - spicifies wavetables sequence
It also has wavetable synthesizer support, but unfortunately, it clicks a lot when in use on the HuC6280.

View file

@ -1,7 +1,15 @@
# VRC6 instrument editor
VRC6 instrument editor consists of only three macros:
The VRC6 (regular) instrument editor consists of only three macros:
- [Volume] - volume sequence
- [Arpeggio] - pitch sequence
- [Duty cycle] - specifies duty cycle for pulse wave channels
## VRC6 (saw) instrument editor
This channel has its own instrument, a (currently, as of 0.6) one-of-a-kind thing in Furnace.
The only differences from this instrument type from compared to the regular instrument are that it:
- has a volume range of 0-63 instead of 0-15.
- has no duty cycle range

View file

@ -8,4 +8,4 @@ X1-010 instrument editor consists of 7 macros.
- [Envelope Mode] - allows shaping an envelope
- [Envelope] - spicifies envelope shape sequence, it's also wavetable.
- [Auto envelope numerator] - sets the envelope to the channel's frequency multiplied by numerator
- [Auto envelope denominator] - ets the envelope to the channel's frequency multiplied by denominator
- [Auto envelope denominator] - sets the envelope to the channel's frequency divided by denominator

View file

@ -1,5 +1,13 @@
# wavetable editor
Wavetable synthizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy.
Wavetable synthesizers, in context of Furnace, are sound sources that operate on extremely short n-bit PCM streams. By extremely short, no more than 256 bytes. This amount of space is nowhere near enough to store an actual sampled sound, it allows certain amount of freedom to define a waveform shape. As of Furnace 0.5.8, wavetable editor affects PC Engine, WonderSwan and channel 3 of Game Boy.
Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If larger wave will be defined for these systems, it will be squashed to fit within the constraints of the system.
Furnace's wavetable editor is rather simple, you can draw the waveform using mouse or by pasting an MML bit stream in the input field. Maximum wave width (length) is 256 bytes, and maximum wave height (depth) is 256. NOTE: Game Boy, PCE, WonderSwan and Bubble System can handle max 32 byte waveforms, X1-010 can handle max 128 byte waveforms as of now, with 16-level height for GB, X1-010 Envelope, WS, Bubble System and N163, and 32-level height for PCE. If a larger wave is defined for these systems, it will be squashed to fit within the constraints of the system.
## wavetable synthesizer
Furnace contains a mode for wavetable instruments that allows you to modulate or combine 1 or 2 waves to create unique "animated" sounds. Think of it like a VST or a plugin, as it's basically an extension of regular wavetable soundchips that still allow it to run on real hardware.
This is accomplished by selecting a wave or two, a mode, and adjusting the settings as needed until you come up with a sound that you like, without taking up a load of space. This allows you to create unique sound effects or instruments, that, when used well, almost sound like they're Amiga samples.
Unfortunately, on chips like the HuC6280, you cannot use the wavetable synth to animate waveforms and have them sound smooth, as the chip resets the channel's phase when a waveform is changed while the channel is playing. On certain frequencies, this can be avoided, but not on most, unfortunately.

View file

@ -6,14 +6,25 @@ In Furnace, these samples can be generated by importing a .wav (think of it as a
## supported systems
As of Furnace 0.5.5, the following sound chips have sample support:
- NES/Ricoh 2A03 (PCM only, no DPCM, and only on channel 5)
- Sega Genesis/YM2612 (channel 6 only; but only if there exists a `1701` effect that gets played on or before a trigger for a sample)
As of Furnace 0.6, the following sound chips have sample support:
- NES/Ricoh 2A03 (with DPCM support and only on channel 5)
- Sega Genesis/YM2612 (channel 6 only; but only if there exists a `1701` effect that gets played on or before a trigger for a sample, or if you are using an instrument with Sample type)
- PC Engine/TurboGrafx 16/Huc6280 (same conditions as above)
- Amiga/Paula (on all channels AND resamplable, but you need to make an instrument with the Amiga format and tie it to a sample first)
- Arcade/SEGA PCM (same as above but you don't need to make an instrument for it and you have to use the `20xx` effect command to resample your samples)
- Neo Geo/Neo Geo EXT-Ch2 (on the last 7 channels only and can be resampled the same way as above)
- Seta/Allumer X1-010 (same as above, and both `1701` and `20xx` effect commands are affected on all 16 channels)
- Amiga/Paula (on all channels)
- Arcade/SEGA PCM (same as above)
- Neo Geo/Neo Geo CD (on the last 7 channels (6 if you are using Neo Geo CD) only and can be resampled the same way as above)
- Seta/Allumer X1-010 (same as YM2612)
- Atari Lynx
- MSM6258 and MSM6295
- YMU759/MA-2 (last channel only)
- QSound
- ZX Spectrum 48k
- RF5C68
- WonderSwan
- Tildearrow Sound Unit
- VERA (last channel only)
- Y8590 (last channel only)
- And a few more that I've forgotten to mention.
Furnace also has a feature where you can make an Amiga formarted instrument on the YM2612 and Huc6280 to resample a sample you have in the module.
@ -22,11 +33,12 @@ Furnace also has a feature where you can make an Amiga formarted instrument on t
You can actually tweak your samples in Furnace's sample editor, which can be accessed by clicking on `window` (at the top of the screen) then clicking on `sample editor`.
In there, you can modify certain data pertaining to your sample, such as the:
- volume of the sample (from 0% of the original to 200% of the original)
- pitch of the sample (from 1/6 of the original sample pitch to 6x the original sample pitch)
- and the sample rate of the sample (from 1KHz (1,000Hz) to 32KHz (32,000Hz)).
- volume of the sample in percentage, where 100% is the current level of the sample (note that you can distort it if you put it too high)
- the sample rate, from 0Hz (no sample movement) to 65535Hz (65.5kHz).
- what frequencies to filter, along with filter level/sweep and resonance options (much like the C64)
- and many more.
To apply the changes you made to a sample, just click the `apply` button at the bottom, near the preview button.
The changes you make will be applied as soon as you've committed them to your sample, but they can be undoed and redoed, just like text.
# tips
If you have a sample you wanna use that is about 44100 or anything over 32000Hz downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original wav. You can do this in Audacity by going to the Bottom Left of audacity (If you see "Project Rate (Hz)" you are there) and changing the project rate to 32000Hz and save the file to wav in Audacity using "File -> Export -> Export as WAV".
If you have a sample you wanna use that is about 44100 or anything over 32000Hz, downsample the sample to 32000Hz so that the pitch of the sample in Furnace stays like the original audio file. You can do this in Audacity by going to the bottom left of the screen (If you see "Project Rate (Hz)" you are there), change the project rate to 32000Hz and save the file to wav in Audacity using "File -> Export -> Export as WAV".

View file

@ -19,6 +19,7 @@ writers:
- nicco1690
- DeMOSic
- cam900
- host12prog
other:

View file

@ -25,10 +25,14 @@ the format has changed several times across versions. a `(>=VER)` indicates this
furthermore, an `or reserved` indicates this field is always present, but is reserved when the version condition is not met.
the `size of this block` fields represent the size of a block excluding the ID and the aforementioned field.
these fields are 0 in format versions prior to 100 (0.6pre1).
# format versions
the format versions are:
- 100: Furnace 0.6pre1
- 99: Furnace dev99
- 98: Furnace dev98
- 97: Furnace dev97
@ -130,7 +134,7 @@ size | description
size | description
-----|------------------------------------
4 | "INFO" block ID
4 | reserved
4 | size of this block
1 | time base (of first song)
1 | speed 1 (of first song)
1 | speed 2 (of first song)
@ -248,7 +252,7 @@ size | description
4f | A-4 tuning
1 | limit slides (>=36) or reserved
1 | linear pitch (>=36) or reserved
| - 0: non-linaer
| - 0: non-linear
| - 1: only pitch change (04xy/E5xx) linear
| - 2: full linear (>=94)
1 | loop modality (>=36) or reserved
@ -300,7 +304,7 @@ size | description
1 | new ins affects envelope (Game Boy) (>=72) or reserved
1 | ExtCh channel state is shared (>=78) or reserved
1 | ignore DAC mode change outside of intended channel (>=83) or reserved
1 | E1xx and E2xx also take priority over Slide00 (>=83) or reserved
1 | E1xy and E2xy also take priority over Slide00 (>=83) or reserved
1 | new Sega PCM (with macros and proper vol/pan) (>=84) or reserved
1 | weird f-num/block-based chip pitch slides (>=85) or reserved
1 | SN duty macro always resets phase (>=86) or reserved
@ -311,7 +315,8 @@ size | description
1 | new volume scaling strategy (>=99) or reserved
1 | volume macro still applies after end (>=99) or reserved
1 | broken outVol (>=99) or reserved
9 | reserved
1 | E1xy and E2xy stop on same note (>=100) or reserved
8 | reserved
--- | **virtual tempo data**
2 | virtual tempo numerator of first song (>=96) or reserved
2 | virtual tempo denominator of first song (>=96) or reserved
@ -332,7 +337,7 @@ the way it's currently done is really weird, but it provides for some backwards
size | description
-----|------------------------------------
4 | "SONG" block ID
4 | reserved
4 | size of this block
1 | time base
1 | speed 1
1 | speed 2
@ -386,7 +391,7 @@ notes:
size | description
-----|------------------------------------
4 | "INST" block ID
4 | reserved
4 | size of this block
2 | format version (see header)
1 | instrument type
| - 0: standard
@ -795,7 +800,7 @@ size | description
size | description
-----|------------------------------------
4 | "WAVE" block ID
4 | reserved
4 | size of this block
STR | wavetable name
4 | wavetable size
4 | wavetable min
@ -809,7 +814,7 @@ size | description
size | description
-----|------------------------------------
4 | "SMPL" block ID
4 | reserved
4 | size of this block
STR | sample name
4 | length
4 | rate
@ -841,7 +846,7 @@ size | description
size | description
-----|------------------------------------
4 | "PATR" block ID
4 | reserved
4 | size of this block
2 | channel
2 | pattern index
2 | subsong (>=95) or reserved

BIN
papers/screenshot2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 KiB