====== 1-bit Music: HoustonTracker 2 ====== {{:music:trackers:houstontracker2.jpg?direct&100 |}} HoustonTracker 2 is a software sequencer that enables you to create musicon Texas Instruments graphing calculators. It uses the machines’ communication port to output multi-channel 1-bit music. Its interface is inspired by popular trackers such as LSDJ, Famitracker, and Milkytracker. HT2 supports several models of the Z80-based line of TI calculators. It is mainly targetted at older, obsolete models like the TI-82, but also works on newer machines up to and including the TI-84 Plus SE. Ser [[https://www.musictech.net/guides/essential-guide/history-of-trackers/|The history of trackers]] Features: * 3 tone channels * 1 non-interrupting drum channel * up to 128 note patterns * up to 64 drum/fx patterns * sequence length up to 255 pattern rows * 16-bit frequency precision * 10-bit speed precision, can be configured per step * various effects, including: * L/C/R stereo hard-panning for tone and drum channels * advanced duty cycle modulation * noise and glitch effects * pitch slides * 2 user definable samples * up to 8 savestates * edit during playback ===== Links ===== * [[https://www.irrlichtproject.de/houston/|Home page]] * [[https://www.irrlichtproject.de/houston/manual.pdf|Manual]] * [[https://www.irrlichtproject.de/houston/links.html|Links]] * [[https://github.com/utz82/HoustonTracker2|GitHub]] ===== Tutorials & Demos ===== | 2020 | [[https://www.youtube.com/watch?v=kld0K-2MgOU|Warhawk [C64] music on TI-82 Calculator - HoustonTracker 2]], YouTube | | 2020 | [[https://www.youtube.com/watch?v=L8R4NLQpk3c|Houston Tracker 2 / Calculator Chiptune Tutorial Video]], YouTube | | 2018 | [[https://www.youtube.com/watch?v=7TA4VeWiGVE|Calculator Music: HoustonTracker 2.30 New Features]], YouTube | | 2017 | [[https://www.youtube.com/watch?v=7UgSDAkXAJw|Revision 2017 - Seminar - utz: Thinking in Binary: The Making of HoustonTracker 2]], YouTube | | 2016 | [[https://www.youtube.com/watch?v=bBXjOJTFe5k|Calculator Music: HoustonTracker 2.20 New Features]], YouTube | | 2016 | [[https://www.youtube.com/watch?v=tKfni5-_42g|Calculator Music: HoustonTracker 2.10 New Features]], YouTube | | 2016 | [[https://www.youtube.com/watch?v=V9vkxT6ddio|HoustonTracker 2 quick introduction at Steemfest 2016]], YouTube | | 2015 | [[https://www.youtube.com/watch?v=I6G0CnBSWVk|Calculator Music: HoustonTracker 2 for the TI-82/83/83+/84+]], YouTube | ===== Related software ===== * [[https://sourceforge.net/projects/tilp/|TiLP - Ti Linking Program]] * [[https://tiroms.weebly.com/|TI ROMS]] * [[http://lpg.ticalc.org/prj_tilem/|TilEm - An emulator and debugger for Texas Instruments Z80-based graphing calculators.]] * [[https://github.com/JeffAlyanak/pcm2pwm/|pcm2pwm is a simply utility for converting 8-bit PCM wave audio into a delta PWM byte stream]]. It's output is intended for use with any 1-bit audio devices which require a simple playback routine and/or relatively high degree of compression. ===== Reference v2.30 ===== ==== Drums ==== There are 15 different drums to chose from (0x1..0xF). Some of the drums use the TI-OS as sample data, so their sound may vary across different calculator models. Drums can be played in different modes, which affects the way they sound. Use command Dxx to change the drum mode, with xx = 0x00..0x4f. There are 80 different drum modes, though not all of them are particularly useful. Setting a non-zero value for the lower nibble of the parameter causes the drum data to be manipulated in various ways. Refer to the appendix on Synthesis Techniques for details about this functionality. The upper nibble of the parameter defines the behaviour of the drum data pointer. The effects are as follows: ^ mode ^ cmd ^ effect ^ | 0 | D00 | **Increment pointer**, ie. use the ”standard” drum set. | | 1 | D1x | **Decrement pointer**, ie. use the ”alternative” drum set. Generally speaking, these drums are less useful than the standard set. Also, some drums will produce unpredictable results, namely drum 0, 1, C, and D. | | 2 | D2x | **Increment and loop pointer**. Even less useful than mode 1, and suffers from the same problems. Also, this mode causes a slight global pitch shift. | | 3 | D3x | **Decrement and loop pointer**. Like mode 2, with different sounds. | | 4 | D4x | **Don’t move pointer.** Instead of drums, in this mode triggering a drum will play a fixed, most likely out-of-tune frequency. This mode causes a slight global pitch shift. | ==== Efectos ==== ^ cmd ^ effect ^ description ^ | 1xx | SET PAN | **Set panning for all channels**. \\ To determine how the panning will be set, you need to look at the individual bits of the effect parameter, starting at the rightmost one (aka bit 0). \\ bit 0 set: pan ch1 right (add 0x1 to xx) \\ bit 1 set: pan ch1 left (add 0x2) \\ bit 0,1 reset: pan ch1 center (add nothing) \\ bit 2 set: pan ch2 right (add 0x4) \\ bit 3 set: pan ch2 left (add 0x8) \\ bit 2,3 reset: pan ch2 center (add nothing) \\ bit 4 set: pan ch3 right (add 0x10) \\ bit 5 set: pan ch3 left (add 0x20) \\ bit 4,5 reset: pan ch3 center (add nothing) \\ bit 6 set: pan drums right (add 0x40) \\ bit 7 set: pan drums left (add 0x80) \\ bit 6,7 reset: pan drums center (add nothing) | | 2xx | PITCH SLIDEUP CH3 | **Perform an upward pitch slide on channel 3**. \\ xx defines the speed of the slide, lower valuesmean slower slides. \\ xx can be any value, butbeware that the pitch counter will eventuallywrap. \\ 200 disables the effect | | 3xx | PITCH SLIDE DOWN CH3 | **Perform a downward pitch slide on channel 3**. \\ Using this will disable effect 9xx.xx defines the speed of the slide, lower valuesmean slower slides. xx can be any value, butbeware that the pitch counter will eventuallywrap. \\ 300 disables the effect. | | 4xx | DUTY CYCLE / NOISE CH1 | **Set the duty cycle for channel 1, and toggle noise mode.** \\ xx <= 0x80 - set duty cycle and disable noise mode \\ xx > 0x80 - set duty cycle and enable noise mode | | 5xx | DUTY CYCLE / SWEEP CH2 | **Set the duty cycle for channel 2, or enable duty cycle sweep.** \\ xx <= 0x80 - set duty cycle and disable duty cycle sweep. \\ A value of 0x80 produces the default 50:50 wave. \\ Very low values will cause glitches. xx > 0x80 - enable SID-style duty cycle sweep. \\ Sweep speed = (xx & 0x7F), 581 will produce the classic sweep effect known from HT versions <= 2.20. \\ Some parameters are shared with effect 7xx, hence these two effects impact each other. | | 6xx | DUTY CYCLE / GRIND CH3 | **Set the duty cycle for channel 3, and toggle grind mode.** \\ xx <= 0x80 - set duty cycle and disable grind mode. \\ xx>0x80 - set duty cycle to "xx * 2 and 0xff" and enable grind mode. | | 7xx | AUTOCHORD / DRAWBAR CH2 | **Add a chord or drawbar organ effect to channel 2**. \\ xx<0x80 - enable unsynced auto chord. The chord created varies depending on the note used, and is not necessarily harmonic. \\ xx>= 0x80 - enable synced auto chord (drawbar organ effect). This will produce an octave chord, depending to some extend on the current duty setting. A higher value for xx will generally produce stronger harmonics. \\ 700 switches off the effect. \\ Some parameters are shared with effect 5xx, hence these two effects impact each other. \\ See the description of effect 5xx for details.| | 8xx | EXEC NOTE TABLE CH3 | **Execute a given pattern as a note table for channel 3**. \\ This effect operates on a per-tick basis. Execution starts after the first tick. \\ xx is the pattern to be executed as note table. \\ If the current tempo is greater than 0x10, table execution will continue at the following pattern. \\ To disable the effect, set xx to a value greater than 0x7F. \\ Using this effect will disable the Cxx (note cut ch1) effect. | | 9xx | GLITCH CH3 | **Add a nasty glitch effect to channel 3.** \\ xx can be any value, 900 turns off the effect. | ===== Images ===== {{:music:trackers:houstontracker2.jpg?direct&300 |}} {{:music:trackers:keymap.jpg?direct&220|}} {{:music:trackers:seq.png?direct&250 |}} {{:music:trackers:vars.png?direct&300 |}} {{:music:trackers:fxptns.png?direct&250 |}} {{:music:trackers:noteptns.png?direct&250|}}