The Pattern Editor contains up to 8 Tracks of Patterns configured in a List Track Row. Pattern Keys
Track Rests will display Blank Tracks. At the time of release the cursor may still move over these Track Rests but attempting to enter Note data will fail.
Also Highlighting is not permitted if an attempt is made to highlight accross Track Rests.
Each Pattern Column contains a heading which shows the Pattern being viewed (000) and the Tracks Channel Source. The Channel Source differs from the Sound Source in that it indicates the Physical Channel. This can be more useful than the SSID.
The possible Channel Resources are shown below together with the field usage
Channel Source letter | Channel Source Name | Note Field | Volume Field | SFX Field |
---|---|---|---|---|
A | Channel A | Note | Volume | SFX ID |
B | Channel B | Note | Volume | SFX ID |
C | Channel C | Note | Volume | SFX ID |
N | Noise | Noise Pitch(0-31) | Volume | SFX ID |
E | EG | EG Period(0-60) | Wave Code | SFX ID |
c(Special Command Character) | Command Track(H Only) | Command ID | Param1 | Param2 |
Each Pattern Entry is composed of a Note, a Rest, a Volume Rest or a Bar. If Track H is the Command Pattern then each entry can be a Command, Rest or Bar.
Patterns are played from the top down at an even tempo (Tracked during play by a White square in the Pattern Index on the far left). Notes are placed in the list with Rests padded between. The distance the notes are apart (vertically) has a direct relationship to the time apart they are played.
A Pattern Note entry consists of a Note, Octave, Volume and SFX field. If the Track has a Sound Source(Or channel source) of Noise or EG the Note and Octave fields are combined into two Numeric fields where the two digit number represents the Source Pitch that is applied to the Sound Resource.
This holds a Note from C to B(White notes) with optional Sharp(Black notes). The note displayed includes any Note Offset applied to the Track. The Note entered also observes this restriction.
If the Tracks SS is Noise then both Note and Octave display a single 2 digit number from 00 to 31. Values above 31 may currently be selected but will just cycle the lower range. A Noise Pitch of 00 is high and 31 is deep.
If the Tracks SS is EG then again both Note and Octave display a single 2 digit number but this time from 00 to 60. An EG Pitch of 00 is very high and 60 very low. The EG can generate both Triangle and Sawtooth. Sawtooth waveforms are double the frequency of Triangle waveforms based on the same value in the Note field. Below is a table of common Pitches to Notes (These only relate to EG)
EG Pitch | Note |
---|---|
60 | C-0 |
56 | C#0 |
53 | D-0 |
50 | D#0 |
47 | E-0 |
45 | F-0 |
42 | F#0 |
40 | G-0 |
38 | G#0 |
36 | A-0 |
34 | A#0 |
32 | B-0 |
Halving the values will double the frequency but the actual conceived pitch may be too crude a tuning. Doubling the values will halve the frequency and lower the octave by one (Equal tempered Scale).
The Pattern Octave range is always 5 octaves and by default ranges C-0 to C-5.
By using the Note Offset RWC in the List Editor (before the Track Row) it is possible to change the octave range from 0-5 to 4-9.
The Volume field holds the initial volume for the note. The field will always hold a volume relevant to the Sound Source used for the track.
Sound Source(SS) | Volume Resolution | Volume range Shown |
---|---|---|
00,01,02 | 4 Bit | 00,01,02.. ..13,14,15 |
00,01,02 | 6 Bit | 00,04,08.. ..52,56,63 |
03,04,05 | - | 00,01,01.. ..01,01,01(Off or On) |
06,07,08,09,10,11,12 | - | 00,01,02.. ..13,14,15(EG Wave Code) |
13,14,15,16,17,18,19 | - | 00,01,01.. ..01,01,01(Off or On) |
Pattern Volume may also be considered the Maximum volume of a Track because of the way the Effects can work. For example if an SFX is set up like the following
00 SKIP LOOP ON VOLUME OVER
01 DELAY 01
02 DEC VOLUME BY 01
03 LOOP TO ROW 01
04 END SFX!!
Then setting the volume to 0 will immediately exit the SFX with no sound output. However setting the Volume to 5 will decay the volume from 5 to 0. Setting the Volume to 10 will decay the volume from 10 to 0.
An attack ramp can be accomplished with a similar maximum volume property as follows
00 SET COUNT TO 10
01 SKIP LOOP ON COUNTER OVER
02 DELAY 01
03 INC VOLUME BY 01
04 LOOP TO ROW 02
05 END SFX!!
Then setting the volume to 0 will raise the volume to 10 in the SFX where it will then level off. However setting the Volume to 5 will raise the volume to 15. Setting the volume to 10 will raise the volume to 15.
If the Track is set to EG then the Volume becomes the Wave Code from 00 to 15. The Wave Code is written directly into the Sound Chip and the following codes are known.
Wave Code | Cycle | Envelope Shape | Waveform name |
---|---|---|---|
8 | Bistable | High Slope Low Repeating) | Sawtooth |
9 | Monostable | High Slope Low | |
10 | Bistable | High Slope Low Slope High Repeating | Triangle |
11 | Monostable | High Slope Low then High | |
12 | Bistable | Low Slope High Repeating | Sawtooth |
13 | Monostable | Low Slope High | |
14 | Bistable | Low Slope High Slope Low Repeating | Triangle |
15 | Monostable | Low Slope High then Low |
The SFX field holds the SFX ID or number which ranges 0 to 63.
Any SFX name is displayed in the Status bar when the cursor moves over this field.
The SFX is based on the Tracks current Note and Volume. This will have been set in the Note and Volume entries. An SFX is expected to continue to run after the Note and into the Rests. Any subsequent Note will override the current SFX.
Any Volume Rest will override the current Tracks Volume level and may affect the SFX.
A Pattern Rest does not affect the note but rests the Pattern row for this track.
A Volume Rest may be used to silence or alter the Volume of the last note overriding the SFX.
A Pattern Bar may be placed in any track (apart from a rested one) and will terminate the complete group of Patterns. The next List event will then be executed. If no Bar is used the Pattern will end normally after reaching row 63.
The Pattern Command entry can only exist on Track H. 4 Commands are provided currently and are shown in the editor as the Command Icon, Command ID(0-3) and any parameters.
Once Pitchbend has been placed in Command Track H(FUNC B) each Track required for pitchbend in that row must be flagged with FUNC C whilst in that Track. Pitchbend will bend the previous note to the current note in the row at the rate set in the Pitchbend command.
For example
A | B | C | D | E | F | G | H |
---|---|---|---|---|---|---|---|
C-3 | — | — | — | — | — | — | — |
— | — | — | — | — | — | — | — |
— | — | — | — | — | — | — | — |
C-4 | — | — | — | — | — | — | c3X |
— | — | — | — | — | — | — | — |
— | — | — | — | — | — | — | — |
The note C-3 (In Track A) will begin to rise to C-4 on the C-4 row. The amount of time that the note takes to rise will depend on the value set in X.
The Pitchbend rate has been gradiented to cover both fractionally small steps (0) to large steps (15) to reach the destination. This is because as the pitch falls the number of steps between each note increases exponentially.
Trigger Out triggers an external event by writing to a zero page location between $F0 and $FF with a specified value.
The first parameter following the Command ID of 0 is the location above $F0 and the second parameter is the value to write (between 0 and 63).
Trigger In will pause the pattern (and all music) until the specified location contains the specified value.
The first parameter following the Command ID of 0 is the location above $F0 and the second parameter is the value to check for (between 0 and 63).
Changes the Song Tempo for all subsequent notes until either the end of the song or another Command ID 2 is used.
The Song Tempo ranges 0 to 63 and is shown in the last column of the command entry.
There are two distinct methods of constructing music in AYT. Either with each Track being dedicated to a particular sound source (such as Chip or EG) or that music is constructed from 3 Track Channels that then call upon the other resources when required. Both modes are possible and this command supports the latter technique. It allows the EG cycle register to be directly written to whilst also providing the EG Flag to enabled or disabled on all active tracks.
Allows both the High and Low registers of the Envelope Period to be set. Usually AYT assumes the Hardware Envelope generator will be a wave generator (set to bistable mode) but this command allows one to set any period value in the range 0 to 4095. It is also designed to be invoked outside of sharing, but could be used during sharing to set the high bits of the Period.