From 09228cfd74f8d2bc4c798627b29e653b9d06b0a8 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 2 Feb 2024 22:36:15 -0500 Subject: [PATCH] more updates --- doc/4-instrument/README.md | 8 +++++--- doc/4-instrument/lynx.md | 14 ++++++++++++++ doc/4-instrument/powernoise.md | 2 +- doc/7-systems/README.md | 1 + 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/doc/4-instrument/README.md b/doc/4-instrument/README.md index 566a5b26b7..058fc7f7e2 100644 --- a/doc/4-instrument/README.md +++ b/doc/4-instrument/README.md @@ -74,6 +74,7 @@ the following instrument types are available: - [TED](ted.md) - for use with Commodore Plus/4 and Commodore 16's TED chip. - [C140](c140.md) - for use with C140 sample chip. - [C219](c219.md) - for use with C219 sample chip. +- [PowerNoise](powernoise.md) - for use with PowerNoise chip. ## macros @@ -91,9 +92,6 @@ each macro has the following parameters: - **Step Length (ticks)**: determines the number of ticks between macro steps. default is 1. - **Delay**: delays the macro until this many ticks have elapsed. default is 0. - the button is highlighted if either of these parameters is set to non-default values. -- release mode: determines how macro release (`===` or `REL` in the pattern) is handled: - - **Active**: jumps to release position on release. - - **Passive**: does not jump to release position. this will result in delay if release position has not been reached yet. ## macro types @@ -167,6 +165,10 @@ the sequence can be edited in the text input field at the very bottom. the follo in bitmask-style macros, the values are added up in binary and converted to decimal. +the release mode parameter determines how macro release (`===` or `REL` in the pattern) is handled: +- **Active**: jumps to release position on release. +- **Passive**: does not jump to release position. this will result in delay if release position has not been reached yet. + ### ADSR ![ADSR macro editor](macro-ADSR.png) diff --git a/doc/4-instrument/lynx.md b/doc/4-instrument/lynx.md index e4bb3bc78a..73cf937340 100644 --- a/doc/4-instrument/lynx.md +++ b/doc/4-instrument/lynx.md @@ -24,6 +24,20 @@ note that using samples on Lynx is CPU expensive! Atari Lynx generates sound using a 12-bit linear feedback shift register with configurable tap. nine separate bits can be enabled to be the source of feedback: 0, 1, 2, 3, 4, 5, 7, 10 and 11. to generate _any_ sound at least one bit _must_ be enabled. +### LFSR-based synthesis + +a linear-feedback shift register is one method used for random number generation. +it works by shifting a sequence of binary numbers (bits), taking the last bit into the output. then some of the bits are combined with others, doing a XOR (exclusive or) operation and then being pushed back. + +think of it as a conveyor carrying glass bottles. each bottle may be empty or carrying water. +the bottle at the end is taken. if there's water, then the output is 1. if it's empty, the output is 0. +depending on the LFSR configuration, many bottles at specific positions ("taps") are looked at. these are combined from left to right, two by two: +- if two bottles are identical, an empty bottle is pushed. +- if one bottle has water but the other is empty, a water bottle is pushed. +the process is repeated indefinitely. + +unlike PowerNoise, Lynx's taps are in fixed positions, but it has many of them. + ### square wave the LFSR is shifted at the rate define by sound pitch and generates square wave by setting channel output value to +volume or -volume, depending on the bit shifted in. diff --git a/doc/4-instrument/powernoise.md b/doc/4-instrument/powernoise.md index af921ebf6e..6b4909e5b2 100644 --- a/doc/4-instrument/powernoise.md +++ b/doc/4-instrument/powernoise.md @@ -15,7 +15,7 @@ depending on the LFSR configuration: - a bottle is pushed into the conveyor. it is either empty or filled with water depending on the bottle at a specific position in the conveyor (this is called a "tap"), or - two bottles at specific positions ("taps") are looked at and combined as follows: - if the bottles are identical, an empty bottle is pushed. - - if one bottle has water but the other is empty, a watee bottle is pushed. + - if one bottle has water but the other is empty, a water bottle is pushed. the process is repeated indefinitely. PowerNoise uses either one or two taps for the LFSR, configurable via the Control macro. diff --git a/doc/7-systems/README.md b/doc/7-systems/README.md index 4c1d09f988..8f5616fafc 100644 --- a/doc/7-systems/README.md +++ b/doc/7-systems/README.md @@ -90,6 +90,7 @@ this is the full list of chips that Furnace supports. - [PET](pet.md) - [Pokémon Mini](pokemini.md) - [POKEY](pokey.md) +- [PowerNoise](powernoise.md) - [PV-1000](pv1000.md) - [QSound](qsound.md) - [RF5C68/RF5C164](ricoh.md)