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
- 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
- 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. I'll also try to tone my resilience down as much as possible (except for things that I think are not important or useless or otherwise neglectible ). So: please throw your thoughts at me!
|★ AMSTRAD CPC ★ DOWNLOAD ★|
|★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...|
|QUE DIT LA LOI FRANÇAISE:|
L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!
CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 139 millisecondes et consultée 995 fois
L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.