The TFX music editor Version 2.94 User's Guide - Quick Reference Copyright 1995-2003 Unreal --------------------------------------- Table of Contents Global Keys Track editor Keys Sector Editor Keys General Keys Commands Instrument Editor General Keys Table Editor Keys Global Keys These are the keys that you can use in any window or menu. (Note: where [Shift] is listed, it is only required when you are NOT in MIDI mode, and when you are in midi mode, shift is required for all other commands :) +-------------------------------------+ | key | Description | |-----------------+-------------------| |F1 |Play the current | | |song from the start| |-----------------+-------------------| |F3 |Stop playing of the| | |current song | |-----------------+-------------------| | |If nothing has | | |changed in the song| | |since it was | | |stopped, continue | | |from the current | | |position, otherwise| |F5 |start playing from | | |the song. (Note | | |that loading and | | |saving will also | | |cause this command | | |to restart the | | |song) | |-----------------+-------------------| | |Fast Forward (Only | |F7 |active while the | | |key is held) | |-----------------+-------------------| | |Open up the main | | |menu if it's not | |Control |already open, | | |otherwise cancel | | |whichever window is| | |open. | |-----------------+-------------------| | |Toggle between Edit| | |and Play modes | | |(This can be over | | |ridden by holding | | |shift with a key - | | |i.e. if you're in | | |edit only mode, | | |holding shift will | | |play whichever note| | |you are holding, | | |and vice versa for | | |when you are in | | |play only mode). | | | | |run/stop |In play mode, no | | |matter where you | | |are in the editor, | | |the note that you | | |pressed will be | | |played with the | | |currently selected | | |instrument. In edit| | |mode, things will | | |behave as you would| | |expect them to. | | | | | |Note that Play mode| | |is refered to | | |interchangibly as | | |"Midi Mode". | |-----------------+-------------------| |[Shift] + - |Increase/Decrease | | |working Octave | |-----------------+-------------------| |[Shift] : ; |Increase/Decrease | | |working Instrument | |-----------------+-------------------| |a-z,@*^^:;=,./ |Plays the relevant | |1-0.L |note or instrument | | |(see below) | |-----------------+-------------------| |[Shift] a-f 0-9 |Writes number onto | | |cursor position | |-----------------+-------------------| | |Slows down playing | | |1,2,4,8x (You can | | |hold down multiple | |F2,F4,F6,F8 |keys at once to get| | |differnt values... | | |i.e. F2 and F6 for | | |5x (1+4) | |-----------------+-------------------| | |Reinitialize the | |Commodore+Restore|Editor (Lifesaver! | | |:) | |-----------------+-------------------| |cursor keys |Do the obvious | | |thing ;) | |-----------------+-------------------| |[Shift] ,. |Page up/down | |-----------------+-------------------| | |Clears the contents| |clr |of the current | | |window | |-----------------+-------------------| | |moves the cursor to| |home |the top of the | | |current window | |-----------------+-------------------| | |insert/delete line | | |(if there is | |insert/delete |anything to delete | | |or space to insert | | |;) | +-------------------------------------+ Track editor Keys +-------------------------------------+ | Key | Command | Description | |---------+---------+-----------------| |[Shift] | |Enter the | |Return | |selected sector. | |---------+---------+-----------------| | | |Select the | |Commodore| |subsong to edit | |m | |(press 1-5 after | | | |pressing c= m) | |---------+---------+-----------------| |Commodore| |Save the current | |s | |cursor position | | | |(1-5) | |---------+---------+-----------------| |Commodore| |Recalk saved | |g | |cursor position | | | |(1-5). | |---------+---------+-----------------| | | |eXchange the | |Commodore| |current track | |x | |with another | | | |(1-3) | |---------+---------+-----------------| | | |Copy the contents| |Commodore| |of the current | |@ | |position to the | | | |clipboard. | |---------+---------+-----------------| |Commodore| |Paste the | |* | |clipboard at the | | | |current position.| |---------+---------+-----------------| | | |Play in trace | |<- | |mode from the | | | |start of the | | | |song. | |---------+---------+-----------------| |Commodore| |Play in tract | |<- | |mode from the | | | |current position.| |---------+---------+-----------------| |[Shift] | |Start tracing the| |<- | |currently playing| | | |song | |---------+---------+-----------------| |Return | |Go down to the | | | |next line | |---------+---------+-----------------| |Commodore|TRANSPOSE|Transpose sounds | |+ |+$xx |down X semitones | |---------+---------+-----------------| |Commodore|TRANSPOSE|Transpose sounds | |- |-$xx |up X semitones. | |---------+---------+-----------------| |Commodore|END |Stop playing the | |e | |song. | |---------+---------+-----------------| |Commodore|LOOP line|Loop back to | |l | |given line | +-------------------------------------+ Sector Editor Keys General Keys +-------------------------------------+ | Key | Function | |---------+---------------------------| |Commodore|Go to the next/previous | |, . |sector | |---------+---------------------------| |[Shift] n|Transpose notes from cursor| |m |to END up/down one semitone| |---------+---------------------------| | |Toggles "Voice Mode" | |[Shift] v|(wether notes are played as| | |you enter them or note) | |---------+---------------------------| | |Play the current sector in | | |trace mode. Hit any key to | |<- |stop playing, or the <- key| | |to just switch off trace | | |mode, but keep playing. | |---------+---------------------------| |[Shift] |Play current sector in loop| |<- |mode without tracing | |---------+---------------------------| |Commodore|Play current sector from | |<- |this line. | |---------+---------------------------| |[Shift] |Start tracing the currently| |Commodore|playing sector | |<- | | |---------+---------------------------| | |Copy from current position | |Commodore|to clipboard (Doesn't copy | |(up |the commands of the first | |arrow) |note, but copies everything| | |else until the end of the | | |sector) | |---------+---------------------------| |Commodore|Paste at the current | |* |position | |---------+---------------------------| |Commodore|Instrument Mode #1 | |1 |(Discussed later) | |---------+---------------------------| |Commodore|Instrument Mode #2 | |2 |(Discussed later) | |---------+---------------------------| |Commodore|Instrument Mode #3 | |3 |(Discussed later) | +-------------------------------------+ Commands +-------------------------------------+ | Key |Function | Description | |---------+---------+-----------------| | | |Pause for one | | | |note/row (aka | |Commodore|--- |Empty Row, if | |- | |you're using this| | | |like a track | | | |based editor :) | |---------+---------+-----------------| |Commodore|END |End this sector. | |+ | | | |---------+---------+-----------------| |Commodore| | | |(up |GATE |Gate Off/Note Off| |arrow) | | | |---------+---------+-----------------| | | |Set the Attack/ | |Commodore|AD |Decay for the | |a |$00-$FE |*current* playing| | | |note. | |---------+---------+-----------------| | | |Set the Sustain/ | |Commodore|SR |Release for the | |s |$00-$FE |*current* playing| | | |note. | |---------+---------+-----------------| | | |Set the Attack/ | |Commodore|ADN |Decay for the | |q |$00-$FE |*next* note | | | |played. | |---------+---------+-----------------| | | |Set the Sustain/ | |Commodore|SRN |Release for the | |w |$00-$FE |*next* note | | | |played. | |---------+---------+-----------------| | | |Toggle restarting| | | |the tables on a | | | |new note trigger.| | | |If switch is set,| |Commodore|SWITCH |only the | |x | |frequency of the | | | |notes will be | | | |changed when a | | | |new note is | | | |triggered. | |---------+---------+-----------------| |Commodore|DUR |Set the current | |d |$00-$3F |Duration value | | | |(ticks per line) | |---------+---------+-----------------| |Commodore|GLIDE |Glide from this | |g |$00-$FE |note to the note | | | |on the next line.| |---------+---------+-----------------| | | |Slide from the | |Commodore|SLIDE |current playing | |h |$00-$FE |note to this | | | |note. | |---------+---------+-----------------| | | |Set the volume | |Commodore|VOL $0-$F|(actully sustain | |v | |level ;) of this | | | |note. | |---------+---------+-----------------| |Commodore|FVOL |Set the global | |b |$0-$F |volume | |---------+---------+-----------------| |Commodore|SETFF |Set the filter | |7 |$00-$FE |frequency. | |---------+---------+-----------------| |Commodore|SETFT |Set the filter | |8 |$00-$FE |type. | |---------+---------+-----------------| |Commodore|SETPF |Set the pulse | |p |$00-$FE |width | |---------+---------+-----------------| | | |Set the auto-gate| | | |timeout to X | |Commodore|A GATE |frames (not as | |y |$00-$FE |simple as it | | | |sounds, see notes| | | |below) | |---------+---------+-----------------| |Commodore|FADE+ |Fade the global | |j |$0-$F |volume from 0 to | | | |X | |---------+---------+-----------------| |Commodore|FADE- |Fade the global | |k |$0-$F |volume from X to | | | |0 | |---------+---------+-----------------| |Commodore|SETVAR1-6|Set table | |1-6 |$0-$FE |variable n | |---------+---------+-----------------| | | |Set control bits | |Commodore|CTRL |override (the | |c |$00-$FE |control byte will| | | |be Or'd with this| | | |value) | |---------+---------+-----------------| | | |Set the length of| |Commodore|RLEN |hard restart for | |r |$00-$FE |this channel (in | | | |frames) | |---------+---------+-----------------| |Commodore|SPED |Set the global | |t |$00-$FE |speed | |---------+---------+-----------------| |Commodore|VSPD |Set the vibrato | |i |$00-$FE |speed | |---------+---------+-----------------| |Commodore|VDEP |Set the vibrato | |o |$00-$FE |depth | |---------+---------+-----------------| |Commodore|NOPL |Toggle 'no pulse | |n | |reset' mode | |---------+---------+-----------------| |Commodore|NOFL |Toggle 'no filter| |f | |reset' mode | +-------------------------------------+ Instrument Editor General Keys +-------------------------------------+ | Key | Description | |---------+---------------------------| |[Shift] |Switch between Table / | |Return |Instrument editor | |---------+---------------------------| |Return |Go back to the place from | | |whence you came ;) | |---------+---------------------------| |Commodore|Save current instrument | |p | | |---------+---------------------------| |Commodore|Save all instruments | |l | | |---------+---------------------------| | |Load instrument into the | |Commodore|current position (it's | |o |tables are rather handily | | |merged into the current | | |song :) | |---------+---------------------------| |Commodore|Load all instruments | |k | | |---------+---------------------------| | |Find next set of empty | |Commodore|positions in the tables, | |f |and sets the current | | |instrument to use them. | +-------------------------------------+ Table Editor Keys +-------------------------------------+ | Key |Table |Command|Description | |---------+------+-------+------------| | | | |Set the | |Commodore| | |speed at | |a |wave |SPD |which the | | | | |wave table | | | | |is executed | |---------+------+-------+------------| | | | |Set the wave| |Commodore| | |table to | |c |wave |RHL |relative low| | | | |freqency | | | | |mode | |---------+------+-------+------------| | | | |Set the wave| |Commodore| | |table to | |x |wave |RHI |relative Hi | | | | |Frequency | | | | |mode | |---------+------+-------+------------| | | | |Set the wave| |Commodore| | |table to | |c |wave |RHL |relative low| | | | |freqency | | | | |mode | |---------+------+-------+------------| | | | |Set the high| | | | |byte of the | |Commodore|wave |SHI |sid | |w | |$xx |frequency | | | | |register to | | | | |X | |---------+------+-------+------------| | | | |Set the high| | | | |byte of the | | | | |sid | |Commodore|wave |SHL |frequency | |e | |$xy |register to | | | | |$0x and the | | | | |low byte to | | | | |$y0 | |---------+------+-------+------------| | | | |Set the | |Commodore|wave |AD |attack/decay| |r | |$xx |register to | | | | |X | |---------+------+-------+------------| | | | |Set the | |Commodore| |SR |sustain/ | |t |wave |$xx |release | | | | |register to | | | | |X | |---------+------+-------+------------| | | | |Set the wave| | | | |table to use| | | | |"normal" | |Commodore|wave |NRM |mode (i.e. | |n | | |transpose, | | | | |like every | | | | |other editor| | | | |:) | |---------+------+-------+------------| |Commodore|wave, |JMP |Jump to | |j |pulse,|$xx |position X | | |filter| | | |---------+------+-------+------------| | | | |Jump to | | |wave, | |position X | |Commodore|pulse,|JWG |*if* the | |g |filter|$xx |note is | | | | |currently | | | | |held | |---------+------+-------+------------| |Commodore|wave, |DEL |Delay for X | |d |pulse,|$xx |frames | | |filter| | | |---------+------+-------+------------| | | | |Enter 'Hard | | | | |Note Mode' -| | | | |Each number | | |wave, | |represents a| |Commodore|pulse,|HRD |physical | |h |filter| |note, with | | | | |$30 as | | | | |middle C | | | | |($31=C#, $32| | | | |=D, etc) | |---------+------+-------+------------| | | | |Use variable| | | | |X (Note: | | | | |actually | | | | |variable | | |wave, | |X+1, to save| |Commodore|pulse,|USE |raster time | |u |filter|$xx |- so 'use 0'| | | | |will use | | | | |varable #1, | | | | |'use 1' will| | | | |use variable| | | | |#2, etc) | |---------+------+-------+------------| | | | |Add X to the| | | | |current | | | | |value until | | | | |it reaches Y| | | | |(Note: for | | | | |pulse, this | | | | |matches | | | | |$yy0... for | | | | |example, if | | | |ADD |your pulse | |Commodore|pulse,|$xx |table adds | |a |filter|$yy |an odd | | | | |number, it | | | | |may not | | | | |reach $yy0, | | | | |but, say | | | | |$yy1, and | | | | |then the add| | | | |will loop | | | | |infinitly! | | | | |Be careful | | | | |:) | |---------+------+-------+------------| | | | |Subtract X | | | | |from the | | | |SUB |current | |Commodore|pulse,|$xx |value until | |b |filter|$yy |it reaches Y| | | | |(Warning for| | | | |ADD applies | | | | |here, too :)| |---------+------+-------+------------| | | | |Set the | | | | |filter | | | | |parameters | |Commodore| |SET |(first | |s |filter|$xx |parameter is| | | |$yy |type/ | | | | |resonance, | | | | |second is | | | | |cutoff freq)| |---------+------+-------+------------| | | |SET |Set the | | |pulse |$xx |pulse width | | | | |to $xx0 | +-------------------------------------+