Compare commits
865 Commits
Author | SHA1 | Date |
---|---|---|
tildearrow | ec4063641a | |
tildearrow | 803c8b0582 | |
tildearrow | fc760eed43 | |
tildearrow | eb18b28928 | |
tildearrow | d42b503e81 | |
tildearrow | 2c0ae7c8bb | |
tildearrow | 5f0fe2c8f7 | |
tildearrow | 1da000b00c | |
tildearrow | c99899a002 | |
tildearrow | 55eeb241cf | |
tildearrow | ad7b4f61b5 | |
tildearrow | 2ca5856800 | |
tildearrow | 60df7e26f4 | |
tildearrow | ab7b26a2e7 | |
tildearrow | 7a78ec1b60 | |
tildearrow | 90980a3062 | |
tildearrow | 83c64aa4b4 | |
thacuber2a03 | 25a83bf1b9 | |
tildearrow | 7ea5f2de07 | |
tildearrow | f6db75fae1 | |
tildearrow | 19d0ed617a | |
tildearrow | 20ed22d6e8 | |
tildearrow | b26a76f343 | |
tildearrow | ef23b88ad3 | |
tildearrow | 716d42ee6d | |
tildearrow | 1c171ed7bd | |
tildearrow | c21f880e3e | |
tildearrow | 4f02f1f90b | |
tildearrow | 65cd433ac7 | |
tildearrow | 5a9402abcd | |
tildearrow | fa7405090e | |
tildearrow | be38b992e3 | |
tildearrow | addbc986f0 | |
Eknous | 914855d751 | |
Eknous-P | 2a370dbb1f | |
tildearrow | b315b84e31 | |
tildearrow | 35aeb51b79 | |
tildearrow | 05d5eb5ca3 | |
tildearrow | 879e770e58 | |
tildearrow | 7f35d06ccb | |
tildearrow | 43ef57390a | |
tildearrow | 4ad1ae78fa | |
tildearrow | a882d7bcf2 | |
tildearrow | 9caa2f38f4 | |
tildearrow | 5140acd51f | |
tildearrow | 9aacc706f1 | |
Electric Keet | fb3a3890d5 | |
Electric Keet | 29c2879397 | |
tildearrow | 8b3fc84b51 | |
tildearrow | 922800d864 | |
tildearrow | 274ce8a646 | |
tildearrow | d1b78f787b | |
tildearrow | 68787a4d8b | |
Electric Keet | 1ebf828743 | |
tildearrow | 7d605c9d76 | |
tildearrow | 80013089a2 | |
tildearrow | 5a688c58cb | |
tildearrow | 63dcacf33d | |
tildearrow | 426d4b44f0 | |
tildearrow | 6ac4529f3b | |
tildearrow | ff3cebfffd | |
tildearrow | fda2ca0645 | |
tildearrow | da259a33b7 | |
tildearrow | 5da54a7678 | |
tildearrow | 23a1fd4796 | |
tildearrow | 015899a43f | |
Electric Keet | 6fb738294a | |
tildearrow | d38ff59cb8 | |
tildearrow | f9237dc69c | |
tildearrow | d7f3be70c6 | |
tildearrow | de34b5c9c4 | |
Electric Keet | e65e79f192 | |
Electric Keet | da5d110e73 | |
tildearrow | 4abae260f4 | |
tildearrow | 61b0179da1 | |
tildearrow | 32ec87ca27 | |
tildearrow | eaac5cc224 | |
tildearrow | e7fe99f795 | |
tildearrow | ead19d6111 | |
tildearrow | ca51ee9f32 | |
tildearrow | fccb6aff6e | |
tildearrow | eff22ae7b9 | |
tildearrow | e6c52e34d1 | |
tildearrow | da7ad75afd | |
tildearrow | 87ae995ff9 | |
tildearrow | 8d887058ec | |
tildearrow | a5f351c232 | |
tildearrow | 9cb239438e | |
tildearrow | 35faa8c23c | |
tildearrow | 2fddd9e4d4 | |
tildearrow | 980c93aac4 | |
tildearrow | 044859f6d1 | |
Electric Keet | 2813e8e3b3 | |
tildearrow | cfd5131081 | |
tildearrow | decd2fde0f | |
tildearrow | f07ad0044b | |
tildearrow | 281598812c | |
Electric Keet | 0b5afcb8d6 | |
tildearrow | 74bd071873 | |
tildearrow | 2ea43329a2 | |
Electric Keet | ed05c16d95 | |
tildearrow | 684633aa1e | |
tildearrow | f5ac9b13b6 | |
tildearrow | 2357093bc8 | |
tildearrow | bd730cbeec | |
tildearrow | 347b3cf2b1 | |
tildearrow | 628ddc91ca | |
tildearrow | bcf877b7ca | |
tildearrow | 4e3de466ce | |
tildearrow | 23a70381c6 | |
tildearrow | 0e7dbf7b4a | |
tildearrow | 7ea7f72b45 | |
tildearrow | 284a4f39ad | |
Electric Keet | d65df2facd | |
Eknous-P | cd2d60ac58 | |
Electric Keet | ac7e05550a | |
Electric Keet | 7a6cbcc00d | |
Eknous | 06f2595861 | |
Eknous | 4078da6685 | |
tildearrow | 288441617b | |
tildearrow | 26f6f22ef5 | |
tildearrow | 859182bb08 | |
tildearrow | 80961354f7 | |
tildearrow | 886e311c0d | |
tildearrow | 17a88fda70 | |
Electric Keet | ba25910d48 | |
Eknous | 7a87702518 | |
tildearrow | 440cbff5e4 | |
tildearrow | 64e6cf12c2 | |
Eknous-P | 65fbdba831 | |
tildearrow | 0e19716dcd | |
tildearrow | f53bc88242 | |
tildearrow | 2d5fcf8aca | |
Eknous-P | 4eda4aeb39 | |
Eknous-P | fdd9b598a7 | |
Eknous | 8192a8e0f6 | |
tildearrow | dee7a1820d | |
tildearrow | 76746dcb28 | |
tildearrow | bd92347950 | |
tildearrow | 962943185d | |
tildearrow | 338b67da9c | |
tildearrow | 2c99bc9593 | |
Electric Keet | 9a9b69c319 | |
tildearrow | b6448e8c0d | |
tildearrow | 29651aabfd | |
Eknous-P | 6fa746f04d | |
Eknous-P | a6b08b5449 | |
Eknous-P | a7eb62a5d6 | |
Eknous | fb67357cf8 | |
Eknous-P | 19f7376337 | |
Eknous-P | 0dbe1b401f | |
Eknous-P | 9e405e86fa | |
Eknous-P | 3c38a79801 | |
Eknous-P | f0bcb1c06a | |
Eknous-P | ccdd5693c6 | |
freq-mod | b5d6971f93 | |
Eknous-P | 6250dd970f | |
Eknous-P | eef3dacc78 | |
Eknous-P | b993d4b58d | |
Eknous-P | 89921b1ff3 | |
Eknous-P | a832adeac5 | |
tildearrow | 3dd4f3e7e8 | |
tildearrow | 29fa249227 | |
tildearrow | a17f7249d6 | |
tildearrow | 324fce3b1c | |
tildearrow | 16bc35d75b | |
tildearrow | 2b0feefe28 | |
tildearrow | bd95a76a48 | |
tildearrow | 41316860a5 | |
tildearrow | 6c5ea4b950 | |
tildearrow | c4b23e8643 | |
tildearrow | 55d7a5e9bc | |
tildearrow | 91c3c04082 | |
tildearrow | c3b5004e66 | |
Electric Keet | f4c778d90e | |
Electric Keet | 98a95e83c6 | |
tildearrow | 06840de4c7 | |
tildearrow | 8a1ba5a544 | |
tildearrow | 2b007a03e0 | |
tildearrow | 4999d9a387 | |
tildearrow | f5f1a29486 | |
tildearrow | a31b847f32 | |
tildearrow | 9bf736a513 | |
tildearrow | 6e28a8b01c | |
Герман Семенов | 1cbb61ec27 | |
tildearrow | d4e60e0c03 | |
tildearrow | cb0a8396c4 | |
tildearrow | 95b0b25011 | |
tildearrow | 009b9f74df | |
tildearrow | d36b43415f | |
tildearrow | 972c66812b | |
tildearrow | d240066df8 | |
tildearrow | 31335b95c9 | |
Electric Keet | 01a5c6c4f9 | |
tildearrow | c9cbf133d6 | |
tildearrow | 62a1a383ee | |
tildearrow | b946c35fa7 | |
Electric Keet | 92773adb37 | |
tildearrow | e4e92f9af3 | |
tildearrow | 7e63692f60 | |
tildearrow | 5c71b64195 | |
tildearrow | f22910d8e2 | |
tildearrow | 577d6fd4d4 | |
Electric Keet | cae3fa43b2 | |
Electric Keet | ab76546f7a | |
Electric Keet | 4a9bf44b56 | |
tildearrow | 5d3aedbbc1 | |
tildearrow | cc8c79375d | |
tildearrow | e79f0b652a | |
tildearrow | 7ba5b172d5 | |
tildearrow | 251893c5f8 | |
tildearrow | 54934dcfc9 | |
tildearrow | b35235b82e | |
tildearrow | 97b6b39049 | |
tildearrow | 70f774312b | |
tildearrow | e1140c5015 | |
tildearrow | bcb8fdbf06 | |
tildearrow | 617ee5e324 | |
tildearrow | 18dc353392 | |
tildearrow | f3c438eee5 | |
Electric Keet | ce9a023993 | |
tildearrow | bb874d9415 | |
tildearrow | 2bf5392f7b | |
tildearrow | 4776eaed68 | |
Electric Keet | c4f3930e3c | |
Electric Keet | ef410b7d73 | |
Electric Keet | f4726190b7 | |
tildearrow | 510bcfb56d | |
tildearrow | 94d8076a58 | |
tildearrow | f5a881917f | |
tildearrow | 6ba8527cb6 | |
freq-mod | d0f498189c | |
tildearrow | 33d932f548 | |
tildearrow | d74172680f | |
tildearrow | 80a9677b0e | |
tildearrow | 91d7157b5d | |
tildearrow | 6faf80b5c6 | |
tildearrow | 2efbf93853 | |
Electric Keet | 4cf58b158e | |
Electric Keet | 9397f95499 | |
Electric Keet | 46a078d62a | |
Electric Keet | 13bb256075 | |
Electric Keet | 036aac3b80 | |
tildearrow | 9814d7dd88 | |
tildearrow | 5720e5670d | |
tildearrow | 7479296d54 | |
tildearrow | e3eea680d5 | |
tildearrow | f3167d2fc9 | |
tildearrow | 993c5904e2 | |
tildearrow | 396f51c75f | |
tildearrow | 6fe98f1502 | |
tildearrow | 1dd02dd389 | |
tildearrow | d68de019d6 | |
tildearrow | 75549bdd22 | |
Electric Keet | 3075a58d0d | |
Electric Keet | 10ea584857 | |
tildearrow | dba96812aa | |
Electric Keet | 6ac9fd3d91 | |
tildearrow | c8222fd491 | |
tildearrow | 14d3baae56 | |
tildearrow | 487065478d | |
tildearrow | f352162151 | |
tildearrow | 44781e9cac | |
tildearrow | b384367aa8 | |
tildearrow | c045fb5c26 | |
tildearrow | 23dc1353ec | |
tildearrow | d10c3dca4d | |
tildearrow | ffe8b5ed9c | |
tildearrow | 6dd682b9fc | |
tildearrow | cfaa220243 | |
tildearrow | 77fd6d6cd7 | |
Eknous-P | f8a497e549 | |
Eknous-P | eab7978556 | |
Eknous | cbbf766ae5 | |
tildearrow | c38b3ed399 | |
tildearrow | 6d5b313973 | |
Eknous-P | 3926c4276e | |
tildearrow | 2f08407a73 | |
Eknous-P | eb820eb9af | |
Eknous-P | 74e803d4e9 | |
Eknous-P | 12d7911d1a | |
tildearrow | f2dd169e3d | |
tildearrow | d32829b9e9 | |
Background | b023028117 | |
tildearrow | 075795e837 | |
tildearrow | ee743adf96 | |
tildearrow | 0aabfe52d8 | |
Eknous-P | 36e2444b11 | |
Eknous-P | 8da1085809 | |
tildearrow | edad084e5d | |
Electric Keet | 4985a4b5d0 | |
tildearrow | 22f92aafe4 | |
tildearrow | 5f5d1c2189 | |
Electric Keet | 8ca918bbc8 | |
Electric Keet | d6d6282675 | |
Electric Keet | cfd9b716c6 | |
freq-mod | c862764ad1 | |
Electric Keet | 1a207bf4a1 | |
Electric Keet | 7054bea9be | |
tildearrow | 6c44614279 | |
tildearrow | a1bc1a66a3 | |
tildearrow | c05efedee0 | |
tildearrow | f3c2f1a965 | |
tildearrow | 4707ef6979 | |
tildearrow | d8a069c360 | |
Electric Keet | cb5f59d02b | |
Electric Keet | 02ef1549dd | |
tildearrow | a008059b54 | |
Electric Keet | 520b772f35 | |
tildearrow | 10177ec43e | |
tildearrow | fccef9f0e3 | |
tildearrow | 823d64e68c | |
tildearrow | 363bc4be68 | |
Electric Keet | f09ef69da1 | |
tildearrow | 09540a2d53 | |
MooingLemur | 1d882b0ca7 | |
MooingLemur | 5d63b253ce | |
MooingLemur | fd2c17e4f9 | |
tildearrow | ddb0add67e | |
tildearrow | f328e33bbc | |
tildearrow | c49161e26c | |
Electric Keet | c89ddb3804 | |
Electric Keet | aeb26d3136 | |
Electric Keet | 2ef2416587 | |
tildearrow | b46dd7b7eb | |
tildearrow | 6ae8f615d9 | |
tildearrow | 1848484831 | |
tildearrow | 741d350fe2 | |
freq-mod | a79c82033c | |
freq-mod | 08d57e3ad5 | |
freq-mod | c4892410fd | |
freq-mod | 35652b72fd | |
freq-mod | 36b375b363 | |
freq-mod | 371d2196ab | |
tildearrow | c127fd0928 | |
tildearrow | 4f6cf877cd | |
tildearrow | 85f74fedb2 | |
tildearrow | 625ef6c2cf | |
tildearrow | 4e8a647d3c | |
Electric Keet | 4b81116359 | |
tildearrow | 83d5e28abe | |
tildearrow | 205faed6dd | |
Electric Keet | 4eaa999cd8 | |
Electric Keet | 7f3fcbf288 | |
freq-mod | bb1d71f975 | |
cam900 | c49bd177e9 | |
tildearrow | 511e3315a8 | |
tildearrow | bbeb3df9f6 | |
tildearrow | bc136c94c8 | |
tildearrow | cd0c8cfca9 | |
tildearrow | 987ca3ad11 | |
tildearrow | d7de177d26 | |
tildearrow | 4214bdee71 | |
tildearrow | fc16164dbd | |
tildearrow | 393af54938 | |
tildearrow | 908ecf411d | |
tildearrow | 1f10c31414 | |
tildearrow | 1e580d6936 | |
tildearrow | 6d1df99254 | |
tildearrow | 984a3b7450 | |
tildearrow | f12d601234 | |
tildearrow | 320d965f78 | |
tildearrow | 06243c9d9d | |
tildearrow | 94cb733c60 | |
tildearrow | 27e454e7aa | |
tildearrow | f2af2fbe76 | |
tildearrow | 5f2cfd4854 | |
tildearrow | 7be0079c62 | |
tildearrow | b58fe36356 | |
tildearrow | 3317866a00 | |
tildearrow | 9b91584d13 | |
tildearrow | d531b714a9 | |
MooingLemur | 681c1d9fd7 | |
MooingLemur | a1d74e7dc1 | |
tildearrow | fe8f94b2b2 | |
tildearrow | 6324a2a952 | |
tildearrow | a917c2f532 | |
tildearrow | 0073357cb7 | |
MooingLemur | 94383fae63 | |
MooingLemur | 2365321d46 | |
MooingLemur | 245fe1c092 | |
MooingLemur | 8006e40e26 | |
Electric Keet | d65c9f9345 | |
Electric Keet | e6bfc9e4db | |
Electric Keet | 9f53463ec2 | |
Electric Keet | 760ffee16f | |
Electric Keet | 73f8744a01 | |
cam900 | 0311d712b1 | |
cam900 | e0ca653462 | |
cam900 | 139ef4be29 | |
cam900 | 882b1c0aae | |
cam900 | 4d7d610f8c | |
tildearrow | a59b5753bb | |
tildearrow | d9cdb787ae | |
tildearrow | cc60dcf534 | |
tildearrow | be06fe2400 | |
tildearrow | 2a0d76563d | |
tildearrow | 7f75b642da | |
tildearrow | 457fb785b0 | |
tildearrow | d5776e02bb | |
tildearrow | 805c3ba7ac | |
tildearrow | e46fa7d88e | |
tildearrow | c6857b56f2 | |
tildearrow | dd0d6b940a | |
tildearrow | acc74df293 | |
tildearrow | 21d1dfefa1 | |
tildearrow | 903fb33350 | |
tildearrow | 7bb59e77cc | |
tildearrow | d5324e8897 | |
tildearrow | 3de0ee4e25 | |
tildearrow | 7d3b823996 | |
Electric Keet | 2e585e0ca6 | |
Electric Keet | 6c4f128185 | |
Electric Keet | 81dc0539f3 | |
Electric Keet | 3d2ae77708 | |
cam900 | 72d04777c0 | |
cam900 | 46b83833e1 | |
cam900 | 85aa3736ad | |
cam900 | 1e2cd8282a | |
cam900 | 14c5d94499 | |
tildearrow | 07abd1fd85 | |
cam900 | 54cd69aabf | |
tildearrow | 3b42abcf26 | |
tildearrow | bc3b98da99 | |
tildearrow | e561a90615 | |
freq-mod | d441356211 | |
tildearrow | fb4bb3e2d4 | |
freq-mod | de1dd96785 | |
cam900 | c34233cf4f | |
tildearrow | cc8b5d28a8 | |
Electric Keet | 8db16af621 | |
tildearrow | 3af2f8d2a4 | |
tildearrow | 0e5d11f9cd | |
tildearrow | 9d410dfe9c | |
Lunathir | 10ecc71a60 | |
Lunathir | 9ae28a67bf | |
Electric Keet | 0a7d957142 | |
Electric Keet | 3effd9e506 | |
Electric Keet | 1ea4452e9b | |
tildearrow | 9ba1eb2541 | |
Electric Keet | f66dd6e70b | |
tildearrow | 8ba6c4cf42 | |
tildearrow | a6ad79f686 | |
tildearrow | 4c158f0cd6 | |
tildearrow | 515a657b91 | |
Electric Keet | 5ba51df566 | |
tildearrow | 10615b9b5b | |
Electric Keet | aee459d8d3 | |
Eknous | aa39a041b5 | |
tildearrow | 49e799d576 | |
tildearrow | b7f7c362d2 | |
Electric Keet | 7c53d330e6 | |
tildearrow | 86c1104529 | |
Electric Keet | b7a751ccfa | |
Electric Keet | 543d18b8d5 | |
Electric Keet | 3f80231f24 | |
Electric Keet | 9340358eac | |
tildearrow | 03383cff80 | |
tildearrow | b0ce681875 | |
tildearrow | 2b78ea7abe | |
tildearrow | 1983529bdb | |
tildearrow | bf77b95ec9 | |
tildearrow | 1d4a1c8337 | |
tildearrow | 673ff6ebb6 | |
Electric Keet | 211a67e0bb | |
tildearrow | 13cfef02a7 | |
Electric Keet | 2444d2f58a | |
Electric Keet | 20dc44b800 | |
Electric Keet | b5161a8fe6 | |
Electric Keet | 3a93ebd21d | |
tildearrow | 4d476c0588 | |
tildearrow | 77e708dc57 | |
Electric Keet | ce0b6b454d | |
Electric Keet | ee4afa0da7 | |
freq-mod | 297334e882 | |
freq-mod | d9ba33abbf | |
freq-mod | d0330291ce | |
tildearrow | 2060f8e9eb | |
tildearrow | 2211f9cb71 | |
tildearrow | a54dd664e6 | |
Electric Keet | e7b4d46e03 | |
Electric Keet | 4693b10b88 | |
Electric Keet | 9b6ce68a22 | |
tildearrow | 358118f1f9 | |
Electric Keet | 5db924835b | |
tildearrow | cf1f741769 | |
Electric Keet | 235a58d110 | |
tildearrow | a192274e29 | |
tildearrow | eb9bd913e2 | |
tildearrow | fcba244c84 | |
tildearrow | 629d73f421 | |
Eknous | cafc6f391d | |
tildearrow | 69c4c58cc5 | |
tildearrow | c58eec5753 | |
Electric Keet | 3ca687553f | |
tildearrow | 3837fe59fb | |
Electric Keet | 06d3e8a4b3 | |
tildearrow | 23daabf5b9 | |
tildearrow | 747b5d19bd | |
tildearrow | 7d8c1b6efc | |
Electric Keet | ebf8ebf7c0 | |
Electric Keet | 14d1e83cd6 | |
Electric Keet | bf9f37e8d9 | |
Electric Keet | 0f4f1a1cf5 | |
Electric Keet | 11836ad079 | |
tildearrow | 537f90c3f1 | |
tildearrow | cf80eca19f | |
tildearrow | 411e138440 | |
tildearrow | 85d90b78ea | |
tildearrow | f1b560cce9 | |
tildearrow | 0c606103e3 | |
tildearrow | ed56fc274f | |
Electric Keet | ff51f97606 | |
Electric Keet | bafb78cb67 | |
cam900 | 71b76e3e88 | |
Eknous-P | 20ea5827cf | |
Electric Keet | 24e7d4b9ce | |
tildearrow | 4c13fe08d2 | |
tildearrow | 9420bbe058 | |
tildearrow | e9af48cf8b | |
tildearrow | 308af5a34e | |
freq-mod | 41f6a6e0a3 | |
freq-mod | 036ba996d5 | |
tildearrow | 954d91d073 | |
tildearrow | c29106aa3d | |
tildearrow | 1325664d25 | |
freq-mod | 873889fee0 | |
tildearrow | 423f2f5069 | |
freq-mod | 41c41859ed | |
tildearrow | 233431c2cc | |
tildearrow | 97d44d9a26 | |
tildearrow | bc7e267a85 | |
tildearrow | b83d8f3198 | |
tildearrow | 98a6080ca1 | |
Electric Keet | 79d8639075 | |
tildearrow | ac011a0fa1 | |
tildearrow | 9b1e137851 | |
Eknous | 1d04bb360a | |
tildearrow | 92493485a3 | |
Eknous-P | 0671df9916 | |
tildearrow | 1aef0079d1 | |
Eknous-P | 5fa4674826 | |
Eknous-P | 2c3bacbd3b | |
Eknous | 7822c53469 | |
Electric Keet | 8901098cb8 | |
tildearrow | 9d567d8cca | |
Electric Keet | 3e3f582afb | |
Eknous-P | 5c5ccbeb72 | |
Eknous-P | dedcff3ec2 | |
Eknous-P | dd00d3bc66 | |
Eknous | 9f5a924259 | |
Eknous-P | c6458efbbb | |
Eknous-P | d5b18ab080 | |
tildearrow | a7e9218562 | |
MooingLemur | 9dcd5d1a89 | |
MooingLemur | 7aa3aec20e | |
cam900 | 8ad7a5bf7d | |
Eknous | c9447dbff2 | |
Eknous-P | 0d33273a2e | |
Eknous-P | 620fc82247 | |
tildearrow | b41d8fe208 | |
tildearrow | c2f83a3aef | |
tildearrow | b186576e14 | |
tildearrow | 501d8da7af | |
tildearrow | 3fac80dad4 | |
Lunathir | 348b158e4b | |
tildearrow | a08a23fd13 | |
tildearrow | 1fa92c63d0 | |
tildearrow | afe703faf2 | |
tildearrow | cdbba2a6fc | |
bbbradsmith | fd27a41c08 | |
tildearrow | 1511b66015 | |
tildearrow | 677f7fe682 | |
tildearrow | 05d101e42e | |
tildearrow | 5c861ca36e | |
tildearrow | ec52eb524d | |
tildearrow | 6878e424c4 | |
Eknous-P | 60006dc862 | |
Electric Keet | 934f0b53e6 | |
Eknous-P | d19214045c | |
Eknous-P | 9fb5e4f17f | |
Eknous-P | 54d4097146 | |
Eknous | eab1cbee39 | |
Eknous-P | 1c94975a0a | |
cam900 | e0dc22a6f1 | |
cam900 | a3d54ca933 | |
Electric Keet | 1bd315b683 | |
Electric Keet | fe66d4da82 | |
Electric Keet | a99fb1ce45 | |
Electric Keet | afb0dafe2d | |
Electric Keet | 8f1c1ee751 | |
tildearrow | a3a004477d | |
tildearrow | d12c061393 | |
tildearrow | 4161dcd786 | |
tildearrow | 68a2c5f2f0 | |
tildearrow | b519713222 | |
tildearrow | 8aa0813bb9 | |
railzen7 | e2e3370fe8 | |
tildearrow | 85666a9d70 | |
tildearrow | 6694659695 | |
tildearrow | 3b60eace02 | |
Electric Keet | 0fe1a9d4c8 | |
Eknous-P | ceadf7a6c8 | |
Eknous | 695afcfc88 | |
tildearrow | ad4f5bee91 | |
tildearrow | 8e40901baa | |
tildearrow | c702922144 | |
tildearrow | d66985fae2 | |
tildearrow | 90264bb63e | |
tildearrow | ee07eafc12 | |
tildearrow | eff0a20741 | |
NyaongI | e4e299fd8c | |
tildearrow | 5bcde48978 | |
Marcin Puc | 6e2df831c7 | |
tildearrow | 859b7118d5 | |
tildearrow | 2342160e9b | |
tildearrow | d3781451d2 | |
tildearrow | e52e2da68b | |
Electric Keet | 58fdd84fde | |
nicco1690 | 27530034db | |
Eknous-P | 3a950619b0 | |
Electric Keet | f419f1b378 | |
Eknous-P | 6cb6cc2c41 | |
Eknous | 1e770d52b6 | |
tildearrow | 2321e7913c | |
tildearrow | 05a9496189 | |
tildearrow | 3936089c32 | |
freq-mod | 90dd0361f0 | |
tildearrow | 5c6aa5dc50 | |
tildearrow | 20418bb490 | |
cam900 | 3bafd4f6c0 | |
tildearrow | 8b63459c5f | |
Electric Keet | 4d7c0e48cb | |
Electric Keet | 3a9f2803d2 | |
tildearrow | 895921f257 | |
tildearrow | 0d2b7427a6 | |
Eknous-P | 7c5db82ab8 | |
Eknous-P | f274f88c42 | |
Eknous-P | 093df41ef9 | |
Eknous | 6cdfccec94 | |
Eknous-P | d0404c9e10 | |
Eknous-P | 4ef6acfab7 | |
tildearrow | cb825ca938 | |
Eknous-P | 4d2c388a69 | |
tildearrow | 2abe76d000 | |
cam900 | a675494fc2 | |
cam900 | 0889a8fe92 | |
tildearrow | 12a8abdf95 | |
tildearrow | e3e7ef7310 | |
tildearrow | ad88ce46ab | |
tildearrow | d411c9caba | |
tildearrow | 2f0f30f2f4 | |
tildearrow | 9f9b946522 | |
tildearrow | 7cc166beb0 | |
tildearrow | f2e978a5a7 | |
tildearrow | b087b28325 | |
Electric Keet | 5ba14cbfef | |
Eknous-P | 2c09b0c872 | |
Eknous-P | 0f5cf4a043 | |
Eknous | f1399aab84 | |
Electric Keet | d0a71f8162 | |
tildearrow | 08bd036193 | |
tildearrow | b941f58720 | |
tildearrow | 53f1f23ed8 | |
Electric Keet | 0c48d67ef6 | |
Electric Keet | 197c0a2cdc | |
tildearrow | d779b4c516 | |
Eknous-P | caf4ab5d7a | |
Electric Keet | aac1d272e3 | |
tildearrow | b42614189f | |
tildearrow | 01c33260bc | |
tildearrow | 63a50745ac | |
Electric Keet | 993452226a | |
tildearrow | df544e0b59 | |
Eknous-P | 407f916311 | |
Electric Keet | 4bab158eb9 | |
Electric Keet | 42d98fdd70 | |
cam900 | 1873a2a708 | |
Eknous | 6daf9b3d18 | |
tildearrow | 9d3b8621c5 | |
tildearrow | 09d226a9aa | |
tildearrow | ec9a3180b2 | |
Electric Keet | f0d51323af | |
tildearrow | 64aad1bbb6 | |
Electric Keet | c995f98fe7 | |
Electric Keet | e160fccd2a | |
Electric Keet | b2d3f979d7 | |
Electric Keet | 7dd36c3d5b | |
Eknous-P | c396c79ae0 | |
Eknous-P | 2d68b6a316 | |
Eknous | 67de26fb68 | |
Eknous-P | 1fcbc603e1 | |
Eknous-P | 30c41942a4 | |
Electric Keet | 49dbea2d88 | |
tildearrow | e07f9cd3f4 | |
tildearrow | 7cb1504215 | |
June | d6a24cd32a | |
tildearrow | 1c567224bf | |
tildearrow | 8543d327b5 | |
tildearrow | 175e4cd7b8 | |
tildearrow | 8f71c4f5cd | |
freq-mod | 22ceb93297 | |
freq-mod | 26d7babc49 | |
Eknous | edefb05a56 | |
tildearrow | c3d6d9c440 | |
tildearrow | 99e55136f3 | |
tildearrow | d096d5eb3c | |
Eknous | ce1444965a | |
Electric Keet | e544e47446 | |
Electric Keet | 77019ae9b5 | |
freq-mod | 007b99ac97 | |
freq-mod | 0093e5b9bc | |
freq-mod | f7b456e67c | |
freq-mod | fd9691e5da | |
freq-mod | 0d36abf3fc | |
tildearrow | 0461d220b8 | |
freq-mod | 7b2ae23a00 | |
freq-mod | 2d6ef5394c | |
freq-mod | 163d607cf3 | |
freq-mod | cc8b91e1bb | |
tildearrow | b807c51028 | |
freq-mod | ce92fde2bf | |
Electric Keet | 573f8d5b3b | |
Electric Keet | 7cfdad6367 | |
Electric Keet | ed7265645d | |
tildearrow | 9c97291e9c | |
cam900 | 7148f99b88 | |
tildearrow | e93f649bfb | |
tildearrow | 708c363635 | |
MooingLemur | 01ba81cbcc | |
tildearrow | 99be9cb337 | |
tildearrow | dbd200c279 | |
YohananDiamond | 7a3319b87a | |
YohananDiamond | f416bb3048 | |
cam900 | 3adacff028 | |
tildearrow | 90b76d20e3 | |
Eknous-P | 1fcf72b912 | |
bbbradsmith | a37260bcaa | |
bbbradsmith | edb48d47be | |
tildearrow | 09a3da50eb | |
NyaongI | 86739649d0 | |
tildearrow | f2b1e00df7 | |
tildearrow | 4bc2a28760 | |
Electric Keet | 189a6f8e1a | |
tildearrow | 641327634e | |
Electric Keet | dcb2460064 | |
tildearrow | 6ce45593cf | |
tildearrow | e8130caa52 | |
freq-mod | d213514bf2 | |
freq-mod | 39963bb607 | |
freq-mod | 0b0e2ac7c6 | |
freq-mod | 66a801eb8f | |
freq-mod | 1b93a28540 | |
YohananDiamond | f0e7be79d5 | |
YohananDiamond | 5fa2164ed5 | |
cam900 | b07ba72aa3 | |
tildearrow | 6bbb407863 | |
tildearrow | d93a3d17a9 | |
tildearrow | b7b4177251 | |
tildearrow | 9662653aac | |
tildearrow | f45df351a8 | |
tildearrow | 7524b42564 | |
tildearrow | 5619ae36c8 | |
tildearrow | 7d8a61d6dc | |
Lunathir | 6f53436388 | |
cam900 | 5e0fb78a90 | |
cam900 | 7aaa52297e | |
tildearrow | a32c706c8f | |
tildearrow | 4c77eaba80 | |
tildearrow | 90e37d6d25 | |
Lunathir | 6dae432279 | |
tildearrow | 39ca56bf28 | |
tildearrow | 47110d3492 | |
freq-mod | 9410d2ea41 | |
freq-mod | 6e7c84cd49 | |
freq-mod | 78af8fb92e | |
freq-mod | 86b82b21a8 | |
freq-mod | 26946508e5 | |
tildearrow | 5a9de0f3e6 | |
tildearrow | ecb9f6fbeb | |
tildearrow | 50dda44880 | |
tildearrow | 319ed04946 | |
tildearrow | 46ede984a7 | |
tildearrow | cf2c63caf7 | |
tildearrow | 0c5e58fa3e | |
tildearrow | 0b2de3b933 | |
freq-mod | 952578f15a | |
freq-mod | 251cf9f5ff | |
freq-mod | 74e441c7c5 | |
freq-mod | 07a7abed30 | |
freq-mod | 208528720b | |
freq-mod | 1313f098c6 | |
freq-mod | 659ca97876 | |
freq-mod | 6f6007e1be | |
freq-mod | fb0cdc1255 | |
freq-mod | f1bdde2193 | |
freq-mod | e399626e4e | |
freq-mod | 7e983059f1 | |
freq-mod | 8d1909a435 | |
tildearrow | 494572e4e5 | |
tildearrow | 62c5ec83f4 | |
tildearrow | 39b7e82e8a | |
tildearrow | 3c79fe9db0 | |
cam900 | 2a4e7267aa | |
cam900 | e38c50bbb1 | |
cam900 | 79a082c5d2 | |
bbbradsmith | 0444588cca | |
cam900 | ac8db58cbf | |
YohananDiamond | 7efc84592b | |
YohananDiamond | c887362a6f | |
cam900 | b1e2e33f2d | |
cam900 | d33d487ab9 | |
cam900 | 4f061db5a7 | |
cam900 | 6639bf2112 | |
cam900 | 8c4477c6dd | |
cam900 | 4efd3591d2 | |
cam900 | 7b49b4b8e0 | |
cam900 | a413868fcb | |
cam900 | 7402575d11 | |
YohananDiamond | a099c313ab | |
cam900 | 0c5a6d9760 | |
cam900 | 967cc86ec9 | |
tildearrow | 25eb720631 | |
cam900 | 0e072b62b3 | |
cam900 | 523e08ed5c | |
cam900 | b326087721 | |
cam900 | 213d613534 | |
cam900 | 36f542972c | |
cam900 | c69318b222 | |
cam900 | e1dbc16d96 | |
cam900 | f2ae73aee9 | |
YohananDiamond | 95e2d30f14 | |
cam900 | 74958c59fa | |
cam900 | 548aa5e6ac | |
cam900 | 5ab21f79a6 | |
cam900 | 2ebb8fc251 | |
cam900 | e8203f453b | |
cam900 | d9c64e7c8c | |
cam900 | 04f208c535 | |
cam900 | 40f3455357 | |
cam900 | 048728b496 | |
cam900 | 9b877764c4 | |
cam900 | f7768dafe3 | |
cam900 | f56e09606a | |
cam900 | 8f783e604a | |
cam900 | dee28d218e | |
cam900 | 09726e6290 | |
cam900 | 9c56c3d01b | |
cam900 | 2a43272c66 | |
cam900 | 2a881c9f66 | |
cam900 | 90fa977d23 | |
cam900 | d84d678929 | |
cam900 | b1070f531a | |
cam900 | c8c2704a99 | |
cam900 | e6b84280aa | |
cam900 | e694687fff | |
cam900 | 9ae12241a4 | |
cam900 | 371c82338f | |
cam900 | f6f5353987 | |
cam900 | 5cea63753c | |
cam900 | 3d345af1b8 | |
cam900 | 68964e384f | |
cam900 | 74e429fae2 | |
cam900 | f5c1273c2d | |
cam900 | e5d81bd694 |
|
@ -0,0 +1 @@
|
|||
*.sfd text
|
|
@ -1 +1,39 @@
|
|||
<!-- NOTICE: if you are going to write a suggestion, see the Discussions section instead. any suggestions posted in Issues will be closed. -->
|
||||
# IMPORTANT NOTICE
|
||||
|
||||
1. this section is exclusively for ISSUES related to Furnace (bugs, major annoyances and others).
|
||||
2. this section is NOT for Suggestions, Questions, Showcase or any other Discussions that do not meet the criteria and definition of an ISSUE.
|
||||
- see the Discussions section if you wish to submit these.
|
||||
3. check whether your issue has been reported already.
|
||||
- go to the Issues section, and use the search bar that appears on top of the Issues list.
|
||||
4. include the following information:
|
||||
- version of Furnace (help > about)
|
||||
- operating system (and version)
|
||||
- whether you have downloaded Furnace, or built it from source.
|
||||
5. provide these details if you believe the issue is operating system and/or computer-specific:
|
||||
- CPU model
|
||||
- Windows: go to Control Panel > System.
|
||||
- macOS: go to the Apple menu and select About This Mac...
|
||||
- Linux: use `lscpu` or `cat /proc/cpuinfo`.
|
||||
- graphics card (and driver version)
|
||||
- Windows: open `dxdiag` and observe the Render tab.
|
||||
- macOS: go to the Apple menu and select About This Mac...
|
||||
- this information is not always shown.
|
||||
- this information is not necessary if you use an Apple silicon Mac.
|
||||
- Linux: use `glxinfo | grep OpenGL`.
|
||||
6. if your issue is an abnormal program termination (a "Crash"), you must provide additional details:
|
||||
- the furnace_crash.txt file that is created by Furnace after a Crash. this file is located in the following paths:
|
||||
- Windows: `C:\Users\<username>\furnace_crash.txt`
|
||||
- Linux/other: `/tmp/furnace_crash.txt`
|
||||
- on macOS this file is not generated. you may retrieve information about the Crash by clicking on "Report..." or "Show Details" in the "quit unexpectedly" dialog that appears following the Crash.
|
||||
- make sure to remove any personal information for privacy reasons.
|
||||
- be sure to select "Don't Send" afterwards.
|
||||
- the furnace.log file located in:
|
||||
- Windows: `C:\Users\<username>\AppData\Roaming\furnace\furnace.log`
|
||||
- macOS: `~/Library/Application Support/furnace/furnace.log`
|
||||
- Linux: `~/.config/furnace/furnace.log`
|
||||
- make sure to remove any personal information for privacy reasons.
|
||||
|
||||
BY SUBMITTING A TICKET, YOU HEREBY AGREE TO COMPLY WITH THESE TERMS.
|
||||
FAILURE TO DO SO MAY RESULT IN YOUR TICKET BEING DECLARED VOID.
|
||||
|
||||
***END OF NOTICE*** --- REMOVE THIS NOTICE AFTER READING!
|
||||
|
|
|
@ -6,6 +6,7 @@ release/
|
|||
t/
|
||||
winbuild/
|
||||
win32build/
|
||||
xpbuild/
|
||||
macbuild/
|
||||
linuxbuild/
|
||||
*.swp
|
||||
|
@ -26,3 +27,5 @@ CMakePresets.json
|
|||
extern/imgui_patched/examples/
|
||||
src/asm/68k/amigatest/*.bin
|
||||
src/asm/68k/amigatest/player
|
||||
res/binary_to_compressed_c
|
||||
res/binary_to_compressed_c.exe
|
||||
|
|
|
@ -12,3 +12,6 @@
|
|||
[submodule "extern/adpcm"]
|
||||
path = extern/adpcm
|
||||
url = https://github.com/superctr/adpcm
|
||||
[submodule "extern/portaudio"]
|
||||
path = extern/portaudio
|
||||
url = https://github.com/PortAudio/portaudio.git
|
||||
|
|
|
@ -27,6 +27,7 @@ include(TestBigEndian)
|
|||
|
||||
if (ANDROID)
|
||||
set(USE_RTMIDI_DEFAULT OFF)
|
||||
set(WITH_PORTAUDIO_DEFAULT OFF)
|
||||
set(USE_BACKWARD_DEFAULT OFF)
|
||||
find_library(TERMUX rt)
|
||||
if (TERMUX)
|
||||
|
@ -34,6 +35,7 @@ if (ANDROID)
|
|||
endif()
|
||||
else()
|
||||
set(USE_RTMIDI_DEFAULT ON)
|
||||
set(WITH_PORTAUDIO_DEFAULT ON)
|
||||
if (WIN32 OR APPLE)
|
||||
set(USE_BACKWARD_DEFAULT ON)
|
||||
else()
|
||||
|
@ -78,6 +80,7 @@ option(USE_SDL2 "Build with SDL2. Required to build with GUI." ${USE_SDL2_DEFAUL
|
|||
option(USE_SNDFILE "Build with libsndfile. Required in order to work with audio files." ${USE_SNDFILE_DEFAULT})
|
||||
option(USE_BACKWARD "Use backward-cpp to print a backtrace on crash/abort." ${USE_BACKWARD_DEFAULT})
|
||||
option(WITH_JACK "Whether to build with JACK support. Auto-detects if JACK is available" ${WITH_JACK_DEFAULT})
|
||||
option(WITH_PORTAUDIO "Whether to build with PortAudio for audio output." ${WITH_PORTAUDIO_DEFAULT})
|
||||
option(WITH_RENDER_SDL "Whether to build with the SDL_Renderer render backend." ${WITH_RENDER_SDL_DEFAULT})
|
||||
option(WITH_RENDER_OPENGL "Whether to build with the OpenGL render backend." ${WITH_RENDER_OPENGL_DEFAULT})
|
||||
option(WITH_RENDER_DX11 "Whether to build with the DirectX 11 render backend." ${WITH_RENDER_DX11_DEFAULT})
|
||||
|
@ -85,6 +88,7 @@ option(USE_GLES "Use OpenGL ES for the OpenGL render backend." ${USE_GLES_DEFAUL
|
|||
option(SYSTEM_FFTW "Use a system-installed version of FFTW instead of the vendored one" OFF)
|
||||
option(SYSTEM_FMT "Use a system-installed version of fmt instead of the vendored one" OFF)
|
||||
option(SYSTEM_LIBSNDFILE "Use a system-installed version of libsndfile instead of the vendored one" OFF)
|
||||
option(SYSTEM_PORTAUDIO "Use a system-installed version of PortAudio instead of the vendored one" OFF)
|
||||
option(SYSTEM_RTMIDI "Use a system-installed version of RtMidi instead of the vendored one" OFF)
|
||||
option(SYSTEM_ZLIB "Use a system-installed version of zlib instead of the vendored one" OFF)
|
||||
option(SYSTEM_SDL2 "Use a system-installed version of SDL2 instead of the vendored one" ${SYSTEM_SDL2_DEFAULT})
|
||||
|
@ -204,6 +208,27 @@ else()
|
|||
message(STATUS "Not using libsndfile")
|
||||
endif()
|
||||
|
||||
if (WITH_PORTAUDIO)
|
||||
if (SYSTEM_PORTAUDIO)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(PORTAUDIO REQUIRED portaudio)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS ${PORTAUDIO_INCLUDE_DIRS})
|
||||
list(APPEND DEPENDENCIES_COMPILE_OPTIONS ${PORTAUDIO_CFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LIBRARIES ${PORTAUDIO_LIBRARIES})
|
||||
list(APPEND DEPENDENCIES_LIBRARY_DIRS ${PORTAUDIO_LIBRARY_DIRS})
|
||||
list(APPEND DEPENDENCIES_LINK_OPTIONS ${PORTAUDIO_LDFLAGS_OTHER})
|
||||
list(APPEND DEPENDENCIES_LEGACY_LDFLAGS ${PORTAUDIO_LDFLAGS})
|
||||
message(STATUS "Using system-installed PortAudio")
|
||||
else()
|
||||
set(PA_BUILD_SHARED_LIBS OFF CACHE BOOL "Build dynamic library" FORCE)
|
||||
# don't - Furnace has its own implementation
|
||||
set(PA_USE_JACK OFF CACHE BOOL "Enable support for JACK Audio Connection Kit" FORCE)
|
||||
add_subdirectory(extern/portaudio EXCLUDE_FROM_ALL)
|
||||
list(APPEND DEPENDENCIES_LIBRARIES PortAudio)
|
||||
message(STATUS "Using vendored PortAudio")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (USE_RTMIDI)
|
||||
if (SYSTEM_RTMIDI)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
@ -283,6 +308,13 @@ if (USE_SDL2)
|
|||
# If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses.
|
||||
# This should probably go in a FAQ.
|
||||
set(SDL_LIBC ON CACHE BOOL "Tell SDL that we want it to use our C runtime (required for proper static linking)" FORCE)
|
||||
|
||||
# https://github.com/tildearrow/furnace/issues/1237
|
||||
# enabling this will result in SDL finding the Direct3D headers, forcing _WIN32_WINNT to an undesirable value (which makes the Wine headers define GetTickCount64)
|
||||
if (SUPPORT_XP)
|
||||
set(SDL_RENDER_D3D OFF CACHE BOOL "Enable the Direct3D render driver" FORCE)
|
||||
endif()
|
||||
|
||||
add_subdirectory(extern/SDL EXCLUDE_FROM_ALL)
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_SDL2)
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include)
|
||||
|
@ -338,6 +370,14 @@ else()
|
|||
message(STATUS "Building without JACK support")
|
||||
endif()
|
||||
|
||||
if (WITH_PORTAUDIO)
|
||||
list(APPEND AUDIO_SOURCES src/audio/pa.cpp)
|
||||
message(STATUS "Building with PortAudio")
|
||||
list(APPEND DEPENDENCIES_DEFINES HAVE_PA)
|
||||
else()
|
||||
message(STATUS "Building without PortAudio")
|
||||
endif()
|
||||
|
||||
if (USE_RTMIDI)
|
||||
list(APPEND AUDIO_SOURCES src/audio/rtmidi.cpp)
|
||||
message(STATUS "Building with RtMidi")
|
||||
|
@ -498,6 +538,10 @@ src/engine/platform/sound/sm8521.c
|
|||
|
||||
src/engine/platform/sound/d65modified.c
|
||||
|
||||
src/engine/platform/sound/ted-sound.c
|
||||
|
||||
src/engine/platform/sound/c140_c219.c
|
||||
|
||||
src/engine/platform/oplAInterface.cpp
|
||||
src/engine/platform/ym2608Interface.cpp
|
||||
src/engine/platform/ym2610Interface.cpp
|
||||
|
@ -506,7 +550,9 @@ src/engine/blip_buf.c
|
|||
src/engine/brrUtils.c
|
||||
src/engine/safeReader.cpp
|
||||
src/engine/safeWriter.cpp
|
||||
src/engine/workPool.cpp
|
||||
src/engine/cmdStream.cpp
|
||||
src/engine/cmdStreamOps.cpp
|
||||
src/engine/config.cpp
|
||||
src/engine/configEngine.cpp
|
||||
src/engine/dispatchContainer.cpp
|
||||
|
@ -514,6 +560,7 @@ src/engine/engine.cpp
|
|||
src/engine/export.cpp
|
||||
src/engine/fileOps.cpp
|
||||
src/engine/fileOpsIns.cpp
|
||||
src/engine/fileOpsSample.cpp
|
||||
src/engine/filter.cpp
|
||||
src/engine/instrument.cpp
|
||||
src/engine/macroInt.cpp
|
||||
|
@ -524,6 +571,7 @@ src/engine/song.cpp
|
|||
src/engine/sysDef.cpp
|
||||
src/engine/wavetable.cpp
|
||||
src/engine/waveSynth.cpp
|
||||
src/engine/wavOps.cpp
|
||||
src/engine/vgmOps.cpp
|
||||
src/engine/zsmOps.cpp
|
||||
src/engine/zsm.cpp
|
||||
|
@ -588,6 +636,9 @@ src/engine/platform/k007232.cpp
|
|||
src/engine/platform/ga20.cpp
|
||||
src/engine/platform/sm8521.cpp
|
||||
src/engine/platform/pv1000.cpp
|
||||
src/engine/platform/k053260.cpp
|
||||
src/engine/platform/ted.cpp
|
||||
src/engine/platform/c140.cpp
|
||||
src/engine/platform/pcmdac.cpp
|
||||
src/engine/platform/dummy.cpp
|
||||
|
||||
|
@ -635,6 +686,7 @@ src/gui/font_proggyClean.cpp
|
|||
src/gui/font_ptMono.cpp
|
||||
src/gui/font_unifont.cpp
|
||||
src/gui/font_icon.cpp
|
||||
src/gui/font_furicon.cpp
|
||||
src/gui/fonts.cpp
|
||||
|
||||
src/gui/image_icon.cpp
|
||||
|
@ -695,6 +747,7 @@ src/gui/subSongs.cpp
|
|||
src/gui/sysConf.cpp
|
||||
src/gui/sysEx.cpp
|
||||
src/gui/sysManager.cpp
|
||||
src/gui/sysPartNumber.cpp
|
||||
src/gui/sysPicker.cpp
|
||||
src/gui/tutorial.cpp
|
||||
src/gui/util.cpp
|
||||
|
@ -805,7 +858,6 @@ if (BUILD_GUI)
|
|||
list(APPEND USED_SOURCES ${GUI_SOURCES})
|
||||
list(APPEND DEPENDENCIES_INCLUDE_DIRS
|
||||
extern/imgui_patched
|
||||
extern/imgui_conf
|
||||
extern/imgui_patched/backends
|
||||
extern/IconFontCppHeaders
|
||||
extern/igfd
|
||||
|
@ -877,7 +929,7 @@ else()
|
|||
endif()
|
||||
|
||||
target_include_directories(furnace SYSTEM PRIVATE ${DEPENDENCIES_INCLUDE_DIRS})
|
||||
target_compile_definitions(furnace PRIVATE ${DEPENDENCIES_DEFINES} IMGUI_USER_CONFIG="imconfig_fur.h")
|
||||
target_compile_definitions(furnace PRIVATE ${DEPENDENCIES_DEFINES})
|
||||
target_compile_options(furnace PRIVATE ${DEPENDENCIES_COMPILE_OPTIONS})
|
||||
target_link_libraries(furnace PRIVATE ${DEPENDENCIES_LIBRARIES})
|
||||
if (PKG_CONFIG_FOUND AND (SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYSTEM_SDL2 OR SYSTEM_RTMIDI OR WITH_JACK))
|
||||
|
|
|
@ -81,6 +81,10 @@ additional guidelines:
|
|||
- on a switch block, **always** put `default` last and not in any other position.
|
||||
- I have fear of some C/C++ compilers ignoring the rest of cases upon hitting default.
|
||||
|
||||
## Do NOT Force-Push after submitting Pull Request
|
||||
|
||||
if you do so, your pull request will be closed.
|
||||
|
||||
## Demo Songs
|
||||
|
||||
just put your demo song in `demos/`! be noted there are some guidelines:
|
||||
|
|
|
@ -48,8 +48,10 @@ for other operating systems, you may [build the source](#developer-info).
|
|||
- Ricoh RF5C68 used in Sega CD and FM Towns
|
||||
- OKI MSM6258 and MSM6295
|
||||
- Konami K007232
|
||||
- Konami K053260
|
||||
- Irem GA20
|
||||
- Ensoniq ES5506
|
||||
- Namco C140
|
||||
- wavetable chips:
|
||||
- HuC6280 used in PC Engine
|
||||
- Konami Bubble System WSG
|
||||
|
@ -73,6 +75,7 @@ for other operating systems, you may [build the source](#developer-info).
|
|||
- QuadTone engine
|
||||
- Pokémon Mini
|
||||
- Commodore PET
|
||||
- TED used in Commodore Plus/4
|
||||
- Casio PV-1000
|
||||
- TIA used in Atari 2600
|
||||
- POKEY used in Atari 8-bit computers
|
||||
|
@ -124,7 +127,7 @@ for other operating systems, you may [build the source](#developer-info).
|
|||
# quick references
|
||||
|
||||
- **discussion**: see the [Discussions](https://github.com/tildearrow/furnace/discussions) section, the [official Revolt](https://rvlt.gg/GRPS6tmc) or the [official Discord server](https://discord.gg/EfrwT2wq7z).
|
||||
- **help**: check out the [documentation](doc/README.md). it's about 80% complete.
|
||||
- **help**: check out the [documentation](doc/README.md). it's about 90% complete.
|
||||
|
||||
## packages
|
||||
|
||||
|
@ -136,6 +139,7 @@ some people have provided packages for Unix/Unix-like distributions. here's a li
|
|||
- **FreeBSD**: [a package in ports](https://www.freshports.org/audio/furnace/) is available courtesy of ehaupt (warning: 0.5.8!).
|
||||
- **Nix**: [package](https://search.nixos.org/packages?channel=unstable&show=furnace&from=0&size=50&sort=relevance&type=packages&query=furnace) thanks to OPNA2608.
|
||||
- **openSUSE**: [a package](https://software.opensuse.org/package/furnace) is available, courtesy of fpesari.
|
||||
- **Void Linux**: [furnace](https://github.com/void-linux/void-packages/tree/master/srcpkgs/furnace) is available in the official repository.
|
||||
|
||||
---
|
||||
# developer info
|
||||
|
@ -248,6 +252,7 @@ Available options:
|
|||
| `USE_SNDFILE` | `ON` | Build with libsndfile (required in order to work with audio files) |
|
||||
| `USE_BACKWARD` | `ON` | Use backward-cpp to print a backtrace on crash/abort |
|
||||
| `WITH_JACK` | `ON` if system-installed JACK detected, otherwise `OFF` | Whether to build with JACK support. Auto-detects if JACK is available |
|
||||
| `WITH_PORTAUDIO` | `ON` | Whether to build with PortAudio. |
|
||||
| `SYSTEM_FFTW` | `OFF` | Use a system-installed version of FFTW instead of the vendored one |
|
||||
| `SYSTEM_FMT` | `OFF` | Use a system-installed version of fmt instead of the vendored one |
|
||||
| `SYSTEM_LIBSNDFILE` | `OFF` | Use a system-installed version of libsndfile instead of the vendored one |
|
||||
|
|
|
@ -15,8 +15,8 @@ android {
|
|||
}
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 162
|
||||
versionName "0.6pre7"
|
||||
versionCode 169
|
||||
versionName "0.6pre9"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.tildearrow.furnace"
|
||||
android:versionCode="162"
|
||||
android:versionName="0.6pre7"
|
||||
android:versionCode="169"
|
||||
android:versionName="0.6pre9"
|
||||
android:installLocation="auto">
|
||||
|
||||
<!-- OpenGL ES 2.0 -->
|
||||
|
|
|
@ -19,3 +19,11 @@ due to its nature of being feature-packed, it may be technical and somewhat diff
|
|||
it also has a flexible windowing system which you may move around and organize.
|
||||
|
||||
see [2-interface](../2-interface/README.md) and [3-pattern](../3-pattern/README.md) for more information.
|
||||
|
||||
once familiar with the tracker, look to [9-guides](../9-guides/README.md) for useful techniques.
|
||||
|
||||
|
||||
|
||||
# links
|
||||
|
||||
[Furnace Tutorials](https://youtube.com/playlist?list=PLCELB6AsTZUnwv0PC5AAGHjvg47F44YQ1): video tutorials created by Spinning Square Waves.
|
|
@ -15,22 +15,22 @@ The **[pattern view](../3-pattern/README.md)** is like a spreadsheet that displa
|
|||
## structure
|
||||
|
||||
The **order list** is a smaller spreadsheet showing the overall song structure.
|
||||
- A song is made up of a list of **orders**.
|
||||
- An **order** is a set of numbered **patterns** used for each channel.
|
||||
- A song is made up of a list of orders.
|
||||
- An **order** is a set of numbered patterns used for each channel.
|
||||
- Each channel has its own unique list of patterns.
|
||||
- Each pattern contains note and effect data for that channel only.
|
||||
- Each **pattern** contains note and effect data for that channel only.
|
||||
- Patterns may be used multiple times in the order list. Changing a pattern's data in one order will affect the same pattern used in other orders.
|
||||
|
||||
## time
|
||||
|
||||
- Each pattern is made of the same number of **rows** as seen in the tracker view.
|
||||
- During playback, Each row lasts a number of **ticks** determined by its **speed** value.
|
||||
- A tick is the smallest measure of time to which all note, effect, and macro times are quantized.
|
||||
- Each pattern is made of the same number of rows as seen in the tracker view.
|
||||
- During playback, each **row** lasts a number of ticks determined by its **speed** value.
|
||||
- A **tick** is the smallest measure of time to which all note, effect, and macro times are quantized.
|
||||
|
||||
## sound
|
||||
|
||||
Different chips have different capabilities. Even within the same chip, each channel may have its own ways of making sound.
|
||||
- Some channels use one or more waveform **generators** (sine, square, noise...) to build up a sound.
|
||||
- Of special note are **[FM (frequency modulation)](../4-instrument/fm.md)** channels, which use a number of generators called **operators** that can interact to make very complex sounds.
|
||||
- Some channels use **[samples](../6-sample/README.md)** - recordings of sounds, often with defined loop points to allow a note to sustain.
|
||||
- Some channels use **[samples](../6-sample/README.md)** which are recordings of sounds, often with defined loop points to allow a note to sustain.
|
||||
- Some channels use **[wavetables](../5-wave/README.md)**, which are like very short samples of fixed length that automatically loop.
|
|
@ -95,3 +95,24 @@ now for decimal number `69420`:
|
|||
|
||||
= 10F2C
|
||||
```
|
||||
|
||||
# hex-decimal table
|
||||
|
||||
hex | `0` | `1` | `2` | `3` | `4` | `5` | `6` | `7` | `8` | `9` | `A` | `B` | `C` | `D` | `E` | `F`
|
||||
-----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:|----:
|
||||
`00` | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
|
||||
`10` | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31
|
||||
`20` | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47
|
||||
`30` | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63
|
||||
`40` | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79
|
||||
`50` | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95
|
||||
`60` | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111
|
||||
`70` | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127
|
||||
`80` | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143
|
||||
`90` | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159
|
||||
`A0` | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175
|
||||
`B0` | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191
|
||||
`C0` | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207
|
||||
`D0` | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223
|
||||
`E0` | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239
|
||||
`F0` | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255
|
||||
|
|
|
@ -6,18 +6,25 @@ the default layout of Furnace is depicted below.
|
|||
|
||||
![interface](interface1.png)
|
||||
|
||||
primary topics:
|
||||
## general info
|
||||
|
||||
- [UI components](components.md): recommended reading for all!
|
||||
- [global keyboard shortcuts](keyboard.md)
|
||||
- [menu bar](menu-bar.md)
|
||||
|
||||
## primary windows
|
||||
|
||||
- [order list](order-list.md)
|
||||
- [play/edit controls](play-edit-controls.md)
|
||||
- [instrument/wavetable/sample list](asset-list.md)
|
||||
- [song information](song-info.md)
|
||||
- [effect list window](effect-list-window.md)
|
||||
- [pattern view](../3-pattern/README.md)
|
||||
- [instrument editor](../4-instrument/README.md)
|
||||
- [wavetable editor](../5-wave/README.md)
|
||||
- [sample editor](../6-sample/README.md)
|
||||
|
||||
advanced topics:
|
||||
## advanced topics
|
||||
|
||||
- [mixer](../8-advanced/mixer.md)
|
||||
- [grooves](../8-advanced/grooves.md)
|
||||
|
@ -34,9 +41,7 @@ advanced topics:
|
|||
- [log viewer](../8-advanced/log-viewer.md)
|
||||
- [statistics](../8-advanced/stats.md)
|
||||
|
||||
other topics:
|
||||
## other topics
|
||||
|
||||
- [settings](../2-interface/settings.md)
|
||||
- [UI components](components.md)
|
||||
- [global keyboard shortcuts](keyboard.md)
|
||||
- [basic mode](basic-mode.md)
|
||||
- [settings](../2-interface/settings.md)
|
||||
|
|
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 576 B |
Before Width: | Height: | Size: 648 B |
Before Width: | Height: | Size: 436 B |
|
@ -3,10 +3,20 @@
|
|||
![instruments window](instruments.png)
|
||||
|
||||
Buttons from left to right:
|
||||
- **Add**: Creates a new, default instrument.
|
||||
- **Add**: pops up a menu to select which type of instrument to add. if only one instrument type is available, the menu is skipped.
|
||||
- If the "Display instrument type menu when adding instrument" setting is disabled, this skips the menu and creates an instrument according to the chip under the cursor.
|
||||
- Right-clicking always brings up the menu.
|
||||
- **Duplicate**: Duplicates the currently selected instrument.
|
||||
- **Open**: Brings up a file dialog to load a file as a new instrument at the end of the list.
|
||||
- **Save**: Brings up a file dialog to save the currently selected instrument.
|
||||
- **Save**: Brings up a file dialog to save the currently selected asset.
|
||||
- Instruments are saved as Furnace instrument (.fui) files.
|
||||
- Wavetables are saved as Furnace wavetable (.fuw) files.
|
||||
- Samples are saved as standard wave (.wav) files.
|
||||
- Right-clicking brings up a menu with the applicable items from this list:
|
||||
- **save instrument as .dmp...**: saves the selected instrument in DefleMask format.
|
||||
- **save wavetable as .dmw...**: saves the selected wavetable in DefleMask format.
|
||||
- **save raw wavetable...**: saves the selected wavetable as raw data.
|
||||
- **save raw sample...**: saves the selected sample as raw data.
|
||||
- **Toggle folders/standard view**: Enables (and disables) folder view, explained below.
|
||||
- **Move up**: Moves the currently selected instrument up in the list. Pattern data will automatically be adjusted to match.
|
||||
- **Move down**: Same, but downward.
|
||||
|
@ -33,6 +43,6 @@ Everything from the instrument list applies here also, with one major difference
|
|||
|
||||
![samples window](samples.png)
|
||||
|
||||
Everything from the wavetables list applies here also, with the addition of two buttons:
|
||||
Everything from the wavetables list applies here also, with the addition of one button before the Delete button:
|
||||
- **Preview**: Plays the selected sample at its default note.
|
||||
- **Stop preview**: Stops the sample playback.
|
||||
- Right-clicking stops the sample playback.
|
||||
|
|
Before Width: | Height: | Size: 725 B |
Before Width: | Height: | Size: 464 B |
Before Width: | Height: | Size: 684 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 620 B |
|
@ -1,6 +1,35 @@
|
|||
# UI components
|
||||
|
||||
the user interface consists of several components. this paper describes some of them.
|
||||
the user interface consists of several kinds of components, some of which benefit from explanation.
|
||||
|
||||
## text fields
|
||||
|
||||
text fields are able to hold... text.
|
||||
|
||||
click on a text field to start editing, and click away to stop editing.
|
||||
|
||||
the following keyboard shortcuts work while on a text field:
|
||||
|
||||
- `Ctrl-X`: cut
|
||||
- `Ctrl-C`: copy
|
||||
- `Ctrl-V`: paste
|
||||
- `Ctrl-A`: select all
|
||||
|
||||
(replace Ctrl with Command on macOS)
|
||||
|
||||
## number input fields
|
||||
|
||||
these work similar to text fields, but you may only input numbers.
|
||||
|
||||
they also usually have `+` and `-` buttons which allow you to increase/decrease the amount when clicked (and rapidly do so when click-holding).
|
||||
|
||||
## sliders
|
||||
|
||||
sliders are used for controlling values in a quick manner by being dragged.
|
||||
|
||||
using the scroll wheel while holding Ctrl will change the slider's value by small amounts.
|
||||
|
||||
right-clicking or Ctrl-clicking or a slider (Command-click on macOS) will turn it into a number input field for a short period of time, allowing you to input precise values.
|
||||
|
||||
## windows
|
||||
|
||||
|
@ -16,7 +45,7 @@ to resize a window, drag the bottom right corner (marked by a triangular tab) or
|
|||
to collapse a window, click on the triangle in the title bar.
|
||||
clicking again expands it.
|
||||
|
||||
to close a window, click on the `X` at the top right corner.
|
||||
to close a window, click on the `X` at the top right corner, or select it from the "window" menu.
|
||||
|
||||
### arrangement and docking
|
||||
|
||||
|
@ -55,30 +84,3 @@ selecting this option will hide the tab bar of that window.
|
|||
to bring it back, click on the top left corner.
|
||||
|
||||
to undock a window, drag its tab away from where it is docked. then it will be floating again.
|
||||
|
||||
## text fields
|
||||
|
||||
text fields are able to hold... text.
|
||||
|
||||
click on a text field to start editing, and click away to stop editing.
|
||||
|
||||
the following keyboard shortcuts work while on a text field:
|
||||
|
||||
- `Ctrl-X`: cut
|
||||
- `Ctrl-C`: copy
|
||||
- `Ctrl-V`: paste
|
||||
- `Ctrl-A`: select all
|
||||
|
||||
(replace Ctrl with Command on macOS)
|
||||
|
||||
## number input fields
|
||||
|
||||
these work similar to text fields, but you may only input numbers.
|
||||
|
||||
they also usually have two buttons which allow you to increase/decrease the amount when clicked (and rapidly do so when click-holding).
|
||||
|
||||
## sliders
|
||||
|
||||
sliders are used for controlling values in a quick manner by being dragged.
|
||||
|
||||
alternatively, right-clicking or Ctrl-clicking or a slider (Command-click on macOS) will turn it into a number input field for a short period of time, allowing you to input fine values.
|
||||
|
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 362 KiB After Width: | Height: | Size: 436 KiB |
|
@ -0,0 +1,10 @@
|
|||
# effect list window
|
||||
|
||||
(for more details about these effects, see [the effects page](../3-pattern/effects.md))
|
||||
|
||||
![effect list window](effect-list.png)
|
||||
|
||||
this window provides a list of the effects that are available.
|
||||
|
||||
- **Chip at cursor**: the currently selected chip. the list only shows available effects for this chip.
|
||||
- menu button: opens a small list of effect categories. toggle each to change whether they're shown in the list.
|
After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 368 KiB After Width: | Height: | Size: 435 KiB |
|
@ -1,15 +1,256 @@
|
|||
# global keyboard shortcuts
|
||||
# keyboard
|
||||
|
||||
this is a list of available shortcuts that may be used at any time, regardless of currently focused window.
|
||||
everything on this list can be configured in the "Keyboard" tab of the Settings dialog:
|
||||
- click on a keybind then enter a key or key combination to change it.
|
||||
- right-click to clear the keybind.
|
||||
|
||||
key | action
|
||||
-----------|-----------------------
|
||||
Ctrl-O | open file
|
||||
Ctrl-S | save file
|
||||
Enter | play/stop song
|
||||
F5/F6 | "
|
||||
Shift-Enter| play from cursor position
|
||||
F7 | "
|
||||
Ctrl-Enter | play one row
|
||||
NumPad `/` | decrease octave
|
||||
NumPad `*` | increase octave
|
||||
the keys in the "Global hotkeys" section can be used in any window, though not within text boxes.
|
||||
|
||||
| action | default keybind |
|
||||
|--------------------------------------------------------|------------------|
|
||||
| **Global hotkeys** | |
|
||||
| New | `Ctrl-N` |
|
||||
| Clear song data | — |
|
||||
| Open file | `Ctrl-O` |
|
||||
| Restore backup | — |
|
||||
| Save file | `Ctrl-S` |
|
||||
| Save as | `Ctrl-Shift-S` |
|
||||
| Undo | `Ctrl-Z` |
|
||||
| Redo | `Ctrl-Y` |
|
||||
| Play/Stop (toggle) | `Return` |
|
||||
| Play | — |
|
||||
| Stop | — |
|
||||
| Play (from beginning) | `F5` |
|
||||
| Play (repeat pattern) | — |
|
||||
| Play from cursor | `Shift-Return` |
|
||||
| Step row | `Ctrl-Return` |
|
||||
| Octave up | `Keypad *` |
|
||||
| Octave down | `Keypad /` |
|
||||
| Previous instrument | `Shift-Keypad /` |
|
||||
| Next instrument | `Shift-Keypad *` |
|
||||
| Increase edit step | `Ctrl-Keypad *` |
|
||||
| Decrease edit step | `Ctrl-Keypad /` |
|
||||
| Toggle edit mode | `Space` |
|
||||
| Metronome | `Ctrl-M` |
|
||||
| Toggle repeat pattern | — |
|
||||
| Follow orders | — |
|
||||
| Follow pattern | — |
|
||||
| Toggle full-screen | `F11` |
|
||||
| Request voice from TX81Z | — |
|
||||
| Panic | `F12` |
|
||||
| | |
|
||||
| **Window activation** | |
|
||||
| Find/Replace | Ctrl-F |
|
||||
| Settings | — |
|
||||
| Song Information | — |
|
||||
| Subsongs | — |
|
||||
| Speed | — |
|
||||
| Instrument List | — |
|
||||
| Wavetable List | — |
|
||||
| Sample List | — |
|
||||
| Orders | — |
|
||||
| Pattern | — |
|
||||
| Mixer | — |
|
||||
| Grooves | — |
|
||||
| Channels | — |
|
||||
| Pattern Manager | — |
|
||||
| Chip Manager | — |
|
||||
| Compatibility Flags | — |
|
||||
| Song Comments | — |
|
||||
| Instrument Editor | — |
|
||||
| Wavetable Editor | — |
|
||||
| Sample Editor | — |
|
||||
| Edit Controls | — |
|
||||
| Piano | — |
|
||||
| Oscilloscope (master) | — |
|
||||
| Oscilloscope (per-channel) | — |
|
||||
| Volume Meter | — |
|
||||
| Clock | — |
|
||||
| Register View | — |
|
||||
| Log Viewer | — |
|
||||
| Statistics | — |
|
||||
| Effect List | — |
|
||||
| Debug Menu | `Ctrl-Shift-D` |
|
||||
| About | — |
|
||||
| Collapse/expand current window | — |
|
||||
| Close current window | `Shift-Escape` |
|
||||
| | |
|
||||
| **Note input** | |
|
||||
| _see "note input" section after table_ | |
|
||||
| | |
|
||||
| **Pattern** | |
|
||||
| Transpose (+1) | `Ctrl-F2` |
|
||||
| Transpose (-1) | `Ctrl-F1` |
|
||||
| Transpose (+1 octave) | `Ctrl-F4` |
|
||||
| Transpose (-1 octave) | `Ctrl-F3` |
|
||||
| Increase values (+1) | `Ctrl-Shift-F2` |
|
||||
| Increase values (-1) | `Ctrl-Shift-F1` |
|
||||
| Increase values (+16) | `Ctrl-Shift-F4` |
|
||||
| Increase values (-16) | `Ctrl-Shift-F3` |
|
||||
| Select all | `Ctrl-A` |
|
||||
| Cut | `Ctrl-X` |
|
||||
| Copy | `Ctrl-C` |
|
||||
| Paste | `Ctrl-V` |
|
||||
| Paste Mix (foreground) | `Ctrl-Shift-V` |
|
||||
| Paste Mix (background) | — |
|
||||
| Paste Flood | — |
|
||||
| Paste Overflow | — |
|
||||
| Move cursor up | `Up` |
|
||||
| Move cursor down | `Down` |
|
||||
| Move cursor left | `Left` |
|
||||
| Move cursor right | `Right` |
|
||||
| Move cursor up by one (override Edit Step) | `Shift-Home` |
|
||||
| Move cursor down by one (override Edit Step) | `Shift-End` |
|
||||
| Move cursor to previous channel | — |
|
||||
| Move cursor to next channel | — |
|
||||
| Move cursor to next channel (overflow) | — |
|
||||
| Move cursor to previous channel (overflow) | — |
|
||||
| Move cursor to beginning of pattern | `Home` |
|
||||
| Move cursor to end of pattern | `End` |
|
||||
| Move cursor up (coarse) | `PageUp` |
|
||||
| Move cursor down (coarse) | `PageDown` |
|
||||
| Expand selection upwards | `Shift-Up` |
|
||||
| Expand selection downwards | `Shift-Down` |
|
||||
| Expand selection to the left | `Shift-Left` |
|
||||
| Expand selection to the right | `Shift-Right` |
|
||||
| Expand selection upwards by one (override Edit Step) | — |
|
||||
| Expand selection downwards by one (override Edit Step) | — |
|
||||
| Expand selection to beginning of pattern | — |
|
||||
| Expand selection to end of pattern | — |
|
||||
| Expand selection upwards (coarse) | `Shift-PageUp` |
|
||||
| Expand selection downwards (coarse) | `Shift-PageDown` |
|
||||
| Delete | `Delete` |
|
||||
| Pull delete | `Backspace` |
|
||||
| Insert | `Insert` |
|
||||
| Mute channel at cursor | `Alt-F9` |
|
||||
| Solo channel at cursor | `Alt-F10` |
|
||||
| Unmute all channels | `Alt-Shift-F9` |
|
||||
| Go to next order | — |
|
||||
| Go to previous order | — |
|
||||
| Collapse channel at cursor | — |
|
||||
| Increase effect columns | — |
|
||||
| Decrease effect columns | — |
|
||||
| Interpolate | — |
|
||||
| Fade | — |
|
||||
| Invert values | — |
|
||||
| Flip selection | — |
|
||||
| Collapse rows | — |
|
||||
| Expand rows | — |
|
||||
| Collapse pattern | — |
|
||||
| Expand pattern | — |
|
||||
| Collapse song | — |
|
||||
| Expand song | — |
|
||||
| Set note input latch | — |
|
||||
| Clear note input latch | — |
|
||||
| | |
|
||||
| **Instrument list** | |
|
||||
| Add | `Insert` |
|
||||
| Duplicate | `Ctrl-D` |
|
||||
| Open | — |
|
||||
| Open (replace current) | — |
|
||||
| Save | — |
|
||||
| Save (.dmp) | — |
|
||||
| Move up | `Shift-Up` |
|
||||
| Move down | `Shift-Down` |
|
||||
| Delete | — |
|
||||
| Edit | `Shift-Return` |
|
||||
| Cursor up | `Up` |
|
||||
| Cursor down | `Down` |
|
||||
| Toggle folders/standard view | `Ctrl-V` |
|
||||
| | |
|
||||
| **Wavetable list** | |
|
||||
| Add | `Insert` |
|
||||
| Duplicate | `Ctrl-D` |
|
||||
| Open | — |
|
||||
| Open (replace current) | — |
|
||||
| Save | — |
|
||||
| Save (.dmw) | — |
|
||||
| Save (raw) | — |
|
||||
| Move up | `Shift-Up` |
|
||||
| Move down | `Shift-Down` |
|
||||
| Delete | — |
|
||||
| Edit | `Shift-Return` |
|
||||
| Cursor up | `Up` |
|
||||
| Cursor down | `Down` |
|
||||
| Toggle folders/standard view | `Ctrl-V` |
|
||||
| | |
|
||||
| **Sample list** | |
|
||||
| Add | `Insert` |
|
||||
| Duplicate | `Ctrl-D` |
|
||||
| Create wavetable from selection | `Ctrl-W` |
|
||||
| Open | — |
|
||||
| Open (replace current) | — |
|
||||
| Import raw data | — |
|
||||
| Import raw data (replace current) | — |
|
||||
| Save | — |
|
||||
| Save (raw) | — |
|
||||
| Move up | `Shift-Up` |
|
||||
| Move down | `Shift-Down` |
|
||||
| Delete | — |
|
||||
| Edit | `Shift-Return` |
|
||||
| Cursor up | `Up` |
|
||||
| Cursor down | `Down` |
|
||||
| Preview | — |
|
||||
| Stop preview | — |
|
||||
| Toggle folders/standard view | `Ctrl-V` |
|
||||
| | |
|
||||
| **Orders** | |
|
||||
| Previous order | `Up` |
|
||||
| Next order | `Down` |
|
||||
| Cursor left | `Left` |
|
||||
| Cursor right | `Right` |
|
||||
| Increase value | — |
|
||||
| Decrease value | — |
|
||||
| Switch edit mode | — |
|
||||
| Toggle alter entire row | `Ctrl-L` |
|
||||
| Add | `Insert` |
|
||||
| Duplicate | `Ctrl-D` |
|
||||
| Deep clone | `Ctrl-Shift-D` |
|
||||
| Duplicate to end of song | `Ctrl-E` |
|
||||
| Deep clone to end of song | `Ctrl-Shift-E` |
|
||||
| Remove | `Delete` |
|
||||
| Move up | `Shift-Up` |
|
||||
| Move down | `Shift-Down` |
|
||||
| Replay | — |
|
||||
| | |
|
||||
| **Sample editor** | |
|
||||
| Edit mode: Select | `Shift-I` |
|
||||
| Edit mode: Draw | `Shift-D` |
|
||||
| Cut | `Ctrl-X` |
|
||||
| Copy | `Ctrl-C` |
|
||||
| Paste | `Ctrl-V` |
|
||||
| Paste replace | `Ctrl-Shift-V` |
|
||||
| Paste mix | `Ctrl-Alt-V` |
|
||||
| Select all | `Ctrl-A` |
|
||||
| Resize | `Ctrl-R` |
|
||||
| Resample | `Ctrl-E` |
|
||||
| Amplify | `Ctrl-B` |
|
||||
| Normalize | `Ctrl-N` |
|
||||
| Fade in | `Ctrl-I` |
|
||||
| Fade out | `Ctrl-O` |
|
||||
| Insert silence | `Insert` |
|
||||
| Apply silence | `Shift-Delete` |
|
||||
| Delete | `Delete` |
|
||||
| Trim | `Ctrl-Delete` |
|
||||
| Reverse | `Ctrl-T` |
|
||||
| Invert | `Ctrl-Shift-T` |
|
||||
| Signed/unsigned exchange | `Ctrl-U` |
|
||||
| Apply filter | `Ctrl-F` |
|
||||
| Preview sample | — |
|
||||
| Stop sample preview | — |
|
||||
| Zoom in | `Ctrl-=` |
|
||||
| Zoom out | `Ctrl--` |
|
||||
| Toggle auto-zoom | `Ctrl-0` |
|
||||
| Create instrument from sample | — |
|
||||
| Set loop to selection | `Ctrl-l` |
|
||||
|
||||
## note input
|
||||
|
||||
the settings for note input keybinds operate differently. each entry in the list of keybinds is made of the following:
|
||||
- **Key**: key assignment.
|
||||
- **Type**: type of note input. left-click cycles through "Note", "Note off", "Note release", and "Macro release".
|
||||
- _note:_ the list is sorted by type. on changing a key's type, it will instantly move to its new sorting position!
|
||||
- **Value**: number of semitones above C at the current octave. only appears for note type binds.
|
||||
- **Remove**: removes the keybind from the list.
|
||||
|
||||
below all the binds, select a key from the dropdown list to add it. it will appear at or near the top of the list as a note with value 0.
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
# menu bar
|
||||
|
||||
the menu bar allows you to select five menus: file, edit, settings, window and help.
|
||||
the menu bar allows you to select from five menus: file, edit, settings, window and help.
|
||||
|
||||
items in _italics_ don't appear in basic mode and are only available in advanced mode.
|
||||
|
||||
# file
|
||||
|
||||
- **new...**: create a new song.
|
||||
- **new...**: creates a new song.
|
||||
- **open...**: opens the file picker, allowing you to select a song to open.
|
||||
- **open recent**: contains a list of the songs you've opened before.
|
||||
- **clear history**: this option erases the file history.
|
||||
- **clear history**: erases the file history.
|
||||
|
||||
- **save**: saves the current song.
|
||||
- opens the file picker if this is a new song, or a backup.
|
||||
|
@ -31,22 +33,16 @@ the menu bar allows you to select five menus: file, edit, settings, window and h
|
|||
- Neo Geo CD (DefleMask 1.0+)
|
||||
- only use this option if you really need it. there are features which DefleMask does not support, like some effects and FM macros, so these will be lost.
|
||||
|
||||
- **export audio...**: export your song to a .wav file. see next section for more details.
|
||||
- **export VGM...**: export your song to a .vgm file. see next section for more details.
|
||||
- **export ZSM...**: export your song to a .zsm file. see next section for more details.
|
||||
- **export audio...**: opens the file picker, allowing you to export your song to a .wav file. see next section for more details.
|
||||
- **export VGM...**: opens the file picker, allowing you to export your song to a .vgm file. see next section for more details.
|
||||
- **export ZSM...**: opens the file picker, allowing you to export your song to a .zsm file. see next section for more details.
|
||||
- only available when there's a YM2151 and/or VERA.
|
||||
- **export command stream...**: export song data to a command stream file. see next section for more details.
|
||||
- this option is for developers.
|
||||
|
||||
- **add chip...**: add a chip to the current song.
|
||||
- **configure chip...**: set a chip's parameters.
|
||||
- for a list of parameters, see [7-systems](../7-systems/README.md).
|
||||
- **change chip...**: change a chip to another.
|
||||
- **Preserve channel positions**: enable this option to make sure Furnace does not auto-arrange/delete channels to compensate for differing channel counts. this can be useful for doing ports, e.g. from Genesis to PC-98.
|
||||
- **remove chip...**: remove a chip.
|
||||
- **Preserve channel positions**: same thing as above.
|
||||
|
||||
- **restore backup**: restore a previously saved backup.
|
||||
- **manage chips**: opens the [Chip Manager](../8-advanced/chip-manager.md) dialog.
|
||||
|
||||
- **restore backup**: restores a previously saved backup.
|
||||
- Furnace keeps up to 5 backups of a song.
|
||||
- the backup directory is located in:
|
||||
- Windows: `%USERPROFILE%\AppData\Roaming\furnace\backups`
|
||||
|
@ -85,8 +81,8 @@ the following settings exist:
|
|||
- other versions may not support all chips.
|
||||
- use this option if you need to export for a quirky player or parser.
|
||||
- for example, RYMCast is picky with format versions. if you're going to use this player, select 1.60.
|
||||
- **loop**: writes loop. if disabled, the resulting file won't loop.
|
||||
- **loop trail**: this option allows you to set how much of the song is written after it loops.
|
||||
- **loop**: includes loop information. if disabled, the resulting file won't loop.
|
||||
- **loop trail**: sets how much of the song is written after it loops.
|
||||
- the reason this exists is to work around a VGM format limitation in where post-loop state isn't recorded at all.
|
||||
- this may change the song length as it appears on a player.
|
||||
- **auto-detect**: detect how much to write automatically.
|
||||
|
@ -99,10 +95,10 @@ the following settings exist:
|
|||
- some chips will not be available, either because VGM doesn't support these yet, or because you selected an old format version.
|
||||
- **add pattern change hints**: this option adds a "hint" when a pattern change occurs. only useful if you're a developer.
|
||||
- the format of the "hint" data block that gets written is: `67 66 FE ll ll ll ll 01 oo rr pp pp pp ...`
|
||||
- ll: length, a 32-bit little-endian number
|
||||
- oo: order
|
||||
- rr: initial row (a 0Dxx effect is able to select a different row)
|
||||
- pp: pattern index (one per channel)
|
||||
- `ll`: length, a 32-bit little-endian number
|
||||
- `oo`: order
|
||||
- `rr`: initial row (a 0Dxx effect is able to select a different row)
|
||||
- `pp`: pattern index (one per channel)
|
||||
- **direct stream mode**: this option allows DualPCM to work. don't use this for other chips.
|
||||
- may or may not play well with hardware VGM players.
|
||||
|
||||
|
@ -120,6 +116,7 @@ the following settings are available:
|
|||
- I suggest you use the same rate as the song's.
|
||||
- apparently ZSM doesn't support changing the rate mid-song.
|
||||
- **loop**: enables loop. if disabled, the song won't loop.
|
||||
- **optimize size**: removes unnecessary commands to reduce size.
|
||||
|
||||
click on **Begin Export** to... you know.
|
||||
|
||||
|
@ -134,13 +131,15 @@ it's not really useful, unless you're a developer and want to use a command stre
|
|||
|
||||
# edit
|
||||
|
||||
- **...**: does nothing except prevent accidental clicks on later menu items if the menu is too tall to fit on the program window.
|
||||
|
||||
- **undo**: reverts the last action.
|
||||
- **redo**: repeats what you undid previously.
|
||||
|
||||
- **cut**: moves the current selection in the pattern view to clipboard.
|
||||
- **copy**: copies the current selection in the pattern view to clipboard.
|
||||
- **paste**: inserts the clipboard's contents in the cursor position.
|
||||
- **paste special...**: variants of the paste feature.
|
||||
- _**paste special...**:_ variants of the paste feature.
|
||||
- **paste mix**: inserts the clipboard's contents in the cursor position, but does not erase the occupied region.
|
||||
- **paste mix (background)**: does the same thing as paste mix, but doesn't alter content which is already there.
|
||||
- **paste with ins (foreground)**: same thing as paste mix, but changes the instrument.
|
||||
|
@ -154,8 +153,8 @@ it's not really useful, unless you're a developer and want to use a command stre
|
|||
- if a column is already selected, it will select the entire channel.
|
||||
- if a channel is already selected, it will select the entire pattern.
|
||||
|
||||
- **operation mask**: this is an advanced feature. see [this page](../3-pattern/opmask.md) for more information.
|
||||
- **input latch**: this is an advanced feature. see [this page](../3-pattern/inputlatch.md) for more information.
|
||||
- _**operation mask**:_ toggles which columns will be affected by the listed operations. [more information here.](../8-advanced/opmask.md)
|
||||
- _**input latch**:_ determines which data are placed along with a note. [more information here.](../8-advanced/inputlatch.md)
|
||||
|
||||
- **note/octave up/down**: transposes notes in the current selection.
|
||||
|
||||
|
@ -176,7 +175,7 @@ it's not really useful, unless you're a developer and want to use a command stre
|
|||
- **invert values**: `00` becomes `FF`, `01` becomes `FE`, `02` becomes `FD` and so on.
|
||||
|
||||
- **flip selection**: flips the selection so it is backwards.
|
||||
- **collapse/expand amount**: allows you to specify how much to collapse/expand in the next options.
|
||||
- **collapse/expand amount**: allows you to specify how much to collapse/expand in the next two menu items.
|
||||
- **collapse**: shrinks the selected contents.
|
||||
- **expand**: expands the selected contents.
|
||||
|
||||
|
@ -188,7 +187,7 @@ it's not really useful, unless you're a developer and want to use a command stre
|
|||
- **expand song**: same as expand, but affects the entire song.
|
||||
- it also changes speeds and pattern length to compensate.
|
||||
|
||||
- **find/replace**: opens the Find/Replace window. see [this page](../3-pattern/find-replace.md) for more information.
|
||||
- _**find/replace**:_ shows [the Find/Replace window](../8-advanced/find-replace.md).
|
||||
|
||||
- **clear**: allows you to mass-delete things like songs, instruments and the like.
|
||||
|
||||
|
@ -199,46 +198,52 @@ it's not really useful, unless you're a developer and want to use a command stre
|
|||
- **basic mode**: toggles [Basic Mode](basic-mode.md).
|
||||
- **visualizer**: toggles pattern view particle effects when the song plays.
|
||||
- **reset layout**: resets the workspace to its defaults.
|
||||
- **settings...**: opens the Settings window. these are detailed in [settings.md].
|
||||
- **settings...**: shows the Settings window. these are detailed in [settings.md].
|
||||
|
||||
# window
|
||||
|
||||
- **song information**: shows/hides the Song Information window.
|
||||
- **subsongs**: shows/hides the Subsongs window.
|
||||
- **speed**: shows/hides the Speed window.
|
||||
- **instruments**: shows/hides the instrument list.
|
||||
- **wavetables**: shows/hides the wavetable list.
|
||||
- **samples**: shows/hides the sample list.
|
||||
- **orders**: shows/hides the Orders window.
|
||||
- **pattern**: shows/hides the pattern view.
|
||||
- **mixer**: shows/hides the Mixer window.
|
||||
- **grooves**: shows/hides the Grooves window.
|
||||
- **channels**: shows/hides the Channels window.
|
||||
- **pattern manager**: shows/hides the Pattern Manager window.
|
||||
- **chip manager**: shows/hides the Chip Manager window.
|
||||
- **compatibility flags**: shows/hides the Compatibility Flags window.
|
||||
- **song comments**: shows/hides the Song Comments window.
|
||||
all these menu items show or hide their associated windows.
|
||||
|
||||
- **instrument editor**: shows/hides the Instrument Editor
|
||||
- **wavetable editor**: shows/hides the Wavetable Editor.
|
||||
- **sample editor**: shows/hides the Sample Editor.
|
||||
- [song information](song-info.md)
|
||||
- [subsongs](song-info.md)
|
||||
- [speed](song-info.md)
|
||||
- [instruments](../4-instrument/README.md)
|
||||
- [wavetables](../5-wave/README.md)
|
||||
- [samples](../6-sample/README.md)
|
||||
- [orders](order-list.md)
|
||||
- [pattern](../3-pattern/README.md)
|
||||
- _[mixer](mixer.md)_
|
||||
- _[grooves](grooves.md)_
|
||||
- _[channels](channels.md)_
|
||||
- _[pattern manager](pat-manager.md)_
|
||||
- _[chip manager](chip-manager.md)_
|
||||
- _[compatibility flags](compat-flags.md)_
|
||||
- [song comments](comments.md)
|
||||
|
||||
- **play/edit controls**: shows/hides the Play/Edit Controls.
|
||||
- **piano/input pad**: shows/hides the Piano/Input Pad window.
|
||||
- **oscilloscope (master)**: shows/hides the oscilloscope.
|
||||
- **oscilloscope (per-channel)**: shows/hides the per-channel oscilloscope.
|
||||
- **volume meter**: shows/hides the volume meter.
|
||||
- **clock**: shows/hides the clock.
|
||||
- **register view**: shows/hides the Register View window.
|
||||
- **log viewer**: shows/hides the log Viewer.
|
||||
- **statistics**: shows/hides the Statistics window.
|
||||
- [piano](piano.md)
|
||||
- [oscilloscope](osc.md)
|
||||
- [oscilloscopes (per-channel)](chanosc.md)
|
||||
- [clock](clock.md)
|
||||
- [register view](regview.md)
|
||||
- [log viewer](log-viewer.md)
|
||||
- [stats](stats.md)
|
||||
|
||||
# help
|
||||
|
||||
- **effect list**: displays the effect list.
|
||||
- **debug menu**: this menu contains various debug utilities.
|
||||
- unless you are working with the Furnace codebase, it's not useful.
|
||||
- **inspector**: this options opens the Dear ImGui Metrics/Debugger window.
|
||||
- **inspector**: this option shows the Dear ImGui Metrics/Debugger window.
|
||||
- unless you are working with the Furnace codebase, it's not useful.
|
||||
- **panic**: this resets all chips while the song is playing, effectively silencing everything.
|
||||
- **about...**: displays the About screen.
|
||||
|
||||
at the end of the menu bar, more information may be shown:
|
||||
- during editing, information about the data under the cursor will be shown here:
|
||||
- note or note modifier.
|
||||
- instrument number and name.
|
||||
- volume in decimal, hex, and percentage.
|
||||
- effect type and description.
|
||||
- during playback, the current values of the following will be listed:\
|
||||
> speed/groove @ tick rate (BPM) | order | row | elapsed time.
|
||||
- if any changes or edits have been made but not yet saved, "modified" will appear.
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# order list
|
||||
|
||||
the order list is a playlist for patterns.
|
||||
|
||||
![order list](order-list.png)
|
||||
|
||||
along the top are the available channels. their abbreviations can be set in the [channels window](../8-advanced/channels.md). the highlighted channel follows the channel the pattern view cursor is in.
|
||||
|
||||
along the left are the order numbers. these are referenced with the `0Bxx` command. the highlighted row follows the order the pattern view cursor is in.
|
||||
|
||||
each entry in the table is the pattern that will play during that order. these can be changed according to the order edit mode.
|
||||
|
||||
hovering over a pattern number will pop up a tooltip showing the name of that pattern, if it has one.
|
||||
|
||||
The buttons are as follows:
|
||||
- **Add new order**.
|
||||
- **Remove order**.
|
||||
- **Duplicate order**: adds a new order with patterns matching the selected one directly below it. right-click to "deep clone"; this copies all patterns involved to new ones.
|
||||
- **Move order up**: swaps the selected order with the one above it.
|
||||
- **Move order down**: swaps the selected order with the one below it.
|
||||
- **Duplicate order at end of song**: same as "Duplicate order" except the new order is added at the bottom of the list.
|
||||
- **Order change mode**: selects how much of the order will change with an edit. only applies if "Order edit mode" is set to "Click to change".
|
||||
- **one**: only current channel's pattern will change.
|
||||
- **entire row**: all patterns in the order will change.
|
||||
- **Order edit mode**: selects the method of changing orders.
|
||||
- **Click to change**: a click will add one to the pattern number. a right-click will subtract one.
|
||||
- **Select and type (don't scroll)**: select a pattern and type.
|
||||
- **Select and type (scroll horizontally)**: as above, but after entering two digits, the cursor moves to the next channel.
|
||||
- **Select and type (scroll vertically)**: as above, but after entering two digits, the cursor moves to the next order.
|
After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 42 KiB |
|
@ -1,235 +1,325 @@
|
|||
# settings
|
||||
|
||||
settings are saved when clicking the **OK** button at the bottom of the dialog.
|
||||
settings are saved when clicking the **OK** or **Apply** buttons at the bottom of the dialog.
|
||||
|
||||
## General
|
||||
|
||||
### Program
|
||||
|
||||
# General
|
||||
- **Render backend**: changing this may help with performace issues.
|
||||
- **Late render clear**: this option is only useful when using old versions of Mesa drivers. it force-waits for VBlank by clearing after present, reducing latency.
|
||||
- **Power-saving mode**: saves power by lowering the frame rate to 2fps when idle.
|
||||
- may cause issues under Mesa drivers!
|
||||
- **Disable threaded input (restart after changing!)**: processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.
|
||||
- however, crashes have been reported when threaded input is on. enable this option if that is the case.
|
||||
- **Enable event delay**: may cause issues with high-polling-rate mice when previewing notes.
|
||||
|
||||
- **Workspace layout**
|
||||
- **Import**: reads a .ini layout file.
|
||||
- **Export**: writes current layout to a .ini file.
|
||||
- **Reset**: resets layout to default.
|
||||
### File
|
||||
|
||||
- **Use system file picker**: uses native OS file dialog instead of Furnace's.
|
||||
- **Number of recent files**: number of files that will be remembered in the _open recent..._ menu.
|
||||
- **Compress when saving**: uses zlib to compress saved songs.
|
||||
- **Save unused patterns**: stores unused patterns in a saved song.
|
||||
- **Use new pattern format when saving**: stores patterns in the new, optimized and smaller format. only disable if you need to work with older versions of Furnace.
|
||||
- **Don't apply compatibility flags when loading .dmf**: does exactly what the option says. your .dmf songs may not play correctly after enabled.
|
||||
- **Play after opening song:**
|
||||
- No
|
||||
- Only if already playing
|
||||
- Yes
|
||||
- **Audio export loop/fade out time:**
|
||||
- **Set to these values on start-up:**
|
||||
- **Loops**: number of additional times to play through `0Bxx` song loop.
|
||||
- **Fade out (seconds)**: length of fade out after final loop.
|
||||
- **Remember last values**
|
||||
|
||||
### Chip
|
||||
|
||||
- **Initial system**: the system of chips loaded on starting Furnace.
|
||||
- **Current system**: sets current chips as default.
|
||||
- **Randomize**: set default to a random system.
|
||||
- **Randomize**: sets default to a random system.
|
||||
- this will not choose a random system at each start.
|
||||
- **Reset to defaults**: sets default to "Sega Genesis/Mega Drive".
|
||||
- **Name**: name for the default system. may be set to any text.
|
||||
- system configuration: same as in the [chip manager](../8-advanced/chip-manager.md) and [mixer](../8-advanced/mixer.md).
|
||||
- **Configure**: same as in the [chip manager](../8-advanced/chip-manager.md) and [mixer](../8-advanced/mixer.md).
|
||||
- **When creating new song**:
|
||||
- **Display system preset selector**
|
||||
- **Start with initial system**
|
||||
|
||||
### Start-up
|
||||
|
||||
- **Play intro on start-up:**
|
||||
- **No**: skips intro entirely.
|
||||
- **Short**: shows silent title screen briefly.
|
||||
- **Full (short when loading song)**: shows animated musical intro unless started with a song (command line, double-clicking a .fur file, etc.)
|
||||
- **Full (always)**: always shows animated musical intro.
|
||||
- **When creating new song**:
|
||||
- **Display system preset selector**
|
||||
- **Start with initial system**
|
||||
- **Disable fade-in during start-up**
|
||||
- **About screen party time**
|
||||
- _warning:_ may cause epileptic seizures.
|
||||
|
||||
### Behavior
|
||||
|
||||
- **Double-click time (seconds)**: maximum time between mouse clicks to recognize them as a double-click.
|
||||
- **Toggle channel solo on:** select which interactions with a channel header will toggle solo for that channel.
|
||||
- **Push value when overwriting instead of clearing it**: in the order list and pattern editors, typing into an already-filled value will shift digits instead of starting fresh.
|
||||
- if off: moving the cursor onto the value `A5` and typing a "B" results in `0B`.
|
||||
- if on: with the cursor on the value `A5` and typing a "B" results in `5B`.
|
||||
- **Move cursor up on backspace-delete**
|
||||
- **Move cursor by edit step on delete**
|
||||
- **Change current instrument when changing instrument column (absorb)**
|
||||
- **Delete effect value when deleting effect**
|
||||
- **Change order when scrolling outside of pattern bounds**:
|
||||
- if off, the pattern edit cursor will stay locked within the current order.
|
||||
- if on, moving the cursor past the edge of the previous or next order will move to that order.
|
||||
- **Move cursor by edit step on insert (push)**
|
||||
- **Move cursor to end of clipboard content when pasting**
|
||||
- **Don't scroll when moving cursor**
|
||||
- **Double click selects entire column**
|
||||
- **Allow docking editors**
|
||||
- **Don't raise pattern editor on click**
|
||||
- **Focus pattern editor when selecting instrument**
|
||||
- **Restart song when changing chip properties**
|
||||
- **Use system file picker**: use native OS file dialog instead of Furnace's.
|
||||
- **Only allow window movement when clicking on title bar**
|
||||
- **Enable event delay**
|
||||
- may cause issues with high-polling-rate mice when previewing notes.
|
||||
- **Power-saving mode**
|
||||
- saves power by lowering the frame rate to 2fps when idle.
|
||||
- may cause issues under Mesa drivers!
|
||||
- **Disable threaded input (restart after changing!)**
|
||||
- threaded input processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.
|
||||
- however, crashes have been reported when threaded input is on. enable this option if that is the case.
|
||||
- **Remember window position**
|
||||
- remembers the window's last position on start-up.
|
||||
- **New instruments are blank**
|
||||
- **Save unused patterns**
|
||||
- **Compress when saving**
|
||||
- use zlib to compress saved songs.
|
||||
- **Cursor follows current order when moving it**
|
||||
- applies when playback is stopped.
|
||||
- **Audio export loop/fade out time:**
|
||||
- **Set to these values on start-up:**
|
||||
- **Loops**: number of additional times to play through `0Bxx` song loop.
|
||||
- **Fade out (seconds)**: length of fade out after final loop.
|
||||
- **Remember last values**
|
||||
- **Note preview behavior:**
|
||||
- **Never**
|
||||
- **When cursor is in Note column**
|
||||
- **When cursor is in Note column or not in edit mode**
|
||||
- **Always**
|
||||
- **Wrap pattern cursor horizontally:**
|
||||
- **No**
|
||||
- **Yes**
|
||||
- **Yes, and move to next/prev row**
|
||||
- **Wrap pattern cursor vertically:**
|
||||
- **No**
|
||||
- **Yes**
|
||||
- **Yes, and move to next/prev pattern**
|
||||
- **Cursor movement keys behavior:**
|
||||
- **Move by one**
|
||||
- **Move by Edit Step**
|
||||
- **Effect input cursor behavior:**
|
||||
- **Move down**
|
||||
- **Move to effect value (otherwise move down)**
|
||||
- **Move to effect value/next effect and wrap around**
|
||||
- **Allow dragging selection:**
|
||||
- **No**
|
||||
- **Yes**
|
||||
- **Yes (while holding Ctrl only)**
|
||||
|
||||
|
||||
|
||||
# Audio/MIDI
|
||||
## Audio
|
||||
|
||||
- **Backend**: select SDL or JACK for audio output.
|
||||
- only appears on Linux, or MacOS compiled with JACK support
|
||||
### Output
|
||||
|
||||
- **Backend**: selects a different backend for audio output.
|
||||
- SDL: the default one.
|
||||
- JACK: the JACK Audio Connection Kit (low-latency audio server). only appears on Linux, or MacOS compiled with JACK support.
|
||||
- PortAudio: this may or may not perform better than the SDL backend.
|
||||
- **Driver**: select a different audio driver if you're having problems with the default one.
|
||||
- only appears when Backend is SDL.
|
||||
- **Device**: audio device for playback.
|
||||
- **Sample rate**
|
||||
- **Outputs**: select number of audio outputs created, up to 16.
|
||||
- if using PortAudio backend, devices will be prefixed with the audio API that PortAudio is going to use:
|
||||
- Windows WASAPI: a modern audio API available on Windows Vista and later, featuring an (optional) Exclusive Mode. be noted that your buffer size setting may be ignored.
|
||||
- Windows WDM-KS: low-latency, direct to hardware output mechanism. may not work all the time and prevents your audio device from being used for anything else!
|
||||
- Windows DirectSound: this is the worst choice. best to move on.
|
||||
- MME: an old audio API. doesn't have Exclusive Mode.
|
||||
- Core Audio: the only choice in macOS.
|
||||
- ALSA: low-level audio output on Linux. may prevent other applications from using your audio device.
|
||||
- **Sample rate**: audio output rate.
|
||||
- a lower rate decreases quality and isn't really beneficial.
|
||||
- if using PortAudio backend, be careful about this value.
|
||||
- **Outputs**: number of audio outputs created, up to 16.
|
||||
- only appears when Backend is JACK.
|
||||
- **Channels**: number of output channels to use.
|
||||
- **Channels**: mono, stereo or something.
|
||||
- **Buffer size**: size of buffer in both samples and milliseconds.
|
||||
- **Quality**: selects quality of resampling. low quality reduces CPU load.
|
||||
- **Metronome volume**
|
||||
- setting this to a low value may cause stuttering/glitches in playback (known as "underruns" or "xruns").
|
||||
- setting this to a high value increases latency.
|
||||
- **Exclusive mode**: enables Exclusive Mode, which may offer latency improvements.
|
||||
- only available on WASAPI devices in the PortAudio backend!
|
||||
- **Low-latency mode (experimental!)**: reduces latency by running the engine faster than the tick rate. useful for live playback/jam mode.
|
||||
- _warning:_ experimental! may produce glitches. only enable if your buffer size is small (10ms or less).
|
||||
- **Force mono audio**
|
||||
- **Software clipping**: clips output to nominal range (-1.0 to 1.0) before passing it to the audio device.
|
||||
- this avoids activating Windows' built-in limiter.
|
||||
- only enable if your buffer size is small (10ms or less).
|
||||
- **Force mono audio**: use if you're unable to hear stereo audio (e.g. single speaker or hearing loss in one ear).
|
||||
- **want:** displays requested audio configuration.
|
||||
- **got:** displays actual audio configuration returned by audio backend.
|
||||
|
||||
- **MIDI input**
|
||||
- **MIDI output**
|
||||
- **MIDI input settings**
|
||||
- **Note input**
|
||||
- **Velocity input**
|
||||
- **Map MIDI channels to direct channels**
|
||||
- **Map Yamaha FM voice data to instruments**
|
||||
- **Program change is instrument selection**
|
||||
- **Value input style**:
|
||||
### Mixing
|
||||
|
||||
- **Quality**: selects quality of resampling. low quality reduces CPU load by a small amount.
|
||||
- **Software clipping**: clips output to nominal range (-1.0 to 1.0) before passing it to the audio device.
|
||||
- this avoids activating Windows' built-in limiter.
|
||||
- this option shall be enabled when using PortAudio backend with a DirectSound device.
|
||||
|
||||
### Metronome
|
||||
|
||||
- **Metronome volume**
|
||||
|
||||
## MIDI
|
||||
|
||||
### MIDI input
|
||||
|
||||
- **MIDI input**: input device.
|
||||
- **Note input**: enables note input. disable if you intend to use this device only for binding actions.
|
||||
- **Velocity input**: enables velocity input when entering notes in the pattern.
|
||||
- **Map MIDI channels to direct channels**: when enabled, notes from MIDI channels will be mapped to channels rather than the cursor position.
|
||||
- **Map Yamaha FM voice data to instruments**: when enabled, Furnace will listen for any transmitted Yamaha SysEx patches.
|
||||
- this option is only useful if you have a Yamaha FM synthesizer (e.g. TX81Z).
|
||||
- selecting a voice or using the "Voice Transmit?" option will send a patch, and Furnace will create a new instrument with its data.
|
||||
- this may also be triggered by clicking on "Receive from TX81Z" in the instrument editor (OPZ only).
|
||||
- **Program change is instrument selection**: changes the current instrument when a program change event is received.
|
||||
- **Value input style**: changes the way values are entered when the pattern cursor is not in the Note column. the following styles are available:
|
||||
- **Disabled/custom**: no value input through MIDI.
|
||||
- **Two octaves (0 is C-4, F is D#5)**: maps keys in two octaves to single nibble input. the layout is:
|
||||
- ` - octave n -- octave n+1 -`
|
||||
- ` 1 3 6 8 A D F # # # `
|
||||
- `0 2 4 5 7 9 B C E # # # # #`
|
||||
- **Raw (note number is value)**: the note number becomes the input value. not useful if you want to input anything above 7F.
|
||||
- **Two octaves alternate (lower keys are 0-9, upper keys are A-F)**: maps keys in two octaves, but with a different layout:
|
||||
- ` - octave n -- octave n+1 -`
|
||||
- ` A B C D E F # # # # `
|
||||
- `0 1 2 3 4 5 6 7 8 9 # # # #`
|
||||
- **Use dual control change (one for each nibble)**: maps two control change events to the nibbles of a value.
|
||||
- **CC of upper nibble**: select the CC number that will change the upper nibble.
|
||||
- **CC of lower nibble**: select the CC number that will change the lower nibble.
|
||||
- **Use 14-bit control change**: maps two control change events that together form a single 14-bit CC. some MIDI controllers do these.
|
||||
- **MSB CC**: select the CC containing the upper portion of the control.
|
||||
- **LSB CC**: select the CC containing the lower portion of the control.
|
||||
- **Use single control change**: maps one control change event. not useful if you want to input odd numbers.
|
||||
- **Control**: select the CC number that will change the value.
|
||||
- **Per-column control change**: when enabled, you can map several control change events to a channel's columns.
|
||||
- **Instrument**\
|
||||
**Volume**\
|
||||
**Effect `x` type**\
|
||||
**Effect `x` value**
|
||||
- **Disabled/custom**
|
||||
- **Two octaves (0 is C-4, F is D#5)**
|
||||
- **Raw (note number is value)**
|
||||
- **Two octaves alternate (lower keys are 0-9, upper keys are A-F)**
|
||||
- **Use dual control change (one for each nibble)**
|
||||
- **CC of upper nibble**
|
||||
- **CC of lower nibble**
|
||||
- **Use 14-bit control change**
|
||||
- **MSB CC**
|
||||
- **LSB CC**
|
||||
- **Use single control change**
|
||||
- **Use single control change (imprecise)**
|
||||
- **Control**
|
||||
- **Per-column control change**
|
||||
- **Instrument**\
|
||||
**Volume**\
|
||||
**Effect `x` type**\
|
||||
**Effect `x` value**
|
||||
- **Disabled/custom**
|
||||
- **Use dual control change (one for each nibble)**
|
||||
- **CC of upper nibble**
|
||||
- **CC of lower nibble**
|
||||
- **Use 14-bit control change**
|
||||
- **MSB CC**
|
||||
- **LSB CC**
|
||||
- **Use single control change (imprecise)**
|
||||
- **Control**
|
||||
- **Volume curve**
|
||||
- **Actions:**
|
||||
- **`+`** button: adds a new action.
|
||||
- window-with-arrow button: new action with learning! press a button or move a slider/knob/something on your device.
|
||||
- each action has the following:
|
||||
- **Type**
|
||||
- **Channel**
|
||||
- **Note/Control**
|
||||
- **Velocity/Value**
|
||||
- **Action**
|
||||
- **Learn**
|
||||
- **Remove**
|
||||
- **Volume curve**: adjust the velocity to volume curve.
|
||||
- **Actions**: this allows you to bind note input and control change events to actions.
|
||||
- **`+`** button: adds a new action.
|
||||
- window-with-arrow button: new action with learning! press a button or move a slider/knob/something on your device.
|
||||
- each action has the following:
|
||||
- **Type**: type of event.
|
||||
- **Channel**: channel of event.
|
||||
- **Note/Control**: the note/control change number.
|
||||
- **Velocity/Value**: the velocity or control value
|
||||
- **Action**: the GUI action to perform.
|
||||
- **Learn**: after clicking on this button, do something in your MIDI device and Furnace will map that to this action.
|
||||
- **Remove**: remove this action.
|
||||
|
||||
- **MIDI output settings**
|
||||
- **Output mode:**
|
||||
- **Off (use for TX81Z)**
|
||||
- **Melodic**
|
||||
- **Send Program Change**
|
||||
- **Send MIDI clock**
|
||||
- **Send MIDI timecode**
|
||||
- **Timecode frame rate:**
|
||||
- **Closest to Tick Rate**
|
||||
- **Film (24fps)**
|
||||
- **PAL (25fps)**
|
||||
- **NTSC drop (29.97fps)**
|
||||
- **NTSC non-drop (30fps)**
|
||||
### MIDI output
|
||||
|
||||
# Emulation
|
||||
- **Arcade/YM2151 core**
|
||||
- **ymfm**
|
||||
- **Nuked-OPM**
|
||||
- **Genesis/YM2612 core**
|
||||
- **Nuked-OPN2**
|
||||
- **ymfm**
|
||||
- **SN76489 core**
|
||||
- **MAME**
|
||||
- **Nuked-PSG Mod**
|
||||
- **NES core**
|
||||
- **puNES**
|
||||
- **NSFplay**
|
||||
- **FDS core**
|
||||
- **puNES**
|
||||
- **NSFplay**
|
||||
- **SID core**
|
||||
- **reSID**
|
||||
- **reSIDfp**
|
||||
- **POKEY core**
|
||||
- **Atari800 (mzpokeysnd)**
|
||||
- **ASAP (C++ port)**
|
||||
- **OPN/OPNA/OPNB cores**
|
||||
- **ymfm only**
|
||||
- **Nuked-OPN2 (FM) + ymfm (SSG/ADPCM)**
|
||||
- **MIDI output**: output device.
|
||||
- **Output mode:**
|
||||
- **Off (use for TX81Z)**: don't output anything. use if you plan to use Furnace as sync master, or the "Receive from TX81Z" button in the OPZ instrument editor.
|
||||
- **Melodic**: output MIDI events.
|
||||
- **Send Program Change**: output program change events when instrument change commands occur.
|
||||
- **Send MIDI clock**: output MIDI beat clock.
|
||||
- **Send MIDI timecode**: output MIDI timecode.
|
||||
- **Timecode frame rate**: sets the timing standard used for MIDI timecode.
|
||||
- **Closest to Tick Rate**: automatically sets the rate based on the song's Tick Rate.
|
||||
- **Film (24fps)**: output at 24 codes per second.
|
||||
- **PAL (25fps)**: output at 25 codes per second.
|
||||
- **NTSC drop (29.97fps)**: output at ~29.97 codes per second, skipping frames 0 and 1 of each minute that doesn't divide by 10.
|
||||
- **NTSC non-drop (30fps)**: output at 30 codes per second.
|
||||
|
||||
- **PC Speaker strategy:**
|
||||
- **evdev SND_TONE**
|
||||
- **KIOCSOUND on /dev/tty1**
|
||||
- **/dev/port**
|
||||
- **KIOCSOUND on standard output**
|
||||
- **outb()**
|
||||
## Emulation
|
||||
|
||||
- **Sample ROMs:**
|
||||
- **OPL4 YRW801 path**
|
||||
- **MultiPCM TG100 path**
|
||||
- **MultiPCM MU5 path**
|
||||
### Cores
|
||||
|
||||
- **Arcade/YM2151 core**\
|
||||
**Genesis/YM2612 core**\
|
||||
**SN76489 core**\
|
||||
**NES core**\
|
||||
**FDS core**\
|
||||
**SID core**\
|
||||
**POKEY core**\
|
||||
**OPN/OPNA/OPNB cores**:
|
||||
- **Playback Core(s)**: core(s) to use for realtime playback.
|
||||
- **Render Core(s)**: core(s) to use for exporting audio.
|
||||
- all of these are covered in the [guide to choosing emulation cores](../9-guides/emulation-cores.md).
|
||||
|
||||
- **PC Speaker strategy**: this is covered in the [PC speaker system doc](../7-systems/pcspkr.md).
|
||||
|
||||
## Keyboard
|
||||
|
||||
### Keyboard
|
||||
|
||||
- **Import**
|
||||
- **Export**
|
||||
- **Reset defaults**
|
||||
- [grouped list of keybinds...](keyboard.md)
|
||||
- click on a keybind then enter a key or key combination to change it
|
||||
- right-click to clear the keybind
|
||||
|
||||
|
||||
|
||||
# Appearance
|
||||
## Interface
|
||||
|
||||
- **Render driver**
|
||||
- **Automatic UI scaling factor**: automatically match the OS's UI scaling.
|
||||
- **UI scaling factor**: only if "Automatic UI scaling factor" is off.
|
||||
- **Main font**: if "Custom...", a file path selector will appear beneath.
|
||||
- **Size**
|
||||
- **Pattern font**: if "Custom...", a file path selector will appear beneath.
|
||||
- **Size**
|
||||
### Layout
|
||||
|
||||
- **Workspace layout**
|
||||
- **Import**: reads a .ini layout file.
|
||||
- **Export**: writes current layout to a .ini file.
|
||||
- **Reset**: resets layout to default.
|
||||
- **Allow docking editors**
|
||||
- **Remember window position**: remembers the window's last position on start-up.
|
||||
- **Only allow window movement when clicking on title bar**
|
||||
- **Center pop-up windows**
|
||||
- **Play/edit controls layout:**
|
||||
- **Classic**
|
||||
- **Compact**
|
||||
- **Compact (vertical)**
|
||||
- **Split**
|
||||
- **Position of buttons in Orders:**
|
||||
- **Top**
|
||||
- **Left**
|
||||
- **Right**
|
||||
|
||||
### Mouse
|
||||
|
||||
- **Double-click time (seconds)**: maximum time between mouse clicks to recognize them as a double-click.
|
||||
- **Don't raise pattern editor on click**
|
||||
- **Focus pattern editor when selecting instrument**
|
||||
- **Note preview behavior:**
|
||||
- **Never**
|
||||
- **When cursor is in Note column**
|
||||
- **When cursor is in Note column or not in edit mode**
|
||||
- **Always**
|
||||
- **Allow dragging selection:**
|
||||
- **No**
|
||||
- **Yes**
|
||||
- **Yes (while holding Ctrl only)**
|
||||
- **Toggle channel solo on:** selects which interactions with a channel header will toggle solo for that channel.
|
||||
- Right-click or double click
|
||||
- Right-click
|
||||
- Double-click
|
||||
- **Double click selects entire column**
|
||||
|
||||
### Cursor behavior
|
||||
|
||||
- **Insert pushes entire channel row**
|
||||
- **Pull delete affects entire channel row**
|
||||
- **Push value when overwriting instead of clearing it**: in the order list and pattern editors, typing into an already-filled value will shift digits instead of starting fresh.
|
||||
- if off: moving the cursor onto the value `A5` and typing a "B" results in `0B`.
|
||||
- if on: moving the cursor onto the value `A5` and typing a "B" results in `5B`.
|
||||
- **Effect input behavior:**
|
||||
- **Move down**
|
||||
- **Move to effect value (otherwise move down)**
|
||||
- **Move to effect value/next effect and wrap around**
|
||||
- **Delete effect value when deleting effect**
|
||||
- **Change current instrument when changing instrument column (absorb)**
|
||||
- **Remove instrument value when inserting note off/release**
|
||||
- **Remove volume value when inserting note off/release**
|
||||
|
||||
|
||||
### Cursor movement
|
||||
|
||||
- **Wrap horizontally:**
|
||||
- **No**
|
||||
- **Yes**
|
||||
- **Yes, and move to next/prev row**
|
||||
- **Wrap vertically:**
|
||||
- **No**
|
||||
- **Yes**
|
||||
- **Yes, and move to next/prev pattern**
|
||||
- **Yes, and move to next/prev pattern (wrap around)**
|
||||
- **Cursor movement keys behavior:**
|
||||
- **Move by one**
|
||||
- **Move by Edit Step**
|
||||
- **Move cursor by edit step on delete**
|
||||
- **Move cursor by edit step on insert (push)**
|
||||
- **Move cursor up on backspace-delete**
|
||||
- **Move cursor to end of clipboard content when pasting**
|
||||
|
||||
### Scrolling
|
||||
|
||||
- **Change order when scrolling outside of pattern bounds**:
|
||||
- **No**: the pattern edit cursor will stay locked within the current order.
|
||||
- **Yes**: moving the cursor past the edge of the previous or next order will move to that order, but not past the start or end of a song.
|
||||
- **Yes, and wrap around song**: as above, but will wrap from song end to start.
|
||||
- **Cursor follows current order when moving it**
|
||||
- applies when playback is stopped.
|
||||
- **Don't scroll when moving cursor**
|
||||
- **Move cursor with scroll wheel**
|
||||
|
||||
|
||||
|
||||
## Appearance
|
||||
|
||||
### Scaling
|
||||
|
||||
- **Automatic UI scaling factor**: automatically matches the OS's UI scaling.
|
||||
- **UI scaling factor**: only appears if "Automatic UI scaling factor" is off.
|
||||
- **Icon size**
|
||||
|
||||
### Text
|
||||
|
||||
- **Main font**: overall interface font.\
|
||||
**Header font**: font for section headers.\
|
||||
**Pattern font** font for the pattern view, the order list, and related.
|
||||
- if "Custom...", a file path selector will appear.
|
||||
- **Size**: font size.
|
||||
- **Display Japanese characters**\
|
||||
**Display Chinese (Simplified) characters**\
|
||||
**Display Chinese (Traditional) characters**\
|
||||
|
@ -237,25 +327,7 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
|
|||
- only toggle these options if you have enough graphics memory.
|
||||
- these are a temporary solution until dynamic font atlas is implemented in Dear ImGui.
|
||||
|
||||
- **Number of recent files**
|
||||
|
||||
- **Pattern view labels:**
|
||||
- **Note off (3-char)**: default is `OFF`
|
||||
- **Note release (3-char)**: default is `===`.
|
||||
- **Macro release (3-char)**: default is `REL`.
|
||||
- **Empty field (3-char)**: default is `...`.
|
||||
- **Empty field (2-char)**: default is `..`.
|
||||
|
||||
- **Orders row number format:**
|
||||
- **Decimal**
|
||||
- **Hexadecimal**
|
||||
- **Pattern row number format:**
|
||||
- **Decimal**
|
||||
- **Hexadecimal**
|
||||
- **FM parameter names:**
|
||||
- **Friendly**
|
||||
- **Technical**
|
||||
- **Technical (alternate)**
|
||||
### Program
|
||||
|
||||
- **Title bar:**
|
||||
- **Furnace**
|
||||
|
@ -269,44 +341,43 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
|
|||
- **File path**
|
||||
- **Cursor details or file path**
|
||||
- **Nothing**
|
||||
- **Play/edit controls layout:**
|
||||
- **Classic**
|
||||
- **Compact**
|
||||
- **Compact (vertical)**
|
||||
- **Split**
|
||||
- **Position of buttons in Orders:**
|
||||
- **Top**
|
||||
- **Left**
|
||||
- **Right**
|
||||
- **FM parameter editor layout:**
|
||||
- **Modern**
|
||||
- **Compact (2x2, classic)**
|
||||
- **Compact (1x4)**
|
||||
- **Compact (4x1)**
|
||||
- **Alternate (2x2)**
|
||||
- **Alternate (1x4)**
|
||||
- **Alternate (4x1)**
|
||||
- **Position of Sustain in FM editor:**
|
||||
- **Between Decay and Sustain Rate**
|
||||
- **After Release Rate**
|
||||
- **Macro editor layout:**
|
||||
- **Unified**
|
||||
- **Mobile**
|
||||
- **Grid**
|
||||
- **Single (with list)**
|
||||
- **Single (combo box)**
|
||||
- **Capitalize menu bar**
|
||||
- **Display add/configure/change/remove chip menus in File menu**: if enabled, the "manage chips" item in the file menu is split into the four listed items for quick access.
|
||||
|
||||
- **Namco 163 chip name**
|
||||
### Orders
|
||||
|
||||
- **Channel colors:**
|
||||
- **Single**
|
||||
- **Channel type**
|
||||
- **Instrument type**
|
||||
- **Channel name colors:**
|
||||
- **Single**
|
||||
- **Channel type**
|
||||
- **Instrument type**
|
||||
- **Channel style:**
|
||||
- **Highlight channel at cursor in Orders**
|
||||
- **Orders row number format:**
|
||||
- **Decimal**
|
||||
- **Hexadecimal**
|
||||
|
||||
### Pattern
|
||||
|
||||
- **Center pattern view**: centers pattern horizontally in view.
|
||||
- **Overflow pattern highlights**
|
||||
- **Display previous/next pattern**
|
||||
- **Pattern row number format:**
|
||||
- **Decimal**
|
||||
- **Hexadecimal**
|
||||
- **Pattern view labels:**
|
||||
- **Note off (3-char)**: default is `OFF`
|
||||
- **Note release (3-char)**: default is `===`.
|
||||
- **Macro release (3-char)**: default is `REL`.
|
||||
- **Empty field (3-char)**: default is `...`.
|
||||
- **Empty field (2-char)**: default is `..`.
|
||||
- **Pattern view spacing after:** number of pixels of space between columns.
|
||||
- **Note**
|
||||
- **Instrument**
|
||||
- **Volume**
|
||||
- **Effect**
|
||||
- **Effect value**
|
||||
- **Single-digit effects for 00-0F**
|
||||
- **Use flats instead of sharps**
|
||||
- **Use German notation**: display `B` notes as `H`, and `A#` notes as `B`.
|
||||
|
||||
### Channel
|
||||
|
||||
- **Channel style:** sets the appearance of channel headers in pattern view.
|
||||
- **Classic**
|
||||
- **Line**
|
||||
- **Round**
|
||||
|
@ -328,60 +399,101 @@ settings are saved when clicking the **OK** button at the bottom of the dialog.
|
|||
- **Regular**
|
||||
- **Monospace**
|
||||
- **Center channel name**
|
||||
- **Channel colors:**
|
||||
- **Single**
|
||||
- **Channel type**
|
||||
- **Instrument type**
|
||||
- **Channel name colors:**
|
||||
- **Single**
|
||||
- **Channel type**
|
||||
- **Instrument type**
|
||||
|
||||
### Assets
|
||||
|
||||
- **Unified instrument/wavetable/sample list**: combines all three types of assets into one list.
|
||||
- the buttons act as appropriate to the currently selected asset or header.
|
||||
- **Horizontal instrument list**: when there are more instruments than there is room to display them...
|
||||
- if on, scroll horizontally through multiple columns.
|
||||
- if off, scroll vertically in one long column.
|
||||
- only appears if "Unified instrument/wavetable/sample list" is off.
|
||||
- **Instrument list icon style:**
|
||||
- **None**
|
||||
- **Graphical icons**
|
||||
- **Letter icons**
|
||||
- **Colorize instrument editor using instrument type**
|
||||
- **Use separate colors for carriers/modulators in FM editor**
|
||||
- **Unified instrument/wavetable/sample list**
|
||||
- **Horizontal instrument list**
|
||||
- **Use standard OPL waveform names**
|
||||
- **Overflow pattern highlights**
|
||||
- **Display previous/next pattern**
|
||||
- **Use German notation**: display `B` notes as `H`, and `A#` notes as `B`.
|
||||
- **Single-digit effects for 00-0F**
|
||||
- **Center pattern view**: centers pattern horizontally in view.
|
||||
- **Unsigned FM detune values**
|
||||
- **Highlight channel at cursor in Orders**
|
||||
- **About screen party time**
|
||||
- _warning:_ may cause epileptic seizures.
|
||||
- **Display instrument type menu when adding instrument**
|
||||
- if turned off, the menu can still be opened by right-clicking the add button.
|
||||
|
||||
### Macro Editor
|
||||
|
||||
- **Macro editor layout:**
|
||||
- **Unified**
|
||||
- **Grid**
|
||||
- **Single (with list)**
|
||||
- **Use classic macro editor vertical slider**
|
||||
|
||||
### Wave Editor
|
||||
|
||||
- **Use compact wave editor**
|
||||
- **Use classic macro editor vertical slider**
|
||||
|
||||
### FM Editor
|
||||
|
||||
- **FM parameter names:**
|
||||
- **Friendly**
|
||||
- **Technical**
|
||||
- **Technical (alternate)**
|
||||
- **Use standard OPL waveform names**
|
||||
- **FM parameter editor layout:**
|
||||
- **Modern**
|
||||
- **Compact (2x2, classic)**
|
||||
- **Compact (1x4)**
|
||||
- **Compact (4x1)**
|
||||
- **Alternate (2x2)**
|
||||
- **Alternate (1x4)**
|
||||
- **Alternate (4x1)**
|
||||
- **Position of Sustain in FM editor:**
|
||||
- **Between Decay and Sustain Rate**
|
||||
- **After Release Rate**
|
||||
- **Use separate colors for carriers/modulators in FM editor**
|
||||
- **Unsigned FM detune values**: uses the internal representation of detune values, such that detune amounts of -1, -2, and -3 are shown as 5, 6, and 7.
|
||||
|
||||
### Statistics
|
||||
|
||||
- **Chip memory usage unit:** unit for displaying memory usage in the Statistics window.
|
||||
- **Bytes**
|
||||
- **Kilobytes**
|
||||
|
||||
### Oscilloscope
|
||||
|
||||
- **Rounded corners**
|
||||
- **Border**
|
||||
- **Mono**: displays a single monaural waveform of all sound mixed together.
|
||||
- if turned off, waves will be drawn on top of each other for each output channel.
|
||||
- all colors are configurable via _Settings > Color > Color scheme > Oscilloscope > Wave (non-mono)._
|
||||
- **Anti-aliased**: smoothes the lines of the waveform.
|
||||
- slight performance cost and slightly buggy.
|
||||
- **Fill entire window**: removes the gap between the waveform and the edge of the window.
|
||||
- **Waveform goes out of bounds**: allows the waveform to draw past the top and bottom of the oscilloscope.
|
||||
|
||||
### Windows
|
||||
|
||||
- **Rounded window corners**
|
||||
- **Rounded buttons**
|
||||
- **Rounded menu corners**
|
||||
- **Borders around widgets**
|
||||
- **Disable fade-in during start-up**
|
||||
|
||||
- **Oscilloscope settings:**
|
||||
- **Rounded corners**
|
||||
- **Fill entire window**
|
||||
- **Waveform goes out of bounds**
|
||||
- **Border**
|
||||
|
||||
- **Pattern view spacing after:**
|
||||
- **Note**
|
||||
- **Instrument**
|
||||
- **Volume**
|
||||
- **Effect**
|
||||
- **Effect value**
|
||||
- **Color scheme**
|
||||
- **Import**
|
||||
- **Export**
|
||||
- **Reset defaults**
|
||||
- **General**
|
||||
- **Color scheme type:**
|
||||
- **Dark**
|
||||
- **Light**
|
||||
- **Frame shading**
|
||||
- several more categories...
|
||||
- **Borders around widgets**: draws thin borders on buttons, checkboxes, text widgets, and the like.
|
||||
|
||||
|
||||
|
||||
# Keyboard
|
||||
## Color
|
||||
|
||||
### Color scheme
|
||||
|
||||
- **Import**
|
||||
- **Export**
|
||||
- **Reset defaults**
|
||||
- several categories of keybinds...
|
||||
- click on a keybind then enter a key or key combination to change it
|
||||
- right-click to clear the keybind
|
||||
- **General**
|
||||
- **Color scheme type:**
|
||||
- **Dark**
|
||||
- **Light**
|
||||
- **Frame shading**: applies a gradient effect to buttons and input boxes.
|
||||
- several more categories...
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
# song info
|
||||
|
||||
- **Name**: The track's title.
|
||||
- **Author**: List of contributors to a song. If the song is a cover of someone else's track, it's customary to list their name first, followed by `[cv. YourName]`.
|
||||
- **Author**: List of contributors to a song. If the song is a cover of someone else's work, it's customary to list their name first, followed by `[cv. YourName]`.
|
||||
- **Album**: The associated album name, the name of the game the song is from, or whatever.
|
||||
- **System**: The game console or computer the track is designed for. This is automatically set when creating a new tune, but it can be changed to anything one wants. The **Auto** button will provide a guess based on the chips in use.
|
||||
- **System**: The game console or computer the track is designed for. This is automatically set when creating a new tune, but in advanced mode, it can be changed to anything one wants. The **Auto** button will provide a guess based on the chips in use.
|
||||
|
||||
All of this metadata will be included in a VGM export. This isn't the case for a WAV export, however.
|
||||
|
||||
**Tuning (A-4)**: Set tuning based on the note A-4, which should be 440 in most cases. Opening an Amiga MOD will set it to 436 for hardware compatibility.
|
||||
- _**Tuning (A-4)**:_ Set tuning based on the note A-4, which should be 440 in most cases. Opening an Amiga MOD will set it to 436 for hardware compatibility. Available only in advanced mode.
|
||||
|
||||
# subsongs
|
||||
|
||||
|
@ -23,6 +23,8 @@ This window allows one to create **subsongs** - multiple individual songs within
|
|||
|
||||
There are multiple ways to set the tempo of a song.
|
||||
|
||||
Items in _italics_ don't appear in basic mode and are only available in advanced mode.
|
||||
|
||||
**Tick Rate**: The frequency of ticks per second, thus the rate at which notes and effects are processed.
|
||||
- All values are allowed for all chips, though most chips have hardware limitations that mean they should stay at either 60 (approximately NTSC) or 50 (exactly PAL).
|
||||
- Clicking the Tick Rate button switches to a more traditional **Base Tempo** BPM setting.
|
||||
|
@ -30,14 +32,14 @@ There are multiple ways to set the tempo of a song.
|
|||
**Speed**: The number of ticks per row.
|
||||
- Clicking the "Speed" button changes to more complex modes covered in the [grooves] page.
|
||||
|
||||
**Virtual Tempo**: Simulates any arbitrary tempo without altering the tick rate. It does this by adding or skipping ticks to approximate the tempo. The two numbers represent a ratio applied to the actual tick rate. Example:
|
||||
_**Virtual Tempo**:_ Simulates any arbitrary tempo without altering the tick rate. It does this by adding or skipping ticks to approximate the tempo. The two numbers represent a ratio applied to the actual tick rate. Example:
|
||||
- Set tick rate to 150 BPM (60 Hz) and speed to 6.
|
||||
- Set the first virtual tempo number (numerator) to 200.
|
||||
- Set the second virtual tempo number (denominator) to 150.
|
||||
- The track will play at 200 BPM.
|
||||
- The ratio doesn't have to match BPM numbers. Set the numerator to 4 and the denominator to 5, and the virtual BPM becomes 150 × 4/5 = 120.
|
||||
|
||||
**Divider**: Changes the effective tick rate. A tick rate of 60Hz and a divisor of 6 will result in ticks lasting a tenth of a second each!
|
||||
_**Divider**:_ Changes the effective tick rate. A tick rate of 60Hz and a divisor of 6 will result in ticks lasting a tenth of a second each!
|
||||
|
||||
**Highlight**: Sets the pattern row highlights:
|
||||
- The first value represents the number of rows per beat.
|
||||
|
@ -46,4 +48,4 @@ There are multiple ways to set the tempo of a song.
|
|||
|
||||
**Pattern Length**: The length of each pattern in rows. This affects all patterns in the song, and every pattern must be the same length. (Individual patterns can be cut short by `0Bxx`, `0Dxx`, and `FFxx` commands.)
|
||||
|
||||
**Song Length**: How many orders are in the order list. Decreasing it will hide the orders at the bottom. Increasing it will restore those orders; increasing it further will add new orders of all `00` patterns.
|
||||
_**Song Length**:_ How many orders are in the order list. Decreasing it will hide the orders at the bottom. Increasing it will restore those orders; increasing it further will add new orders of all `00` patterns.
|
||||
|
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 128 KiB |
|
@ -4,41 +4,85 @@ the pattern view allows you to edit the song.
|
|||
|
||||
![pattern view](pattern.png)
|
||||
|
||||
a pattern consists of columns ("channels") and rows.
|
||||
a pattern consists of columns ("channels") and numbered rows.
|
||||
each column has several subcolumns in this order:
|
||||
|
||||
1. note
|
||||
2. instrument
|
||||
3. volume
|
||||
4. effect and effect value (several)
|
||||
4. effects, split into effect type and effect value
|
||||
|
||||
all columns are represented in hexadecimal, except for the note column.
|
||||
|
||||
# managing channels
|
||||
row highlights show beats and measures, and are configured in the [the Speed window](../2-interface/song-info.md).
|
||||
|
||||
you may mute channels, toggle solo mode, collapse channels or even hide them.
|
||||
|
||||
clicking on a channel name mutes that channel.
|
||||
|
||||
double-clicking or right-clicking it enables solo mode, in where only that channel will be audible.
|
||||
|
||||
clicking the `++` at the top left corner of the pattern view displays additional buttons for channel configuration:
|
||||
|
||||
![channel bar](channelbar.png)
|
||||
|
||||
to rename and/or hide channels, see the Channels window (window > channels).
|
||||
|
||||
![channels](channels.png)
|
||||
|
||||
# cursor and selection
|
||||
## cursor and selection
|
||||
|
||||
you may change the cursor position by clicking anywhere on the pattern.
|
||||
|
||||
to select, press and hold the left mouse button. then drag the mouse and release the button to finish selection.
|
||||
to select an area, press and hold the left mouse button. then drag the mouse and release the button to finish selection.
|
||||
|
||||
# keyboard layout
|
||||
right-clicking within the pattern view brings up a pop-up menu with everything in the [edit menu](../2-interface/menu-bar.md) that makes sense for entering data or altering a selected area.
|
||||
|
||||
## shortcuts
|
||||
|
||||
|
||||
## channel bar
|
||||
|
||||
using the channel bar, you may adjust several aspects of the channel display.
|
||||
|
||||
![channel bar](channelbar.png)
|
||||
|
||||
clicking on a channel name mutes that channel.
|
||||
|
||||
double-clicking or right-clicking it enables solo mode, in which only that channel will be audible.
|
||||
|
||||
clicking the `++` at the top left corner of the pattern view cycles through three channel bar view modes:
|
||||
- **Compact**: shows only channel names.
|
||||
- **Expanded**: as shown above. adds buttons:
|
||||
- **-**: collapse visible columns. changes to **+** when columns are hidden; click to expand them.
|
||||
- **<**: disables the last effect column and hides it. effects are not deleted...
|
||||
- **>**: adds an effects column. if one previously existed, its contents will be preserved.
|
||||
- **Pattern names**: adds a text field with which one can name the current pattern. pattern names are also visible when hovering over a pattern in the order list.
|
||||
|
||||
right-clicking the `++` toggles the visualizer, which is active only during playback.
|
||||
|
||||
to rename and/or hide channels, open [the Channels window](../8-advanced/channels.md) via the window menu.
|
||||
|
||||
|
||||
# input
|
||||
|
||||
## note input
|
||||
|
||||
![keyboard](keyboard.png)
|
||||
|
||||
- pressing any of the respective keys will insert a note at the cursor's location, then advance to the next row (or otherwise according to the Edit Step.)
|
||||
- **note off** turns off the last played note in that channel (key off for FM; note cut otherwise).
|
||||
- **note release** triggers macro release (and in FM channels it also triggers key off).
|
||||
- **macro release** does the same as above, but does not trigger key off in FM channels.
|
||||
- **toggle edit** enables and disables editing. when editing is enabled, the cursor's row will be shaded red.
|
||||
|
||||
## instrument/volume input
|
||||
|
||||
type any hexadecimal number (0-9 and A-F). the cursor will move by the Edit Step when a suitable value is entered.
|
||||
|
||||
## effect input
|
||||
|
||||
works like the instrument/volume input.
|
||||
|
||||
each effect column has two subcolumns: effect and effect value.
|
||||
if the effect value is not present, it is treated as `00`.
|
||||
|
||||
most effects run until canceled using an effect of the same type with effect value `00`, with some exceptions.
|
||||
|
||||
here's [a list of effect types](effects.md).
|
||||
|
||||
|
||||
|
||||
# keyboard shortcuts
|
||||
|
||||
these are the default key functions. all keys are configurable in the Keyboard tab of the Settings window.
|
||||
|
||||
key | action
|
||||
------------|-----------------------------------------------------------------
|
||||
|
@ -68,27 +112,3 @@ Ctrl-F2 | transpose selection (+1 semitone)
|
|||
Ctrl-F3 | transpose selection (-1 octave)
|
||||
Ctrl-F4 | transpose selection (+1 octave)
|
||||
Space | toggle note input (edit)
|
||||
|
||||
## note input
|
||||
|
||||
![keyboard](keyboard.png)
|
||||
|
||||
- pressing any of the respective keys will insert a note at the cursor's location, and then advance it by the Edit Step.
|
||||
- note off turns off the last played note in that channel (key off on FM; note cut otherwise).
|
||||
- note release triggers macro release (and in FM channels it also triggers key off).
|
||||
- macro release does the same as above, but does not trigger key off in FM channels.
|
||||
|
||||
## instrument/volume input
|
||||
|
||||
type any hexadecimal number (0-9 and A-F). the cursor will move by the Edit Step when a suitable value is entered.
|
||||
|
||||
## effect input
|
||||
|
||||
works like the instrument/volume input.
|
||||
|
||||
each effect column has two subcolumns: effect and effect value.
|
||||
if the effect value is not present, it is treated as `00`.
|
||||
|
||||
most effects run until canceled using an effect of the same type with effect value `00`, with some exceptions.
|
||||
|
||||
for a list of effects [click here](effects.md).
|
||||
|
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 65 KiB |
|
@ -14,7 +14,7 @@ however, effects are continuous, which means you only need to type it once and t
|
|||
- `F4xx`: **Fine volume slide down.** same as `0A0x` but 64× slower.
|
||||
- `F8xx`: **Single tick volume slide up.** adds `x` to volume on first tick only.
|
||||
- `F9xx`: **Single tick volume slide down.** subtracts `x` from volume on first tick only.
|
||||
|
||||
- ---
|
||||
- `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth.
|
||||
- Tremolo is downward only.
|
||||
- Maximum tremolo depth is -60 volume steps.
|
||||
|
@ -26,16 +26,17 @@ however, effects are continuous, which means you only need to type it once and t
|
|||
- `02xx`: **Pitch slide down.**
|
||||
- `F1xx`: **Single tick pitch slide up.**
|
||||
- `F2xx`: **Single tick pitch slide down.**
|
||||
|
||||
- `03xx`: **Portamento.** slides the current note's pitch to the specified note. `x` is the slide speed.
|
||||
- A note _must_ be present for this effect to work.
|
||||
- ---
|
||||
- `03xx`: **Portamento.** slides the currently playing note's pitch toward the new note. `x` is the slide speed.
|
||||
- a note _must_ be present with this effect for it to work.
|
||||
- the effect stops automatically when it reaches the new note.
|
||||
- `E1xy`: **Note slide up.** `x` is the speed, while `y` is how many semitones to slide up.
|
||||
- `E2xy`: **Note slide down.** `x` is the speed, while `y` is how many semitones to slide down.
|
||||
|
||||
- `EAxx`: **Toggle legato.** while on, notes instantly change the pitch of the currrently playing sound instead of starting it over.
|
||||
- ---
|
||||
- `EAxx`: **Toggle legato.** while on, new notes instantly change the pitch of the currently playing sound instead of starting it over.
|
||||
- `00xy`: **Arpeggio.** after using this effect the channel will rapidly switch between semitone values of `note`, `note + x` and `note + y`.
|
||||
- `E0xx`: **Set arpeggio speed.** this sets the number of ticks between arpeggio values. default is 1.
|
||||
|
||||
- ---
|
||||
- `04xy`: **Vibrato.** changes pitch to be "wavy" with a sine LFO. `x` is the speed, while `y` is the depth.
|
||||
- Maximum vibrato depth is ±1 semitone.
|
||||
- `E3xx`: **Set vibrato direction.** `xx` may be one of the following:
|
||||
|
@ -54,7 +55,7 @@ not all chips support these effects.
|
|||
- `82xx`: **Set volume of right channel** (from `00` to `FF`).
|
||||
- `89xx`: **Set volume of rear left channel** (from `00` to `FF`).
|
||||
- `8Axx`: **Set volume of rear right channel** (from `00` to `FF`).
|
||||
|
||||
- ---
|
||||
- `80xx`: **Set panning (linear).** this effect behaves more like other trackers:
|
||||
- `00` is left.
|
||||
- `80` is center.
|
||||
|
@ -64,15 +65,15 @@ not all chips support these effects.
|
|||
|
||||
- `09xx`: **Set speed/groove.** if no grooves are defined, this sets speed. If alternating speeds are active, this sets the first speed.
|
||||
- `0Fxx`: **Set speed 2.** during alternating speeds or a groove, this sets the second speed.
|
||||
|
||||
- ---
|
||||
- `Cxxx`: **Set tick rate.** changes tick rate to `xxx` Hz (ticks per second).
|
||||
- `xxx` may be from `000` to `3FF`.
|
||||
- `F0xx`: **Set BPM.** changes tick rate according to beats per minute. range is `01` to `FF`.
|
||||
|
||||
- ---
|
||||
- `0Bxx`: **Jump to order.** `x` is the order to play after the current row.
|
||||
- this marks the end of a loop with order `x` as the loop start.
|
||||
- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order.
|
||||
- this can be used to shorten the current order.
|
||||
- `0Dxx`: **Jump to next pattern.** skips the current row and remainder of current order. `x` is the row at which to start playing the next pattern.
|
||||
- this can be used to shorten the current order as though it had a different pattern length.
|
||||
- `FFxx`: **Stop song.** stops playback and ends the song. `x` is ignored.
|
||||
|
||||
## note
|
||||
|
@ -84,65 +85,65 @@ not all chips support these effects.
|
|||
|
||||
## other
|
||||
|
||||
- `9xxx`: **Set sample position.** jumps current sample to position `xxx \* 0x100`.
|
||||
- `9xxx`: **Set sample position.** jumps current sample to position `xxx * 0x100`.
|
||||
- Not all chips support this effect.
|
||||
- `EBxx`: **Set sample bank.**
|
||||
- Does not apply on Amiga.
|
||||
- `EBxx`: **Set LEGACY sample mode bank.** selects sample bank. used only for compatibility.
|
||||
- does not apply on Amiga.
|
||||
- `EExx`: **Send external command.**
|
||||
- This effect is currently incomplete.
|
||||
- `F5xx`: **Disable macro.** see macro table at the end of this document for possible values.
|
||||
- `F6xx`: **Enable macro.**
|
||||
- this effect is currently incomplete.
|
||||
- `F5xx`: **Disable macro.**\
|
||||
`F6xx`: **Enable macro.** see macro table at the end of this document for possible values.
|
||||
|
||||
additionally, [each chip has its own effects](../7-systems/README.md).
|
||||
|
||||
## macro table
|
||||
|
||||
ID | macro
|
||||
---|-----------------------------
|
||||
00 | volume
|
||||
01 | arpeggio
|
||||
02 | duty/noise
|
||||
03 | waveform
|
||||
04 | pitch
|
||||
05 | extra 1
|
||||
06 | extra 2
|
||||
07 | extra 3
|
||||
08 | extra A (ALG)
|
||||
09 | extra B (FM)
|
||||
0A | extra C (FMS)
|
||||
0B | extra D (AMS)
|
||||
0C | panning left
|
||||
0D | panning right
|
||||
0E | phase reset
|
||||
0F | extra 4
|
||||
10 | extra 5
|
||||
11 | extra 6
|
||||
12 | extra 7
|
||||
13 | extra 8
|
||||
| | **operator 1 macros**
|
||||
20 | AM
|
||||
21 | AR
|
||||
22 | DR
|
||||
23 | MULT
|
||||
24 | RR
|
||||
25 | SL
|
||||
26 | TL
|
||||
27 | DT2
|
||||
28 | RS
|
||||
29 | DT
|
||||
2A | D2R
|
||||
2B | SSG-EG
|
||||
2C | DAM
|
||||
2D | DVB
|
||||
2E | EGT
|
||||
2F | KSL
|
||||
30 | SUS
|
||||
31 | VIB
|
||||
32 | WS
|
||||
33 | KSR
|
||||
40 | **operator 2 macros**
|
||||
60 | **operator 3 macros**
|
||||
80 | **operator 4 macros**
|
||||
ID | macro
|
||||
-----|-----------------------------
|
||||
`00` | volume
|
||||
`01` | arpeggio
|
||||
`02` | duty/noise
|
||||
`03` | waveform
|
||||
`04` | pitch
|
||||
`05` | extra 1
|
||||
`06` | extra 2
|
||||
`07` | extra 3
|
||||
`08` | extra A (ALG)
|
||||
`09` | extra B (FM)
|
||||
`0A` | extra C (FMS)
|
||||
`0B` | extra D (AMS)
|
||||
`0C` | panning left
|
||||
`0D` | panning right
|
||||
`0E` | phase reset
|
||||
`0F` | extra 4
|
||||
`10` | extra 5
|
||||
`11` | extra 6
|
||||
`12` | extra 7
|
||||
`13` | extra 8
|
||||
| | **operator 1 macros**
|
||||
`20` | AM
|
||||
`21` | AR
|
||||
`22` | DR
|
||||
`23` | MULT
|
||||
`24` | RR
|
||||
`25` | SL
|
||||
`26` | TL
|
||||
`27` | DT2
|
||||
`28` | RS
|
||||
`29` | DT
|
||||
`2A` | D2R
|
||||
`2B` | SSG-EG
|
||||
`2C` | DAM
|
||||
`2D` | DVB
|
||||
`2E` | EGT
|
||||
`2F` | KSL
|
||||
`30` | SUS
|
||||
`31` | VIB
|
||||
`32` | WS
|
||||
`33` | KSR
|
||||
`40` | **operator 2 macros**
|
||||
`60` | **operator 3 macros**
|
||||
`80` | **operator 4 macros**
|
||||
|
||||
the interpretation of duty, wave and extra macros depends on chip/instrument type:
|
||||
|
||||
|
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 243 KiB After Width: | Height: | Size: 294 KiB |
After Width: | Height: | Size: 184 KiB |
|
@ -1,113 +1,134 @@
|
|||
# instrument list
|
||||
|
||||
![instrument list](list.png)
|
||||
|
||||
click on an instrument to select it.
|
||||
|
||||
double-click to open the instrument editor.
|
||||
|
||||
# instrument editor
|
||||
|
||||
every instrument can be renamed and have its type changed.
|
||||
|
||||
depending on the instrument type, there are many different types of instrument editor:
|
||||
|
||||
- [FM synthesis](fm.md) - for use with YM2612, YM2151 and FM block portion of YM2610.
|
||||
- [Standard](standard.md) - for use with NES and Sega Master System's PSG sound source and its derivatives.
|
||||
- [Game Boy](game-boy.md) - for use with Game Boy APU.
|
||||
- [PC Engine / TurboGrafx-16](pce.md) - for use with PC Engine's wavetable synthesizer.
|
||||
- [WonderSwan](wonderswan.md) - for use with WonderSwan's wavetable synthesizer.
|
||||
- [AY8930](8930.md) - for use with Microchip AY8930 E-PSG sound source.
|
||||
- [Commodore 64](c64.md) - for use with Commodore 64 SID.
|
||||
- [SAA1099](saa.md) - for use with Philips SAA1099 PSG sound source.
|
||||
- [TIA](tia.md) - for use with Atari 2600 chip.
|
||||
- [AY-3-8910](ay8910.md) - for use with AY-3-8910 PSG sound source and SSG portion in YM2610.
|
||||
- [Amiga / sample](amiga.md) for controlling Amiga and other sample based synthsizers like YM2612's Channel 6 PCM mode, NES channel 5, Sega PCM, X1-010 and PC Engine's sample playback mode.
|
||||
- [Atari Lynx](lynx.md) - for use with Atari Lynx handheld console.
|
||||
- [VERA](vera.md) - for use with Commander X16 VERA.
|
||||
- [Seta/Allumer X1-010](x1_010.md) - for use with Wavetable portion in Seta/Allumer X1-010.
|
||||
- [Konami SCC / Bubble System WSG](scc.md) - for use with Konami SCC and Wavetable portion in Bubble System's sound hardware.
|
||||
- [Namco 163](n163.md) - for use with Namco 163.
|
||||
- [Konami VRC6](vrc6.md) - for use with VRC6's PSG sound source.
|
||||
- [SNES](snes.md) - for use with SNES S-APU.
|
||||
- [Casio PV-1000](pv1000.md) - for use with Casio PV-1000.
|
||||
|
||||
|
||||
# macros
|
||||
|
||||
Macros are incredibly versatile tools for automating instrument parameters.
|
||||
|
||||
After creating an instrument, open the Instrument Editor and select the "Macros" tab. There may be multiple macro tabs to control individual FM operators and such.
|
||||
|
||||
![macro view](macroview.png)
|
||||
|
||||
The very first numeric entry sets the visible width of the bars in sequence-type macros. The scrollbar affects the view of all macros at once. There's a matching scrollbar at the bottom underneath all the macros.
|
||||
|
||||
Each macro has two buttons on the left.
|
||||
- Macro type (explained below).
|
||||
- Timing editor, which pops up a small dialog:
|
||||
- Step Length (ticks): Determines how many ticks pass before each change of value.
|
||||
- Delay: Delays the start of the macro until this many ticks have passed.
|
||||
|
||||
## macro types
|
||||
|
||||
Every macro can be defined though one of three methods, selectable with the leftmost button under the macro type label:
|
||||
|
||||
- ![](macro-button-seq.png) **Sequence:** displayed as a bar graph, this is a sequence of numeric values.
|
||||
- ![](macro-button-ADSR.png) **ADSR:** this is a traditional ADSR envelope, defined by the rate of increase and decrease of value over time.
|
||||
- ![](macro-button-LFO.png) **LFO:** the Low Frequency Oscillator generates a repeating wave of values.
|
||||
|
||||
Some macros are "bitmap" style. They represent a number of "bits" that can be toggled individually, and the values listed represent the sum of which bits are turned on.
|
||||
|
||||
### sequence
|
||||
|
||||
![sequence macro editor](macro-seq.png)
|
||||
|
||||
The number between the macro type label and the macro type button is the macro length in steps. The `-` and `+` buttons change the length of the macro. Start out by adding at least a few steps.
|
||||
|
||||
The values of the macro can be drawn in the "bar graph box". Just beneath the box is shorter bar graph.
|
||||
- Click to set the start point of a loop; the end point is the last value or release point. Right-click to remove the loop.
|
||||
- Shift-click to set the release point. When played, the macro will hold here until the note is released. Right-click to remove the release point.
|
||||
|
||||
Finally, the sequence of values can be directly edited in the text box at the bottom.
|
||||
- The loop start is entered as a `|`.
|
||||
- The release point is entered as a `/`.
|
||||
- In arpeggio macros, a value starting with a `@` is an absolute note (instead of a relative shift). No matter the note played, `@` values will be played at that exact note. This is especially useful for noise instruments with preset periods.
|
||||
|
||||
### ADSR
|
||||
|
||||
![ADSR macro editor](macro-ADSR.png)
|
||||
|
||||
- **Bottom** and **Top** determine the range of outputs generated by the macro. (Bottom can be larger than Top to invert the envelope!) All outputs will be between these two values.
|
||||
- Attack, Decay, Sustain, SusDecay, and Release accept inputs between 0 to 255. These are scaled to the distance between Bottom and Top.
|
||||
- **Attack** is how much the value moves toward Top with each tick.
|
||||
- **Hold** sets how many ticks to stay at Top before Decay.
|
||||
- **Decay** is how much the value moves to the Sustain level.
|
||||
- **Sustain** is how far from Bottom the value stays while the note is held.
|
||||
- **SusTime** is how many ticks to stay at Sustain until SusDecay.
|
||||
- **SusDecay** is how much the value moves toward Bottom with each tick while the note is held.
|
||||
- **Release** is how much the value moves toward Bottom with each tick after the note is released.
|
||||
|
||||
![macro ADSR chart](macro-ADSRchart.png)
|
||||
|
||||
### LFO
|
||||
|
||||
![LFO macro editor](macro-LFO.png)
|
||||
|
||||
- **Bottom** and **Top** determine the range of values generated by the macro. (Bottom can be larger than Top to invert the waveform!)
|
||||
- **Speed** is how quickly the values change - the frequency of the oscillator.
|
||||
- **Phase** is which part of the waveform the macro will start at, measured in 1/1024 increments.
|
||||
- **Shape** is the waveform used. Triangle is the default, and Saw and Square are exactly as they say.
|
||||
|
||||
# samples
|
||||
|
||||
This tab appears for Generic PCM, SNES, Amiga, and other sample-based instruments.
|
||||
|
||||
![](sample-map.png)
|
||||
|
||||
- **Initial Sample**: the sample that the instrument will use.
|
||||
- **Use wavetable**: instead of samples, use wavetables. this causes the [Wavetables](../5-wave/README.md) tab to appear next to Sample.
|
||||
- depending on the system and use of the wavetable synthesizer, this may or may not be reproducible on hardware.
|
||||
- **Use sample map**: assigns a sample to each note.
|
||||
- samples will be played at their default pitch.
|
||||
- to set a note's sample, click the list entry in the `#` column then type the number of the sample.
|
||||
# instrument editor
|
||||
|
||||
the instrument editor always starts with this section:
|
||||
|
||||
![top of instrument editor](instrument-editor-top.png)
|
||||
|
||||
- top-left numeric dropdown: instrument selector.
|
||||
- folder icon: open an instrument file.
|
||||
- save icon: save current instrument as a file.
|
||||
- right-clicking gives the option to save a .dmp format DefleMask preset.
|
||||
- **Name**: instrument name.
|
||||
- **Type**: the system for which the instrument is intended.
|
||||
- if changed, all applicable settings and macros will remain as they are. numbers will not be adjusted.
|
||||
|
||||
depending on the instrument type, there are many different types of instrument editor:
|
||||
|
||||
- [FM synthesis](fm.md) - for use with YM2612, YM2151 and FM block portion of YM2610.
|
||||
- [PSG](psg.md) - for use with TI SN76489 and derivatives like Sega Master System's PSG.
|
||||
- [NES](nes.md) - for use with NES.
|
||||
- [Game Boy](game-boy.md) - for use with Game Boy APU.
|
||||
- [PC Engine / TurboGrafx-16](pce.md) - for use with PC Engine's wavetable synthesizer.
|
||||
- [WonderSwan](wonderswan.md) - for use with WonderSwan's wavetable synthesizer.
|
||||
- [AY8930](8930.md) - for use with Microchip AY8930 E-PSG sound source.
|
||||
- [Commodore 64](c64.md) - for use with Commodore 64 SID.
|
||||
- [SAA1099](saa.md) - for use with Philips SAA1099 PSG sound source.
|
||||
- [TIA](tia.md) - for use with Atari 2600 chip.
|
||||
- [AY-3-8910](ay8910.md) - for use with AY-3-8910 PSG sound source and SSG portion in YM2610.
|
||||
- [Generic Sample](amiga.md) for controlling Amiga and other sample channels/chips like YM2612's Channel 6 PCM mode, NES channel 5, Sega PCM, X1-010 and PC Engine's sample playback mode.
|
||||
- [Atari Lynx](lynx.md) - for use with Atari Lynx handheld console.
|
||||
- [VERA](vera.md) - for use with Commander X16 VERA.
|
||||
- [Seta/Allumer X1-010](x1_010.md) - for use with Wavetable portion in Seta/Allumer X1-010.
|
||||
- [Konami SCC / Bubble System WSG](scc.md) - for use with Konami SCC and Wavetable portion in Bubble System's sound hardware.
|
||||
- [Namco 163](n163.md) - for use with Namco 163.
|
||||
- [Konami VRC6](vrc6.md) - for use with VRC6's PSG sound source.
|
||||
- [SNES](snes.md) - for use with SNES S-APU.
|
||||
- [Casio PV-1000](pv1000.md) - for use with Casio PV-1000.
|
||||
- [C140](c140.md) for use with Namco C140.
|
||||
|
||||
|
||||
# macros
|
||||
|
||||
Macros are incredibly versatile tools for automating instrument parameters.
|
||||
|
||||
After creating an instrument, open the Instrument Editor and select the "Macros" tab. There may be multiple macro tabs to control individual FM operators and such.
|
||||
|
||||
![macro view](macroview.png)
|
||||
|
||||
The very first numeric entry sets the visible width of the bars in sequence-type macros. The scrollbar affects the view of all macros at once. There's a matching scrollbar at the bottom underneath all the macros.
|
||||
|
||||
Each macro has two buttons on the left.
|
||||
- Macro type (explained below).
|
||||
- Timing editor, which pops up a small dialog:
|
||||
- Step Length (ticks): Determines how many ticks pass before each change of value. Default is 1.
|
||||
- Delay: Delays the start of the macro until this many ticks have passed. Default is 0.
|
||||
- The button is highlighted if either of these is set differently from default.
|
||||
|
||||
## macro types
|
||||
|
||||
Every macro can be defined though one of three methods, selectable with the leftmost button under the macro type label:
|
||||
|
||||
- ![](macro-button-seq.png) **Sequence:** displayed as a bar graph, this is a sequence of numeric values.
|
||||
- ![](macro-button-ADSR.png) **ADSR:** this is a traditional ADSR envelope, defined by the rate of increase and decrease of value over time.
|
||||
- ![](macro-button-LFO.png) **LFO:** the Low Frequency Oscillator generates a repeating wave of values.
|
||||
|
||||
Some macros are "bitmap" style. They represent a number of "bits" that can be toggled individually, and the values listed represent the sum of which bits are turned on.
|
||||
|
||||
### sequence
|
||||
|
||||
![sequence macro editor](macro-seq.png)
|
||||
|
||||
The number between the macro type label and the macro type button is the macro length in steps. The `-` and `+` buttons change the length of the macro. Start out by adding at least a few steps.
|
||||
|
||||
The values of the macro can be drawn in the "bar graph" box.
|
||||
|
||||
Just beneath the box is a shorter bar that controls looping.
|
||||
- Click to set the start point of a loop; the end point is the last value or release point. It appears as half-height bars. Right-click to remove the loop.
|
||||
- Shift-click to set the release point. When played, the macro will hold here until the note is released. It appears as a full-height bar. Right-click to remove the release point.
|
||||
|
||||
Finally, the sequence of values can be directly edited in the text box at the bottom.
|
||||
- The loop start is entered as a `|`.
|
||||
- The release point is entered as a `/`.
|
||||
- In arpeggio macros, a value starting with a `@` is an absolute note (instead of a relative shift). No matter the note entered in the pattern, `@` values will be played at that exact note. This is especially useful for noise instruments with preset periods.
|
||||
|
||||
### ADSR
|
||||
|
||||
![ADSR macro editor](macro-ADSR.png)
|
||||
|
||||
- **Bottom** and **Top** determine the range of outputs generated by the macro. (Bottom can be larger than Top to invert the envelope!) All outputs will be between these two values.
|
||||
- Attack, Decay, Sustain, SusDecay, and Release accept inputs between 0 to 255. These are scaled to the distance between Bottom and Top.
|
||||
- **Attack** is how much the value moves toward Top with each tick.
|
||||
- **Hold** sets how many ticks to stay at Top before Decay.
|
||||
- **Decay** is how much the value moves to the Sustain level.
|
||||
- **Sustain** is how far from Bottom the value stays while the note is held.
|
||||
- **SusTime** is how many ticks to stay at Sustain until SusDecay.
|
||||
- **SusDecay** is how much the value moves toward Bottom with each tick while the note is held.
|
||||
- **Release** is how much the value moves toward Bottom with each tick after the note is released.
|
||||
|
||||
![macro ADSR chart](macro-ADSRchart.png)
|
||||
|
||||
### LFO
|
||||
|
||||
![LFO macro editor](macro-LFO.png)
|
||||
|
||||
- **Bottom** and **Top** determine the range of values generated by the macro. (Bottom can be larger than Top to invert the waveform!)
|
||||
- **Speed** is how quickly the values change - the frequency of the oscillator.
|
||||
- **Phase** is which part of the waveform the macro will start at, measured in 1/1024 increments.
|
||||
- **Shape** is the waveform used. Triangle is the default, and Saw and Square are exactly as they say.
|
||||
|
||||
|
||||
|
||||
# wavetable
|
||||
|
||||
This tab appears for PC Engine, FDS, Namco WSG, and other wavetable-based instruments.
|
||||
|
||||
![wavetable tab](wavetable.png)
|
||||
|
||||
When **Enable synthesizer** is off, the wavetable used for the instrument may be selected by creating a Waveform macro with a single value.
|
||||
|
||||
To use the wavetable synthesizer, refer to the bottom part of [the wavetable documentation](../5-wave/README.md).
|
||||
|
||||
|
||||
# sample
|
||||
|
||||
This tab appears for Generic PCM, SNES, Amiga, and other sample-based instruments.
|
||||
|
||||
![sample tab](sample-map.png)
|
||||
|
||||
- **Initial Sample**: the sample that the instrument will use.
|
||||
- **Use wavetable**: instead of samples, use wavetables. this causes the [Wavetables](../5-wave/README.md) tab to appear next to Sample.
|
||||
- depending on the system and use of the wavetable synthesizer, this may or may not be reproducible on hardware.
|
||||
- **Use sample map**: assigns a sample to each note.
|
||||
- to set a note's sample, click the list entry in the "#" column then type the number of the sample.
|
||||
- to set the pitch at which a sample is played, click the list entry in the "note" column and press the key for the new note.
|
||||
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
# Amiga/PCM sound source instrument editor
|
||||
|
||||
The PCM instrument editor consists of a sample selector and several macros:
|
||||
The Generic Sample instrument editor consists of a sample selector and several macros:
|
||||
|
||||
# Amiga/sample
|
||||
# Sample
|
||||
|
||||
- **Initial sample**: specifies which sample should be assigned to the instrument, or the first one in the sequence
|
||||
- **Use sample map**: enables mapping different samples to notes.
|
||||
|
||||
# Macros
|
||||
|
||||
- **Volume**: volume sequence. _warning:_ it works only on Amiga system, as of version 0.5.5!
|
||||
- **Arpeggio**: pitch sequence
|
||||
- **Waveform**: sample sequence
|
||||
- **Panning (left)**: output level for left channel
|
||||
- **Panning (right)**: output level for right channel
|
||||
- **Pitch**: fine pitch
|
||||
- **Phase Reset**: trigger restart of waveform
|
||||
- **Volume**: volume sequence. does not apply to some chips.
|
||||
- **Arpeggio**: pitch sequence.
|
||||
- **Waveform**: waveform sequence.
|
||||
- **Panning (left)**: output level for left channel.
|
||||
- **Panning (right)**: output level for right channel.
|
||||
- **Pitch**: fine pitch.
|
||||
- **Phase Reset**: trigger restart of waveform.
|
|
@ -0,0 +1,17 @@
|
|||
# Namco C140 instrument editor
|
||||
|
||||
the Namco C140 instrument editor consists of a sample selector and several macros:
|
||||
|
||||
# Sample
|
||||
|
||||
- **Initial sample**: specifies which sample should be assigned to the instrument, or the first one in the sequence.
|
||||
- **Use sample map**: enables mapping different samples to notes.
|
||||
|
||||
# Macros
|
||||
|
||||
- **Volume**: volume sequence.
|
||||
- **Arpeggio**: pitch sequence.
|
||||
- **Panning (left)**: output level for left channel.
|
||||
- **Panning (right)**: output level for right channel.
|
||||
- **Pitch**: fine pitch.
|
||||
- **Phase Reset**: trigger restart of sample.
|
|
@ -1,47 +1,77 @@
|
|||
# FM synthesis instrument editor
|
||||
|
||||
FM editor is divided into 7 tabs:
|
||||
The FM editor is divided into 7 tabs:
|
||||
|
||||
- **FM**: for controlling the basic parameters of FM sound source.
|
||||
- **Macros (FM)**: for macros controlling algorithm, feedback and LFO
|
||||
- **Macros (OP1)**: for macros controlling FM paramets of operator 1
|
||||
- **Macros (OP2)**: for macros controlling FM paramets of operator 2
|
||||
- **Macros (OP3)**: for macros controlling FM paramets of operator 3
|
||||
- **Macros (OP4)**: for macros controlling FM paramets of operator 4
|
||||
- **Macros**: for miscellaneous macros controlling volume, argeggio and YM2151 noise generator.
|
||||
- **Macros (OP1)**: for macros controlling FM parameters of operator 1
|
||||
- **Macros (OP2)**: for macros controlling FM parameters of operator 2
|
||||
- **Macros (OP3)**: for macros controlling FM parameters of operator 3
|
||||
- **Macros (OP4)**: for macros controlling FM parameters of operator 4
|
||||
- **Macros**: for miscellaneous macros controlling volume, arpeggio, and YM2151 noise generator.
|
||||
|
||||
## FM
|
||||
|
||||
FM synthesizers Furnace supports are four-operator, meaning it takes four oscillators to produce a single sound. Each operator is controlled by a dozen sliders:
|
||||
The FM synthesizers Furnace supports are four-operator, meaning it takes four oscillators to produce a single sound.
|
||||
|
||||
These apply to the instrument as a whole:
|
||||
- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself. (0-7 range)
|
||||
- **Algorithm (AL)**: Determines how operators are connected to each other. (0-7 range)
|
||||
- Left-click pops up a small "operators changes with volume?" dialog where each operator can be toggled to scale with volume level.
|
||||
- Right-click to switch to a preview display of the waveform generated on a new note:
|
||||
- Left-click restarts the preview.
|
||||
- Middle-click pauses and unpauses the preview.
|
||||
- Right-click returns to algorithm view.
|
||||
|
||||
- **LFO Frequency Sensitivity**: Determines the amount of LFO frequency changes. (0-7 range)
|
||||
- **LFO Amplitude Sensitivity (AM)**: Determines the amount of LFO amplitude changes. (0-3 range)
|
||||
|
||||
These apply to each operator:
|
||||
- The crossed-arrows button can be dragged to rearrange operators.
|
||||
- The **OP1**, **OP2**, **OP3**, and **OP4** buttons enable or disable those operators.
|
||||
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO.
|
||||
- **Hardware Envelope Generator (SSG-EG)**: Executes the built-in envelope, inherited from AY-3-8910 PSG. Speed of execution is controlled via Decay Rate. YM2610/YM2612 sound source only.
|
||||
- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack. (0-31 range)
|
||||
- **Decay Rate (DR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. It's the initial amplitude decay rate. (0-31 range)
|
||||
- **Secondary Decay Rate (DR2)/Sustain Rate (SR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. This is the long "tail" of the sound that continues as long as the key is depressed. (0-31 range)
|
||||
- **Sustain Level (SL)**: Determines the point at which the sound ceases to decay and changes to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. (0-15 range)
|
||||
- **Secondary Decay Rate (DR2) / Sustain Rate (SR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. This is the long "tail" of the sound that continues as long as the key is depressed. (0-31 range)
|
||||
- **Release Rate (RR)**: Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. (0-15 range)
|
||||
- **Sustain Level(SL)**: Determines the point at which the sound ceases to decay and changes to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. (0-15 range)
|
||||
- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 127 (decimal) the smallest. A change of one unit is about 0.75 dB.
|
||||
- **Envelope Scale (KSR)**: A parameter that determines the degree to which the envelope execution speed increases according to the pitch. (0-3 range)
|
||||
|
||||
![FM ADSR chart](FM-ADSRchart.png)
|
||||
|
||||
- **Envelope Scale (KSR)**: Also known as "Key Scale". Determines the degree to which the envelope execution speed increases according to the pitch. (0-3 range)
|
||||
- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch. (0-15 range)
|
||||
- **Fine Detune (DT)**: Shifts the pitch a little (0-7 range)
|
||||
- **Coarse Detune (DT2)**: Shifts the pitch by tens of cents (0-3 range) WARNING: this parameter affects only YM2151 sound source!!!
|
||||
- **Hardware Envelope Generator (SSG-EG)**: Executes the built-in envelope, inherited from AY-3-8910 PSG. Speed of execution is controlled via Decay Rate. WARNING: this parameter affects only YM2610/YM2612 sound source!!!
|
||||
- **Algorithm (AL)**: Determines how operators are connected to each other. (0-7 range)
|
||||
- **Feedback (FB)**: Determines the amount of signal whick operator 1 returns to itself. (0-7 range)
|
||||
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO.
|
||||
- **LFO Frequency Sensitivity**: Determines the amount of LFO frequency changes. (0-7 range)
|
||||
- **LFO Amplitude Sensitivity (AM)**: Determines the amount of LFO frequency changes. (0-3 range)
|
||||
- **Fine Detune (DT)**: Shifts the pitch a little. (0-7 range)
|
||||
- **Coarse Detune (DT2)**: Shifts the pitch by tens of cents. (0-3 range) YM2151 sound source only.
|
||||
|
||||
|
||||
## macros
|
||||
|
||||
Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled:
|
||||
|
||||
## FM Macros
|
||||
|
||||
- **AM Depth**: amplitude modulation depth. YM2151 sound source only.
|
||||
- **PM Depth**: pitch modulation depth. YM2151 sound source only.
|
||||
- **LFO Speed**: LFO frequency.
|
||||
- **LFO Shape**: LFO shape. Choose between saw, square, triangle, and random.
|
||||
- **OpMask**: toggles each operator.
|
||||
|
||||
## OP1-OP4 Macros
|
||||
|
||||
All parameters are listed above.
|
||||
|
||||
## Macros
|
||||
|
||||
Macros define the sequence of values passed to the given parameter. Via macro, aside previously mentioned parameters, the following can be controlled:
|
||||
|
||||
- **LFO Frequency**
|
||||
- **LFO Waveform**: _WARNING:_ this parameter affects only YM2151 sound source!
|
||||
- **Amplitude Modulation Depth**: _WARNING:_ this parameter affects only YM2151 sound source!
|
||||
- **Frequency Modulation Depth**: _WARNING:_ this parameter affects only YM2151 sound source!
|
||||
- **Arpeggio Macro**: Pitch change sequence in semitones. Two modes are available:
|
||||
- **Absolute** (default): Executes the pitch with absolute change based on the pitch of the actual note.
|
||||
- **Fixed**: Executes at the pitch specified in the sequence regardless of the note pitch.
|
||||
- **Arpeggio**: Pitch change sequence in semitones.
|
||||
- **Noise Frequency**: specifies the noise frequency in noise mode of YM2151's Channel 8 Operator 4 special mode.
|
||||
- **Panning**: toggles output on left and right channels.
|
||||
- **Pitch**: fine pitch.
|
||||
- **Relative**: pitch changes are relative to the current pitch, not the note's base pitch.
|
||||
- **Phase Reset**: Restarts all operators and resets the waveform to its start. Effectively the same as a `0Cxx` retrigger.
|
||||
|
||||
Looping: You can loop the execution of part of a sequence. Left-click anywhere on the Loop line at the bottom of the editor to create a loop. You can move the start and end points of the loop by dragging both ends of the loop. Rigkt-click to remove the loop.
|
||||
|
||||
# links
|
||||
|
||||
[FM instrument tutorial](https://www.youtube.com/watch?v=wS8edjurjDw): A great starting point to learn how create and work with FM sounds. This was made for DefleMask, but all the same principles apply.
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
# OPL FM synthesis instrument editor
|
||||
|
||||
The OPL FM editor is divided into 7 tabs:
|
||||
|
||||
- **FM**: for controlling the basic parameters of FM sound source.
|
||||
- **Macros (FM)**: for macros controlling algorithm and feedback
|
||||
- **Macros (OP1)**: for macros controlling FM parameters of operator 1
|
||||
- **Macros (OP2)**: for macros controlling FM parameters of operator 2
|
||||
- **Macros (OP3)**: for macros controlling FM parameters of operator 3 (Warning: only when 4-op flag is set, only on OPL3!)
|
||||
- **Macros (OP4)**: for macros controlling FM parameters of operator 4 (Warning: only when 4-op flag is set, only on OPL3!)
|
||||
- **Macros**: for miscellaneous macros controlling volume, arpeggio, and YMF262 panning.
|
||||
|
||||
## FM
|
||||
|
||||
The OPL synthesizers are nominally two-operator (OPL3 supports limited 4-operator mode), meaning it takes two oscillators to produce a single sound.
|
||||
|
||||
These apply to the instrument as a whole:
|
||||
- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself. (0-7 range)
|
||||
- **Algorithm (AL)**: Determines how operators are connected to each other. (0-1 range and OPL1 and OPL2, 0-3 range on OPL3 4op mode)
|
||||
- Left-click pops up a small "operators changes with volume?" dialog where each operator can be toggled to scale with volume level.
|
||||
- Right-click to switch to a preview display of the waveform generated on a new note:
|
||||
- Left-click restarts the preview.
|
||||
- Middle-click pauses and unpauses the preview.
|
||||
- Right-click returns to algorithm view.
|
||||
|
||||
- **4-op**: Enables 4-operator FM instrument editor mode (ONLY ON OPL3)
|
||||
- **Drums**: Enables OPL drum mode editor
|
||||
|
||||
These apply to each operator:
|
||||
- The crossed-arrows button can be dragged to rearrange operators.
|
||||
- The **OP1**, **OP2**, **OP3**, and **OP4** buttons enable or disable those operators.
|
||||
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO tremolo.
|
||||
- **Sustain flag (SUS)**: When enabled, value of Sustain Level is in effect.
|
||||
- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack. (0-15 range)
|
||||
- **Decay Rate (DR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. It's the initial amplitude decay rate. (0-315 range)
|
||||
- **Sustain Level (SL)**: Determines the point at which the sound ceases to decay and changes to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. (0-15 range)
|
||||
- **Release Rate (RR)**: Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. (0-15 range)
|
||||
- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 63 (decimal) the smallest. A change of one unit is about 0.75 dB.
|
||||
|
||||
![FM ADSR chart](FM-ADSRchart.png)
|
||||
|
||||
- **Envelope Scale (KSR)**: Also known as "Key Scale". Determines the degree to which the envelope execution speed increases according to the pitch.
|
||||
- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch. (0-10, 12, 15 range)
|
||||
- **Waveform select (WS)**: Changes the waveform generated by oscillator (OPL2 and OPL3 only, 0-7 range)
|
||||
- **Pitch Modulation (VIB)**: Makes the operator affected by LFO vibrato.
|
||||
|
||||
## macros
|
||||
|
||||
Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled:
|
||||
|
||||
## FM Macros
|
||||
|
||||
All parameters are listed above.
|
||||
|
||||
## OP1-OP4 Macros
|
||||
|
||||
All parameters are listed above.
|
||||
|
||||
## Macros
|
||||
|
||||
- **Arpeggio**: Pitch change sequence in semitones.
|
||||
- **Panning**: toggles output on left and right channels. (OPL3 only!)
|
||||
- **Pitch**: fine pitch.
|
||||
- **Relative**: pitch changes are relative to the current pitch, not the note's base pitch.
|
||||
- **Phase Reset**: Restarts all operators and resets the waveform to its start. Effectively the same as a `0Cxx` retrigger.
|
||||
|
||||
|
||||
# links
|
||||
|
||||
[FM instrument tutorial](https://www.youtube.com/watch?v=wS8edjurjDw): A great starting point to learn how create and work with FM sounds. This was made for DefleMask, but all the same principles apply.
|
|
@ -0,0 +1,66 @@
|
|||
# OPLL FM synthesis instrument editor
|
||||
|
||||
The OPLL FM editor is divided into 5 tabs:
|
||||
|
||||
- **FM**: for controlling the basic parameters of FM sound source.
|
||||
- **Macros (FM)**: for macros controlling algorithm, waveform and feedback
|
||||
- **Macros (OP1)**: for macros controlling FM parameters of operator 1
|
||||
- **Macros (OP2)**: for macros controlling FM parameters of operator 2
|
||||
- **Macros**: for miscellaneous macros controlling volume, arpeggio, and preset.
|
||||
|
||||
## FM
|
||||
|
||||
The OPLL synthesizer is two-operator, meaning it takes two oscillators to produce a single sound.
|
||||
|
||||
These apply to the instrument as a whole:
|
||||
- **Feedback (FB)**: Determines how many times operator 1 returns its output to itself. (0-7 range)
|
||||
- **Sustain (SUS)**: enables the sustain flag (sets the release rate to 5)
|
||||
- algorithm: shows the connection of operators (though they are always connected the same way).
|
||||
- Right-click to switch to a preview display of the waveform generated on a new note:
|
||||
- Left-click restarts the preview.
|
||||
- Middle-click pauses and unpauses the preview.
|
||||
- Right-click returns to algorithm view.
|
||||
- **DC (half-sine carrier)**: Sets the waveform produced by carrier operator to half-sine
|
||||
- **DM (half-sine modulator)**: Sets the waveform produced by modulator operator to half-sine
|
||||
- preset dropdown: selects OPLL preset instrument.
|
||||
|
||||
These apply to each operator:
|
||||
- The crossed-arrows button can be dragged to rearrange operators.
|
||||
- **Amplitude Modulation (AM)**: Makes the operator affected by LFO tremolo.
|
||||
- **Envelope generator sustain flag (EGS)**: When enabled, value of Sustain Level is in effect.
|
||||
- **Attack Rate (AR)**: determines the rising time for the sound. The bigger the value, the faster the attack. (0-15 range)
|
||||
- **Decay Rate (DR)**: Determines the diminishing time for the sound. The higher the value, the shorter the decay. It's the initial amplitude decay rate. (0-15 range)
|
||||
- **Sustain Level (SL)**: Determines the point at which the sound ceases to decay and changes to a sound having a constant level. The sustain level is expressed as a fraction of the maximum level. (0-15 range)
|
||||
- **Release Rate (RR)**: Determines the rate at which the sound disappears after KEY-OFF. The higher the value, the shorter the release. (0-15 range)
|
||||
- **Total Level (TL)**: Represents the envelope’s highest amplitude, with 0 being the largest and 63 (decimal) the smallest. A change of one unit is about 0.75 dB.
|
||||
|
||||
![FM ADSR chart](FM-ADSRchart.png)
|
||||
|
||||
- **Envelope Scale (KSR)**: Also known as "Key Scale". Determines the degree to which the envelope execution speed increases according to the pitch.
|
||||
- **Frequency Multiplier (MULT)**: Determines the operator frequency in relation to the pitch. (0-10, 12, 15 range)
|
||||
- **Pitch Modulation (VIB)**: Makes the operator affected by LFO vibrato.
|
||||
|
||||
## macros
|
||||
|
||||
Macros define the sequence of values passed to the given parameter. Via macro, along with the previously mentioned parameters, the following can be controlled:
|
||||
|
||||
## FM Macros
|
||||
|
||||
All parameters are listed above.
|
||||
|
||||
## OP1-OP4 Macros
|
||||
|
||||
All parameters are listed above.
|
||||
|
||||
## Macros
|
||||
|
||||
- **Arpeggio**: Pitch change sequence in semitones.
|
||||
- **Patch**: changes the playing preset mid-note
|
||||
- **Pitch**: fine pitch.
|
||||
- **Relative**: pitch changes are relative to the current pitch, not the note's base pitch.
|
||||
- **Phase Reset**: Restarts all operators and resets the waveform to its start. Effectively the same as a `0Cxx` retrigger.
|
||||
|
||||
|
||||
# links
|
||||
|
||||
[FM instrument tutorial](https://www.youtube.com/watch?v=wS8edjurjDw): A great starting point to learn how create and work with FM sounds. This was made for DefleMask, but all the same principles apply.
|
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 128 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |