From e97f16e2b1ee722b51d4e7536895a254dbd9a6c7 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:04:31 -0400 Subject: [PATCH 01/12] Fix outdated documentation Will likely change other outdated parts of the docs soon --- papers/doc/1-intro/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/papers/doc/1-intro/README.md b/papers/doc/1-intro/README.md index c57297425..41cb32dc0 100644 --- a/papers/doc/1-intro/README.md +++ b/papers/doc/1-intro/README.md @@ -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 From e0e06c0897ca0d7bcdd7bda917fe08b78052e6cd Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:19:46 -0400 Subject: [PATCH 02/12] Add wavetable synth docs Surprised this wasn't added a while ago :p --- papers/doc/5-wave/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/papers/doc/5-wave/README.md b/papers/doc/5-wave/README.md index dacc88eaf..0c32106c7 100644 --- a/papers/doc/5-wave/README.md +++ b/papers/doc/5-wave/README.md @@ -2,4 +2,12 @@ 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. -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. +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 accomplisged 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 spund 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. From 4ab685bb9cb95a4ff9e66099845d4a2da712cf73 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:51:05 -0400 Subject: [PATCH 03/12] Update outdated sample docs --- papers/doc/6-sample/README.md | 36 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 87ddf0f8f..952db35e6 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -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 dev99, 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 (though the option is a bit hidden) + - 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". From 5d8861918bd905aca238535aaee106a8347222f8 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:55:03 -0400 Subject: [PATCH 04/12] PCE has the wavetable synth now --- papers/doc/4-instrument/pce.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/papers/doc/4-instrument/pce.md b/papers/doc/4-instrument/pce.md index 50ac335bf..ac0a6824b 100644 --- a/papers/doc/4-instrument/pce.md +++ b/papers/doc/4-instrument/pce.md @@ -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. From 145fc0d81370ea04f179e355875ae494a6e88617 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 02:58:56 -0400 Subject: [PATCH 05/12] Correct typo --- papers/doc/4-instrument/x1_010.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/x1_010.md b/papers/doc/4-instrument/x1_010.md index 8f3691ee6..e6cfff9e0 100644 --- a/papers/doc/4-instrument/x1_010.md +++ b/papers/doc/4-instrument/x1_010.md @@ -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 multiplied by denominator From ccc7e88e173ae9d78f4ab3ef9dc59ec6313848d7 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 03:02:11 -0400 Subject: [PATCH 06/12] The vrc6 has 2 inst types now --- papers/doc/4-instrument/vrc6.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/vrc6.md b/papers/doc/4-instrument/vrc6.md index a4ea64a18..87d784885 100644 --- a/papers/doc/4-instrument/vrc6.md +++ b/papers/doc/4-instrument/vrc6.md @@ -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 dev99) 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-64 instead of 0-32 + - has no duty cycle range From 29b4a4e0f07a6b2a2c25cea9d7dcd9d91d375ec5 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:18:50 -0700 Subject: [PATCH 07/12] it is not hidden --- papers/doc/6-sample/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index 952db35e6..d367b9506 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -14,7 +14,7 @@ As of Furnace dev99, the following sound chips have sample support: - 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 (though the option is a bit hidden) + - Atari Lynx - MSM6258 and MSM6295 - YMU759/MA-2 (last channel only) - QSound From acdb2b0fc3dc29c4da6cf2632c7e443a78a0eb4e Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:21:00 -0700 Subject: [PATCH 08/12] correct vrc6 volume --- papers/doc/4-instrument/vrc6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/vrc6.md b/papers/doc/4-instrument/vrc6.md index 87d784885..29cd65934 100644 --- a/papers/doc/4-instrument/vrc6.md +++ b/papers/doc/4-instrument/vrc6.md @@ -11,5 +11,5 @@ The VRC6 (regular) instrument editor consists of only three macros: This channel has its own instrument, a (currently, as of dev99) 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-64 instead of 0-32 + - has a volume range of 0-63 instead of 0-15. - has no duty cycle range From ed4710c206596cd1f2e45706f5c4775f1f13deeb Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:21:39 -0700 Subject: [PATCH 09/12] spund --- papers/doc/5-wave/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/5-wave/README.md b/papers/doc/5-wave/README.md index 0c32106c7..d2bbdcbb1 100644 --- a/papers/doc/5-wave/README.md +++ b/papers/doc/5-wave/README.md @@ -10,4 +10,4 @@ Furnace contains a mode for wavetable instruments that allows you to modulate or This is accomplisged 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 spund 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. +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. From 6fcb61818384595866f1aa12f0b829de7304898c Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:22:17 -0700 Subject: [PATCH 10/12] 0.6 :p --- papers/doc/4-instrument/vrc6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/vrc6.md b/papers/doc/4-instrument/vrc6.md index 29cd65934..bd87e050a 100644 --- a/papers/doc/4-instrument/vrc6.md +++ b/papers/doc/4-instrument/vrc6.md @@ -8,7 +8,7 @@ The VRC6 (regular) instrument editor consists of only three macros: ## VRC6 (saw) instrument editor -This channel has its own instrument, a (currently, as of dev99) one-of-a-kind thing in Furnace. +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. From 2087211aeab3a385199b5544d57df2ea6ed8885e Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 13:23:09 -0700 Subject: [PATCH 11/12] 0.6 :p part 2 --- papers/doc/6-sample/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/6-sample/README.md b/papers/doc/6-sample/README.md index d367b9506..0c038fdb9 100644 --- a/papers/doc/6-sample/README.md +++ b/papers/doc/6-sample/README.md @@ -6,7 +6,7 @@ In Furnace, these samples can be generated by importing a .wav (think of it as a ## supported systems -As of Furnace dev99, the following sound chips have sample support: +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) From 6381e98df6085dd15457c3205ba6c69e718692a1 Mon Sep 17 00:00:00 2001 From: nicco1690 <78063037+nicco1690@users.noreply.github.com> Date: Sat, 25 Jun 2022 16:37:50 -0700 Subject: [PATCH 12/12] divided --- papers/doc/4-instrument/x1_010.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/papers/doc/4-instrument/x1_010.md b/papers/doc/4-instrument/x1_010.md index e6cfff9e0..c76cbcb54 100644 --- a/papers/doc/4-instrument/x1_010.md +++ b/papers/doc/4-instrument/x1_010.md @@ -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] - sets the envelope to the channel's frequency multiplied by denominator +- [Auto envelope denominator] - sets the envelope to the channel's frequency divided by denominator