Author Topic: AYAY Kaeppttn (aka SID tracker) manual  (Read 3802 times)

0 Members and 1 Guest are viewing this topic.

Offline BSC

  • CPC664
  • ***
  • Posts: 147
  • Country: de
  • The site is still lying! I got a CPC 464, no 664
  • Liked: 189
AYAY Kaeppttn (aka SID tracker) manual
« on: 23:54, 26 March 14 »
Here's a short description on how the player basically works:

The instruments work quite differently from what you might know from other trackers. It had to be that way to have fast access to instrument data while still
offering quite flexible instruments. Not everything is possible yet, though, like AY noise (register 6 based) and hardware envelopes. I have a couple of ideas and
are also open to suggestions.

Well, the instrument are based on 4 tables. Each table modifies one characteristic of the sound. All numbers are signed 8 bit hex, so FF is -1, FE is -2 and so on. 80 is special because it means jump (see below). The tables are:
  • the semi tone offset on the current note (offset table), i.e. the value from that table will be added to the current note (which is kind of octave * 12 + note). This enables arpeggios etc.
  • the notes pitch (vibrato table), i.e. the value from that table will be added to the pitch that has been deduced after any semi tone offset has been added. (The pitch for each semi tone is taken from a lookup table). This enables vibrato etc.
  • the wave form to use (wavefrm). Only on the SID voice. For AY voices, it could be used for noise or other things...). The value here is actually just a memory address hi byte, so there better be valid sample data (which is true for all the pre-defined instruments).
  • the volume (volume). The values there are upside down, i.e. are actually what is to be subtracted from the max volume (15). 0 means full volume (15), 1 is 14, 2 is 13 and so on. That's likely to change into a way ppl are more used to (at least for display) but is easier for the player to apply when playing the SID voice (it just has to subtract the current volume table value from the sample value)
Each instrument is defined by 5 values (likely to grow in the future) which are the AY target register number (only relevant on the SID voice) and the 4 tables I just mentioned.
The target AY register number (e.g. 8, 9 or 10 for wave playback) is the one into which the values from the wave table (depending on the current wave form) will be written.
The other 4 values represent the start position into the offset, vibrato, wavefrm and volume tables respectively. When an instrument starts to play, those 4 values are used to initialize
the player which will then look up the actual values from each of the tables and advance to the next row after each frame. Unless there'a a jp (jump) command which will cause the
pointer into that table to jump to the row number that comes after the jp command. So to create a major chord arpeggio in the semi tone table (at position 20), you'd put the values
00 04 07 for the chord and 80 20 to jump back to position 20. This is how all the tables work and this table walking will be done for all 4 tables for each instrument, on each voice, each frame.
I think you will get the point when you disable AY playback and play (jam) around with some of the pre-defined SID instruments.. There's also currently no way to create new instruments.
You have to modify any of the existing ones.

The tracks consist of a (non fixed) number of rows representing a note to play. Each row consists of 3 (or 4 if you view note and octave to be distinct) columns representing
the note and octave (i.e. C#5 means a C sharp on octave 5), the duration of that note/row (sadly, also in hex, but there's manifold remedies possible) and the instrument number.
There are 2 kinds of special rows currently. SLD (tone slide) and END (of track), see below. The duration is counted in "ticks" or frames or roughly 1/50 second, so a note with
a length of 32 (which is the hex representation of 50) will last one second. The maximum (visible and editable) track length is currently hard-coded to 32 rows.

The sequences consist of a list of track numbers to play on each voice. And track number FF (which does or should not exist) means "end of sequence" and will cause that sequence
to jump to the beginning. There's currently no way to start from any point within a sequence other than 0, i.e. when starting playback the song will always play from the beginning.
It's not supposed to stay that way but it's not so easy to start from anywhere because tracks can be of different lengths, thus playing back from e.g. position 10 on all sequences
might yield funny and most likely unwanted results (unless all tracks on all voices are equally long).


Here's a short manual describing the keys of each mode in the tracker.

There are 4 modes: instrument params, instrument lists, track lists (sequence), track

General keys (in all modes)
  • ctrl D - redraw the screen (in case it gets messed up)
  • ctrl R - reset AY (actually plays a chr$(7) beep)
  • ctrl Y - toggle AY voices playback. On the screen you'll see "AY replay: " and 0 or 1. When 0, only the SID voice will play
  • space (except for instrument mode, see there) - play the song. Currently, the song will always be played from the beginning, regardless of which track is edited or where the cursor was in the track list
  • ESC - stop playback
  • f1 - toggle AY voice A (On the screen you'll see AYa: 0 or 1)
  • f2 - toggle voice B
  • f3 - toggle voice C
  • f5 - decrement octave (screen: top left)
  • f8 - increment octave
  • f4 - decrement instrument no. (which is also the instrument that will be used when entering notes in the track editor)
  • f7 - increment instrument no. will wrap after the first / last instrument
  • manual keys: just like in most other trackers, the largest part of the keyboard is used to represent two manuals of piano keys. The lower manual starts (on my german keyboard, but you get the point I hope) at Y (note C), S is C#, X is D, D is D# (sic) and so on until , and . (comma and dot) and the upper manual (one octave higher) starts at Q (note C), 2 is C#, w is D, 3 is D# and so on.. It's probably easier for you to just try it out.
Instrument params mode (top left):
  • cursor left / right - jump between target register, offset, vibrato, wavefrm and volume.
  • cursor up / down - decrease / increase the current value. Changes here will not be reflected in the instrument lists (switch the instrument to see the effect)
  • enter - enter a 2 digit hex value at the current position. ESC will cancel editing
Instrument list mode (below the instrument params):
  • space - set table position to cursor, e.g. when on position 03 on the offset column, this will be used as the start position into the offset table.
  • cursor left / right - jump between offset, vibrato, wavefrm and volume column. When on the wavefrm column, the current wave form will be drawn to the right
  • cursor up / down - move within the current column. it will always display 10 rows and scroll when you touch the upper / lower edge
  • enter - enter a 2 digit hex value at the current position. ESC will cancel editing, the cursor will advance to the next row when a valid value was entered. Enter 80 to create a jump (jp) command
  • ctrl + cursor up / down - increment / decrement the value at the current position
Sequence mode:
  • cursor left / right - jump between the columns representing the wave, AYa, AYb and AYc voices. Will not wrap at the edge and will also memorize the current row of each column (as opposed to the instrument editor where the row will be preserved on column change)
  • cursor up / down - move within the current column. it will always display 10 rows and does currently NOT scroll when you touch the upper / lower edge
  • enter - enter a 2 digit hex value (see Instrument mode for details)
  • ctrl + cursor up / down - increment / decrement the value at the current position
Track mode:
  • cursor up / down - move within the track rows. it will always display 9 rows and scroll when you touch the upper / lower edge
  • cursor left / right - jump between the note (and octave), duration and instrument columns
  • ctrl + cursor up / down - jump 8 rows up or down
  • f6 - switch to the previous track. The current number and total number of tracks will be shown above the track, i.e. current / total (and it's address in memory)
  • f9 - switch to the next track. It will wrap at the edges
  • enter - 2 digit hex value input and advance to the next row. ESC will cancel
  • ctrl N - create new track. You will see the memory info area in the lower right corner change
  • ctrl E - store EndOfTrack command, i.e. END in the note/octave column. When played, the row before the END will be the last one of that track
  • ctrl R - will enter (repeat) the last value that was entered and advance to the next row. good to enter long rows of the same duration value, for example
  • ctrl P (or CLR) - clear the current row, i.e. all 3 columns will be reset
  • ctrl Q - store a slide command (SLD) instead of a note. The duration column works as always, the instrument column stores the slide offset
I will update this post whenever there's any relevant changes and I would also like to know if the description of how the instruments work is understandable and, if not,
what I could do to make it easier to grasp. Every time I said "currently" in this post implies that this is not meant to last for eternity and I either do already have ideas as
to how this can be extended, fixed, improved or am at least aware that it can't stay like this. But I am still open to suggestions, wishes etc.


So: please throw your thoughts at me!
« Last Edit: 22:33, 24 April 14 by BSC »
10 print"This is no signature.": goto 10

and I don't want to be a 664 anymore! :_(

Offline BSC

  • CPC664
  • ***
  • Posts: 147
  • Country: de
  • The site is still lying! I got a CPC 464, no 664
  • Liked: 189
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #1 on: 22:36, 24 April 14 »
please throw your thoughts at me!


Any thoughts to throw? I figure that the editing facilities are really fiddly and slow and all that,
but I think it's still worth to climb that learning curve..
10 print"This is no signature.": goto 10

and I don't want to be a 664 anymore! :_(

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.140
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 1965
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #2 on: 11:24, 25 April 14 »
My thought is:

I wish I could put this into a demo or game right now. But I don't have anything ready for it just yet.
I will definitely use it.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.140
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 1965
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #3 on: 11:25, 25 April 14 »
Another thought:

Make a tune and submit it to a party like Revision ;)

Or does it require a standalone player for that rather than being played in a tracker?

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline ralferoo

  • Supporter
  • 6128 Plus
  • *
  • Posts: 1.073
  • Country: gb
  • Liked: 573
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #4 on: 14:31, 25 April 14 »
Make a tune and submit it to a party like Revision ;)
There was a SID-ish tune on the Speccy. It was nowhere near as nice as the sounds your program can make...

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.140
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 1965
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #5 on: 15:08, 25 April 14 »
@BSC: Another thought:

You have created a tracker which prooves SID sound is possible on a standard CPC. In fact, it's more than that, it's a SID-like sound but better because of the adjustable waveforms. And it's more than just a tune and a player, it's a full tracker so people can create tunes themselves. Not like a tech demo for example.

In the near future I want to make a standalone player for it and use it in a game. It will probably be on a title screen.





My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline BSC

  • CPC664
  • ***
  • Posts: 147
  • Country: de
  • The site is still lying! I got a CPC 464, no 664
  • Liked: 189
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #6 on: 23:36, 25 April 14 »
I wish I could put this into a demo or game right now. But I don't have anything ready for it just yet.
I will definitely use it.


Good to hear! But no hurry, as it's still not complete anyway and the whole stand alone player thing is yet to do.

10 print"This is no signature.": goto 10

and I don't want to be a 664 anymore! :_(

Offline BSC

  • CPC664
  • ***
  • Posts: 147
  • Country: de
  • The site is still lying! I got a CPC 464, no 664
  • Liked: 189
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #7 on: 23:40, 25 April 14 »
Another thought:

Make a tune and submit it to a party like Revision ;)

Or does it require a standalone player for that rather than being played in a tracker?


AFAIK the Revision compo was called "Oldschool executable", but it shouldn't be too hard to create an executable
from the current tracker (they won't show the screen anyway). But I am not a composer, just a converter / cover guy.
Real talented guys like McKlain or UltraSyd would have to do that.
10 print"This is no signature.": goto 10

and I don't want to be a 664 anymore! :_(

Offline BSC

  • CPC664
  • ***
  • Posts: 147
  • Country: de
  • The site is still lying! I got a CPC 464, no 664
  • Liked: 189
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #8 on: 23:45, 25 April 14 »
@BSC: Another thought:

You have created a tracker which prooves SID sound is possible on a standard CPC. In fact, it's more than that, it's a SID-like sound but better because of the adjustable waveforms. And it's more than just a tune and a player, it's a full tracker so people can create tunes themselves. Not like a tech demo for example.

In the near future I want to make a standalone player for it and use it in a game. It will probably be on a title screen.


Thanks for your kind words, but I have to disagree on the completeness: Right now it's actually more of a tech demo and less of a full tracker.
Most of the work that's still missing is already thought through, but it has yet to be coded :) And the file format is also not yet defined because
some of the memory related things are still undecided. I think I should create some issues on github to cover all the open things.





10 print"This is no signature.": goto 10

and I don't want to be a 664 anymore! :_(

Offline Overflow

  • Supporter
  • CPC664
  • *
  • Posts: 60
  • Country: fr
  • Liked: 175
Re: AYAY Kaeppttn (aka SID tracker) manual
« Reply #9 on: 19:43, 08 May 14 »

Any thoughts to throw?
Ok, let´s throw some thoughts! (or rather: write again but for everyone on the forum)


About the tracker, can't comment anything except that composers are required. For motivation or to go on designing the tool, you need some end-users using the tool. Or/unless: see next point, turn it into a tech demo.


About the core/engine itself: if there isn't any wish from end-users/composers, you could go on to get a fully usable player as a tech demo. Two main paths:


1) The first path is to emphasize on the sound only, i.e. designing your own music-disk, and adding some fancy fx during the songs. I may be someone to help you with optimizing the sid-engine and adding some constant-time fx. Not now and not soon, since I'm working on my own work first and exclusively. Then? we'll see.


2) The second path is demo-fx-oriented: let´s say a famous and talented coder wishes to integrate your sid-engine in his top-notch demo yet to be released. Great for motivation on the 2 sides. Many difficulties to solve, which includes synchronizing the screens and the songs so that sid-voices are switched on and off during all the demo (to allow heavy precalculation or trackloading or big fx which are not compatible with the sid-engine). Definitely not for me, the challenge is too high for a retired coder without ambition; better have a look towards the young generation.


About the tech-demo and/or the sid-player: it has been years since some people work on such idea. See also New release of Sid player
There are also (10 years?) old rumours about Madram working on a numerous channels sid-engine. I would suggest you contact him since he's back, to know a bit about his old work. We are all of the same family, you should try to ask.


As an another extreme path to follow, there's something which could please the end-users/composers: change your mind and modify your tracker so that it is ctc-ay compatible. For composers: 6 channels! For you coder: much more easier way to out to the 2 ay-chips.


That's all!
Oliverflow



Unregistered from CPCwiki forum.