Vicious Tracker
Moderator: Moderators
- chysn
- Vic 20 Scientist
- Posts: 1205
- Joined: Tue Oct 22, 2019 12:36 pm
- Website: http://www.beigemaze.com
- Location: Michigan, USA
- Occupation: Software Dev Manager
Re: Vicious Tracker
Great, I'm looking forward to the next revision!
VIC-20 Projects: wAx Assembler, TRBo: Turtle RescueBot, Helix Colony, Sub Med, Trolley Problem, Dungeon of Dance, ZEPTOPOLIS, MIDI KERNAL, The Archivist, Ed for Prophet-5
WIP: MIDIcast BASIC extension
he/him/his
WIP: MIDIcast BASIC extension
he/him/his
Re: Vicious Tracker
I am working on a new update.
VICIOUS TRACKER +
(with goal of cart release)
Vicious Tracker + will not have irq file support for exporting game song files. The scope of + is to be a music arranger/sequencer with midi out support.
New features and changes
-1 midi (selectable channels) out
-1 cv out
-"envelope" channel. This is not a true envelope generator but allows you to have envelope like controls over volume, sample speed and sample length
in a tracker format.
-length channel is designed for control over tempo per arrangement step.
-a new user interface that will be more compact, efficient.
-separating combined byte. For example {octave, note and note values have been combined in 1 byte %000/0000/0. These will be separated into
their own data fields. This will take more ram but there is plenty of room.
The cart will be 8k rom @ blk_5 with 16k ram @ blk_2,3. $a000 will contain the player, user interface and utilities. $4000 will be used for the song file timers and buffers. The current song file is 13k. I still have to add song settings data but that will be less than 1 page leaving me 2k of ram open the timers and buffers. I still have basic ram and lower ram open for play room.
to dos
-user interface
-player
song file format
VICIOUS TRACKER +
(with goal of cart release)
Vicious Tracker + will not have irq file support for exporting game song files. The scope of + is to be a music arranger/sequencer with midi out support.
New features and changes
-1 midi (selectable channels) out
-1 cv out
-"envelope" channel. This is not a true envelope generator but allows you to have envelope like controls over volume, sample speed and sample length
in a tracker format.
-length channel is designed for control over tempo per arrangement step.
-a new user interface that will be more compact, efficient.
-separating combined byte. For example {octave, note and note values have been combined in 1 byte %000/0000/0. These will be separated into
their own data fields. This will take more ram but there is plenty of room.
The cart will be 8k rom @ blk_5 with 16k ram @ blk_2,3. $a000 will contain the player, user interface and utilities. $4000 will be used for the song file timers and buffers. The current song file is 13k. I still have to add song settings data but that will be less than 1 page leaving me 2k of ram open the timers and buffers. I still have basic ram and lower ram open for play room.
to dos
-user interface
-player
song file format
Code: Select all
;-------------------------------------------------------------------------------
;"VICIOUS TRACKER +" song file template
;Ryan Liston
;11/26/2021
;-------------------------------------------------------------------------------
*=$4000 ;start address
defm data_field ;macro for generating data fields
bytes /1*/2 ;/1= value
endm ;/2= size
;ARRANGER
;all arrangement data represents a pointer to a pattern
;data input from interface is multiplied by 16
;9 CHANNELS
;1: vic voice 1 (baritone) @ 36874 ($900a)
arr_baritone
data_field 0,256
;2: vic voice 2 (tenor) @ 36875 ($900b)
arr_tenor
data_field 0,256
;3: vic voice 3 (alto) @ 36876 ($900c)
arr_alto
data_field 0,256
;4: vic voice 4 (noise) @ 36877 ($900d)
arr_noise
data_field 0,256
;E: "envelope" controls vic volume @ 36878 ($900e) and speed (sound byte rate)
arr_envelope
data_field 0,256
;M: midi note channel 0-15
arr_midi
data_field 0,256
;C: cv line
arr_cv
data_field 0,256
;L: pattern length
;lenght by exception is not a paattern pointer
;length determine the current pattern length
;input is direct
;0-15
arr_length
data_field 255,256
;-------------------------------------------------------------------------------
;PATTERN
;channel 1-4,midi and cv
;values include base note and note sample pointer
;octave/note/tone/sample
;0 to 7/0 to 11/0 to 1/0to 15
;note and sample pointers are devided between 4 parallel data sets
;note, octave and tone values are direct
;sample pointer is multiplied by 16
;oct+note+tone+sample slice value+note pointer value
;baritone patterns
pat_baritone_oct
data_field 0,256
pat_baritone_not
data_field 0,256
pat_baritone_ton
data_field 0,256
pat_baritone_smp
data_field 0,256
;tenor patterns
pat_tenor_oct
data_field 0,256
pat_tenor_not
data_field 0,256
pat_tenor_ton
data_field 0,256
pat_tenor_smp
data_field 0,256
;alto patterns
pat_alto_oct
data_field 0,256
pat_alto_not
data_field 0,256
pat_alto_ton
data_field 0,256
pat_alto_smp
data_field 0,256
;noise patterns
pat_noise_oct
data_field 0,256
pat_noise_not
data_field 0,256
pat_noise_ton
data_field 0,256
pat_noise_smp
data_field 0,256
;midi patterns
pat_midi_oct
data_field 0,256
pat_midi_not
data_field 0,256
pat_midi_ton
data_field 0,256
pat_midi_smp
data_field 0,256
;cv patterns
pat_cv_oct
data_field 0,256
pat_cv_not
data_field 0,256
pat_cv_ton
data_field 0,256
pat_cv_smp
data_field 0,256
;envelope patterns
;values include pointers to volume, speed and the value for current sample
; length
;null/sample length/vol/speed
;null/0 to 15/0 to 15/0 to 15
;envelope is split between 3 data sets
;sample length (direct value)
pat_env_len
data_field 15,256
;volume (points to volume samples)(input*16)
pat_env_vol
data_field 0,256
;speed (points to speed samples)(input*16)
pat_env_spd
data_field 0,256
;-------------------------------------------------------------------------------
;SAMPLE
;channel 1 to 4,midi and cv
;3 data sets per channel
;octave/note/tone
;0 to 7/0 to 11/0 to 1
;all values are direct
;baritone samples
smp_baritone_oct
data_field 0,256
smp_baritone_not
data_field 0,256
smp_baritone_ton
data_field 0,256
;tenor samples
smp_tenor_oct
data_field 0,256
smp_tenor_not
data_field 0,256
smp_tenor_ton
data_field 0,256
;alto samples
smp_alto_oct
data_field 0,256
smp_alto_not
data_field 0,256
smp_alto_ton
data_field 0,256
;noise samples
smp_noise_oct
data_field 0,256
smp_noise_not
data_field 0,256
smp_noise_ton
data_field 0,256
;midi samples
smp_midi_oct
data_field 0,256
smp_midi_not
data_field 0,256
smp_midi_ton
data_field 0,256
;cv samples
smp_cv_oct
data_field 0,256
smp_cv_not
data_field 0,256
smp_cv_ton
data_field 0,256
;volume samples
;1 data set
;direct values
;0 to 15
smp_vol
data_field 8,256
;-------------------------------------------------------------------------------
R'zo
I do not believe in obsolete...
I do not believe in obsolete...
Re: Vicious Tracker
Update to the update...
The previous arrangement section is now relabeled as "phrase". I have added another layer. The new "Arrange" layer will allow you to arrange "phrase" sections in a movement style structure
"arrange" will have 3 elements {begin},{end} and {repeat}.
examples
00,00,3 will play phrase 00 4x
01,8,1 will play phrase 1 through 8 2x
09,29,0 will play 9 through $29 1x
30,30,0 will play $30 once
this pushes the song file up to a clean 16k.
timers and buffers will be set up in basic ram and lower ram.
updated song file
The previous arrangement section is now relabeled as "phrase". I have added another layer. The new "Arrange" layer will allow you to arrange "phrase" sections in a movement style structure
"arrange" will have 3 elements {begin},{end} and {repeat}.
examples
00,00,3 will play phrase 00 4x
01,8,1 will play phrase 1 through 8 2x
09,29,0 will play 9 through $29 1x
30,30,0 will play $30 once
this pushes the song file up to a clean 16k.
timers and buffers will be set up in basic ram and lower ram.
updated song file
Code: Select all
;*******************************************************************************
;"VICIOUS TRACKER +" song file template
;Ryan Liston
;11/26/2021
;*******************************************************************************
;-------------------------------------------------------------------------------
*=$4000 ;start address
defm data_field ;macro for generating data fields
bytes /1*/2 ;/1= value
endm ;/2= size
;PHRASE
;all PHRASE data represents a pointer to a pattern
;data input from interface is multiplied by 16
;9 CHANNELS
;1: vic voice 1 (baritone) @ 36874 ($900a)
phr_baritone
data_field 0,256
;2: vic voice 2 (tenor) @ 36875 ($900b)
phr_tenor
data_field 0,256
;3: vic voice 3 (alto) @ 36876 ($900c)
phr_alto
data_field 0,256
;4: vic voice 4 (noise) @ 36877 ($900d)
phr_noise
data_field 0,256
;E: "envelope" controls vic volume @ 36878 ($900e) and speed (sound byte rate)
phr_envelope
data_field 0,256
;M: midi note channel 0-15
phr_midi
data_field 0,256
;C: cv line
phr_cv
data_field 0,256
;L: pattern length
;lenght by exception is not a paattern pointer
;length determine the current pattern length
;input is direct
;0-15
phr_length
data_field 255,256
;-------------------------------------------------------------------------------
;PATTERN
;channel 1-4,midi and cv
;values include base note and note sample pointer
;octave/note/tone/sample
;0 to 7/0 to 11/0 to 1/0to 15
;note and sample pointers are devided between 4 parallel data sets
;note, octave and tone values are direct
;sample pointer is multiplied by 16
;oct+note+tone+sample slice value+note pointer value
;baritone patterns
pat_baritone_oct
data_field 0,256
pat_baritone_not
data_field 0,256
pat_baritone_ton
data_field 0,256
pat_baritone_smp
data_field 0,256
;tenor patterns
pat_tenor_oct
data_field 0,256
pat_tenor_not
data_field 0,256
pat_tenor_ton
data_field 0,256
pat_tenor_smp
data_field 0,256
;alto patterns
pat_alto_oct
data_field 0,256
pat_alto_not
data_field 0,256
pat_alto_ton
data_field 0,256
pat_alto_smp
data_field 0,256
;noise patterns
pat_noise_oct
data_field 0,256
pat_noise_not
data_field 0,256
pat_noise_ton
data_field 0,256
pat_noise_smp
data_field 0,256
;midi patterns
pat_midi_oct
data_field 0,256
pat_midi_not
data_field 0,256
pat_midi_ton
data_field 0,256
pat_midi_smp
data_field 0,256
;cv patterns
pat_cv_oct
data_field 0,256
pat_cv_not
data_field 0,256
pat_cv_ton
data_field 0,256
pat_cv_smp
data_field 0,256
;envelope patterns
;values include pointers to volume, speed and the value for current sample
; length
;null/sample length/vol/speed
;null/0 to 15/0 to 15/0 to 15
;envelope is split between 3 data sets
;sample length (direct value)
pat_env_len
data_field 15,256
;volume (points to volume samples)(input*16)
pat_env_vol
data_field 0,256
;speed (points to speed samples)(input*16)
pat_env_spd
data_field 0,256
;-------------------------------------------------------------------------------
;SAMPLE
;channel 1 to 4,midi and cv
;3 data sets per channel
;octave/note/tone
;0 to 7/0 to 11/0 to 1
;all values are direct
;baritone samples
smp_baritone_oct
data_field 0,256
smp_baritone_not
data_field 0,256
smp_baritone_ton
data_field 0,256
;tenor samples
smp_tenor_oct
data_field 0,256
smp_tenor_not
data_field 0,256
smp_tenor_ton
data_field 0,256
;alto samples
smp_alto_oct
data_field 0,256
smp_alto_not
data_field 0,256
smp_alto_ton
data_field 0,256
;noise samples
smp_noise_oct
data_field 0,256
smp_noise_not
data_field 0,256
smp_noise_ton
data_field 0,256
;midi samples
smp_midi_oct
data_field 0,256
smp_midi_not
data_field 0,256
smp_midi_ton
data_field 0,256
;cv samples
smp_cv_oct
data_field 0,256
smp_cv_not
data_field 0,256
smp_cv_ton
data_field 0,256
;volume samples
;1 data set
;direct values
;0 to 15
smp_vol
data_field 8,256
;-------------------------------------------------------------------------------
;ARRANGE
;input is direct
;indexes phrase step for movement starting point 0-255
arr_begin
data_field 0,256
;indexes phrase step for movement end point 0-255
arr_end
data_field 255,256
;number of times the movement repeats
arr_rpt
data_field0,256
;example
; 00,0f,00 plays phrase $00 to $0f (including $0f) once
; 0a,18,04 plays phrase $0a to $18 (including $18) once and repeats 4x
; 19,19,00 plays phrase $19 once
R'zo
I do not believe in obsolete...
I do not believe in obsolete...