diff --git a/papers/doc/1-intro/README.md b/papers/doc/1-intro/README.md index a550aca1f..580d2ed77 100644 --- a/papers/doc/1-intro/README.md +++ b/papers/doc/1-intro/README.md @@ -7,6 +7,17 @@ It has a music tracker interface. think of a piano roll, or a table that scrolls Another core feature of Furnace is its windowing system, similar to that of GEMS or Deflemask, but with a few more features. +## Interface + +Furnace is built to have a user-friendly interface that is intentionally made so that it is quick and easy to get around when working in Furnace. +However, we understand that the interface may not be the easiest to learn, depending on how you learn, so there is documentation on it as well. + +See [2-interface](https://github.com/tildearrow/furnace/tree/master/papers/doc/2-interface) and [3-pattern](https://github.com/tildearrow/furnace/tree/master/papers/doc/3-pattern) to view said documentation. + +## Hexadecimal + +Furnace uses hexadecimal (abbreviated as "hex") numbers frequently. see [hex.md](this guide) for a crash course. + ## Sound generation Furnace generates sound from 3 different main types of sound sources. @@ -19,9 +30,3 @@ Wavetables only work in the sequencer if you bind them to an instrument. See [4- 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 - -Furnace is built to have a user-friendly interface that is intentionally made so that it is quick and easy to get around when working in Furnace. -However, we understand that the interface may not be the easiest to learn, depending on how you learn, so there is documentation on it as well. - -See [2-interface](https://github.com/tildearrow/furnace/tree/master/papers/doc/2-interface) and [3-pattern](https://github.com/tildearrow/furnace/tree/master/papers/doc/3-pattern) to view said documentation. diff --git a/papers/doc/1-intro/hex.md b/papers/doc/1-intro/hex.md new file mode 100644 index 000000000..7f3325d76 --- /dev/null +++ b/papers/doc/1-intro/hex.md @@ -0,0 +1,97 @@ +# hexadecimal + +the hexadecimal numeral system differs from the decimal system by having 16 digits rather than 10: + +``` +hex| decimal +---|--------- +`0`| 0 +`1`| 1 +`2`| 2 +`3`| 3 +`4`| 4 +`5`| 5 +`6`| 6 +`7`| 7 +`8`| 8 +`9`| 9 +`A`| 10 +`B`| 11 +`C`| 12 +`D`| 13 +`E`| 14 +`F`| 15 +``` + +when there is more than one digit, these are multiplied by 16, 256, 4096 and so on rather than 10, 100, 1000: + +``` +hex | decimal +----|--------- +`00`| 0 +`04`| 4 +`08`| 8 +`0F`| 15 +`10`| 16 +`11`| 17 +`12`| 18 +`13`| 19 +`20`| 32 +`30`| 48 +`40`| 64 +``` + +# hex to decimal + +for example, take hexadecimal number `AA`: + +``` + 2nd digit -\ /- 1st digit + A A + 16^1*10 = 16*10 = 160 + 10 = 170 +``` + +now for hexadecimal number `4C5F`: + +``` + + 3rd digit -\ /- 2nd digit + 4th digit -\ | | /- 1st digit + 4 C 5 F + | | | | + | | | 15 = 15 = 15 + + | | \16^1*5 = 16 * 5 = 80 + | \--- 16^2*12 = 256 * 12 = 3072 + \--------- 16^3*4 = 4096 * 4 = 16384 + ------- + = 19551 +``` + +# decimal to hex + +if it's less than 16, just memorize the table at the top of this document. + +otherwise find the power of 16 that is closest to the number you want to convert, but no larger than the number. +then divide, and take the remainder. +divide the remainder with the previous power of 16, until the divider is 1. + +for example, for the decimal number `220`: + +``` +220 ÷ 16 = 13 (r = 12) D + 12 ÷ 1 = 12 (stop here) C + += DC +``` + +now for decimal number `69420`: + +``` +69420 ÷ 65536 = 1 (r = 3884) 1 + 3884 ÷ 4096 = 0 (r = 3884) 0 + 3884 ÷ 256 = 15 (r = 44) F + 44 ÷ 16 = 2 (r = 12) 2 + 12 ÷ 1 = 12 (stop here) C + += 10F2C +```