VIC-TRACKER 2.0 released, loads of new features!

Basic and Machine Language

Moderator: Moderators

tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

VIC-TRACKER 2.0 released, loads of new features!

Post by tlr »

Image
Hi,

Ten years has passed since the first 0.6 revision of VIC-TRACKER, and
now the much anticipated VIC-TRACKER 2.0 is released! Version 2.0 adds
loads of new features and improvements over the previous 1.0 and 0.6
versions!

http://www.kahlin.net/daniel/victracker/

VIC-TRACKER is a full-featured tracker-style music editor for the
Commodore Vic-20. It includes a cross-compressor which produces compact
assembly source code output suitable for inclusion in demos and games.
As of version 2.0 VIC-TRACKER also supports Sync24/DIN-Sync making it easy
to synchronize it to modern sequencers and electronic music hardware such
as drum machines.

I hope you will find this piece of software useful and entertaining.
Please make lots of fun music with it!

Full source code is included ofcourse!

Kind regards
/Daniel Kahlin

New in version 2.0:
  • SYNC24/SYNC48 support. You may now sync VIC-TRACKER to an external sequencer/synthesizer/drum machine.
  • (SHIFT-)INST/DEL inserts and deletes in the patternlist.
  • SHIFT-CLR/HOME clears the current pattern. (After asking)
  • Songs may have a repeat step that is different from the start step.
  • Rastertime display may be toggled on/off (V).
  • Multispeed player, 1x, 2x, 3x & 4x interrupt speeds.
  • Sanity checks have been implemented in many places.
  • Patterns may be transposed up/down in the pattern editor (C= T, C= Y)
  • Arpeggio modes 0, 1 and f are implemented correctly.
  • A default arpeggio may be set up in the sound.
  • A frequency offset may be set up in the sound definition.
  • A default glide may be set up in the sound definition.
  • Cut and paste in pattern editor.
  • The current pattern may be changed from within the pattern editor.
  • The patternlist row that is to be edited may be changed from within the pattern editor. (C= N, C= M)
  • Sounds may have length.
  • New player effect Set Flag.
  • New player effect Cut Note.
  • New player effect Delay Note.
  • The pattern list has a new column allowing the length of the patterns to be selected per row in the pattern list.
  • Arpeggios may now have up to 16 steps, and have their speed, length, and repeat position individually configurable.
  • Sounds may be edited.
  • Support for both NTSC and PAL interrupt speeds.
  • Support for up to 16 different songs in each module. (different StartStep, EndStep and StartSpeed for each)
  • Pressing C= Q,W,E,R toggles voice 1-4 on and off.
  • Error check during load and save.
  • Loaded songs are padded with zeroes during load.
  • Pressing '<-' in the pattlist editor enters the first unused pattern
  • Empty notes (00) in patterns now show '--' and continuation notes (80) show '++'.
  • SPACE enters an empty value, and moves down.
  • SHIFT-SPACE enters a continuation note in the note field.
  • The editor cursor is blanked when input is required in the status field
  • The cursor is positioned on the same voice when switching between the pattern editor and the pattern list editor.
  • completely new directory structure
vic user
VicGyver
Posts: 1401
Joined: Thu Mar 25, 2004 9:40 am

Post by vic user »

i love that you popped your program on their tv set!!!


i am listening to some of the tunes now!

wicked!
Boray
Musical Smurf
Posts: 4064
Joined: Mon May 03, 2004 10:47 am

Post by Boray »

Cool, thanks!!! I will check it out when I have time...

/Anders
PRG Starter - a VICE helper / Vic Software (Boray Gammon, SD2IEC music player, Vic Disk Menu, Tribbles, Mega Omega, How Many 8K etc.)
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Rather than hogging that other thread*, I comment in this thread instead.

I just started in victracker, and here are a few observations:

1. The docs mention length of each pattern, and that the default is $1F. It turns out that the maximum length also is $1F. Personally, I like a bit longer sequences, but I'm sure there is a good reason for this limitation and I can live with it. For a future update of the documentation, I think it should be mentioned.

2. The docs also mention Editstep (CTRL-1 to 0). I notice that the indicator changes, but I can't deduce what else happens. As far as I can see, the feature is not further covered.

3. We've discussed before the possibility to make Patternedit more human readable. One way to notate any note and octave within two characters is to have the note name in the first character and the octave in the second. For sharp notes, you could invert the note name if you don't fancy moving to custom characters. I think it could work out quite well. Of course one has to program a matching input mode too. Maybe worth considering?

I'll start with sequencing a short cover tune which I arranged in OctaMED, to get a better feeling for the editor. Maybe I'll return with more questions and observations.

*) As a moderator, I can delete, move or split a thread, but I don't think I can attach messages from one thread to another?
Anders Carlsson

Image Image Image Image Image
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

4. I'm not able to get high absolute notes from noise arpeggios. My intention is to make some kind of cool drum sound.

Instrument 1: D=08 F=00 G=00 A=81 00 00 00 00

Arpeggio 1: 00 7D (7 x 00) / 00 (7 x 00), i.e. a 1-note "arpeggio" only consisting of a high, fixed note.

Notes in treble channel: 32 81 / 22 00 / 24 00 (within note table)

From the treble channel, three beeps of equal high frequency can be heard. However, when I try to do the same for noise:

Notes in noise channel: 60 81 / 52 00 / 44 00 (should be valid?)

I get a fixed, but rather low sounding noise. I suppose this is due to the notes in noise channel are interpreted as a frequency 00-7F rather than from the note table. Since the fixed notes only allow the effective value range 00-3F, noise can not sound higher pitched than mid register.

I suppose the unimplemented arpeggio mode 2 would solve this. I believe arpeggio mode 0 is for arpeggio and mode 1 for vibrato or a controlled glide?

I see that there is a possibility to use an arpeggio together with portamento, which I find cool. MSB in arpeggio affects both instrument glide and note portamento? When it comes to noise, will one ever define an instrument that has e.g. a default glide but you sometimes via an arpeggio want to disable the glide? I'm thinking of options to solve issue above, more than implenting mode 2 or create another arpeggio mode..

By the way, another simple improvement would be to add labels onto the screens for sound and arpeggio; at least the sound editor would be more helpful in the beginning if it said D/F/G/A or something on top.
Anders Carlsson

Image Image Image Image Image
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

In the mean time, I've decided to solve the issue by making all drum notes have the frequency $40, which is in middle of the register. Then I make arpeggios using mode 1:

10 | 30 20 50 00 00 00 00 00
22 | 00 00 00 00 00 00 00 00

which would add e.g. 48, 32 and -48 to the base frequency of 192 to get some kind of bass drum. Other frequency offsets for snare or high hat. If I want more flexible synth tom, I'll of course use a glide instrument.
Anders Carlsson

Image Image Image Image Image
tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

Post by tlr »

carlsson wrote:1. The docs mention length of each pattern, and that the default is $1F. It turns out that the maximum length also is $1F. Personally, I like a bit longer sequences, but I'm sure there is a good reason for this limitation and I can live with it. For a future update of the documentation, I think it should be mentioned.
The maximum is $1f (=32 steps). The reason is just that each pattern is statically spaced this amount appart in memory. It could possibly be tweaked for the next version.
Yes, it should be mentioned, noted!
carlsson wrote:2. The docs also mention Editstep (CTRL-1 to 0). I notice that the indicator changes, but I can't deduce what else happens. As far as I can see, the feature is not further covered.
When advance mode is set to 'D' (=down), editstep is the number of steps to jump down after entering a digit. Convenient for putting, say, a drum sound every 8th step e.g.
carlsson wrote:3. We've discussed before the possibility to make Patternedit more human readable. One way to notate any note and octave within two characters is to have the note name in the first character and the octave in the second. For sharp notes, you could invert the note name if you don't fancy moving to custom characters. I think it could work out quite well. Of course one has to program a matching input mode too. Maybe worth considering?
There are ties aswell as normal notes. I was thinking of making ties inverted. One possibility is to widen the screen by 4 chars. This way regular 'C-3', 'C#3', etc... notes could be possible.
carlsson wrote:I'll start with sequencing a short cover tune which I arranged in OctaMED, to get a better feeling for the editor. Maybe I'll return with more questions and observations.
Excellent! :) I'm looking forward to it!
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

There also are white, cyan, purple, green and yellow colours, although not all will be readable on light blue background. Wider screen will work on PAL, but I'm not sure how many NTSC VICs (and monitors) can display a 26 column screen. If you switch to lower case, you can use a combination of lower case, upper case, inverted and different colours to indicate odd notes.

I found that a three note drum arpeggio is a little too long and will effectively hide the bass, so I made it two notes (dur=2) instead..
Anders Carlsson

Image Image Image Image Image
tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

Post by tlr »

carlsson wrote:4. I'm not able to get high absolute notes from noise arpeggios. My intention is to make some kind of cool drum sound.

Instrument 1: D=08 F=00 G=00 A=81 00 00 00 00

Arpeggio 1: 00 7D (7 x 00) / 00 (7 x 00), i.e. a 1-note "arpeggio" only consisting of a high, fixed note.

Notes in treble channel: 32 81 / 22 00 / 24 00 (within note table)

From the treble channel, three beeps of equal high frequency can be heard. However, when I try to do the same for noise:

Notes in noise channel: 60 81 / 52 00 / 44 00 (should be valid?)

I get a fixed, but rather low sounding noise. I suppose this is due to the notes in noise channel are interpreted as a frequency 00-7F rather than from the note table. Since the fixed notes only allow the effective value range 00-3F, noise can not sound higher pitched than mid register.
They way arpeggio mode 1 works now in the noise channel is more of a side effect. If I remember correctly my original intention was that offsets would be treated as frequency offsets, but absolute notes would be looked up in the note table.
I'll look into it.
carlsson wrote:I suppose the unimplemented arpeggio mode 2 would solve this. I believe arpeggio mode 0 is for arpeggio and mode 1 for vibrato or a controlled glide?
Basically yes, but arpeggio mode 1 is also intended for drum sounds.
You can add and subtract so you can basically cover the whole range if the note value is set to $40 in the noise channel of the pattern.
The only thing you can't do that you could do with mode 0 is insert a silent note.
carlsson wrote:I see that there is a possibility to use an arpeggio together with portamento, which I find cool. MSB in arpeggio affects both instrument glide and note portamento? When it comes to noise, will one ever define an instrument that has e.g. a default glide but you sometimes via an arpeggio want to disable the glide? I'm thinking of options to solve issue above, more than implenting mode 2 or create another arpeggio mode..
It affects all portamento. You should note here that there really is only one portamento. The portamento byte in the sound just sets a default.
A portamento command in the pattern will override the default.
The arpeggio modes aren't difficult to implement, but they do take space in memory.
carlsson wrote:By the way, another simple improvement would be to add labels onto the screens for sound and arpeggio; at least the sound editor would be more helpful in the beginning if it said D/F/G/A or something on top.
I could do that, or I could just add a piece of text that shows what the currently edited column contains.
Last edited by tlr on Tue Oct 11, 2005 11:38 am, edited 1 time in total.
tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

Post by tlr »

carlsson wrote:In the mean time, I've decided to solve the issue by making all drum notes have the frequency $40, which is in middle of the register. Then I make arpeggios using mode 1:

10 | 30 20 50 00 00 00 00 00
22 | 00 00 00 00 00 00 00 00

which would add e.g. 48, 32 and -48 to the base frequency of 192 to get some kind of bass drum. Other frequency offsets for snare or high hat. If I want more flexible synth tom, I'll of course use a glide instrument.
Oops, I read and answered your posts in sequence...
Yes that's what I'd use.
tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

Post by tlr »

carlsson wrote:There also are white, cyan, purple, green and yellow colours, although not all will be readable on light blue background. Wider screen will work on PAL, but I'm not sure how many NTSC VICs (and monitors) can display a 26 column screen. If you switch to lower case, you can use a combination of lower case, upper case, inverted and different colours to indicate odd notes.
I think I already streched the limits for usable colors a bit. :wink:
One idea I had was wasting some memory on a custom font.
It could look good if I made chars containing 'C' + half '#', and half '#' + '2' for 'C#2'. I'm a bit reluctant to waste space for this though.
carlsson wrote:I found that a three note drum arpeggio is a little too long and will effectively hide the bass, so I made it two notes (dur=2) instead..
There's quite a bit of distortion and intermodulation going on in the output stage, very useful... :)
tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

Post by tlr »

tlr wrote:
carlsson wrote:4. I'm not able to get high absolute notes from noise arpeggios. My intention is to make some kind of cool drum sound.

Instrument 1: D=08 F=00 G=00 A=81 00 00 00 00

Arpeggio 1: 00 7D (7 x 00) / 00 (7 x 00), i.e. a 1-note "arpeggio" only consisting of a high, fixed note.

Notes in treble channel: 32 81 / 22 00 / 24 00 (within note table)

From the treble channel, three beeps of equal high frequency can be heard. However, when I try to do the same for noise:

Notes in noise channel: 60 81 / 52 00 / 44 00 (should be valid?)

I get a fixed, but rather low sounding noise. I suppose this is due to the notes in noise channel are interpreted as a frequency 00-7F rather than from the note table. Since the fixed notes only allow the effective value range 00-3F, noise can not sound higher pitched than mid register.
They way arpeggio mode 1 works now in the noise channel is more of a side effect. If I remember correctly my original intention was that offsets would be treated as frequency offsets, but absolute notes would be looked up in the note table.
I'll look into it.
After looking at it, it is probably not a good idea to use mode 0 in the noise channel at all.
If I am to fix it, I should implement a new mode. Maybe this should be like mode 0, but with the parameter meaning double its value?
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Dunno what to do with the arpeggio modes. As you point out, mode 1 works quite well for my purpose apart from the possibility to add silence. In mode 0 on the other hand, all values $40-$4F will be silent.

One way to fix it would to revert noise channel back to a note table instead of using absolute frequencies. In that way, arpeggio mode 0 would work equally well with all voices. I don't know which frequency C#4 ($3D) corresponds to, but maybe there is room to extend the note table upwards.

Re: notation, I think using capital letters for regular notes, inversed for sharp and small case for the somewhat rare tie notes (inverse small case for sharp ties) would work. To get a tie, you press the key corresponding to that note twice or something.

Some day, I'll look into this variable pulse width thing. If it is controllable, it might be great to add to victracker.
Anders Carlsson

Image Image Image Image Image
tlr
Vic 20 Nerd
Posts: 567
Joined: Mon Oct 04, 2004 10:53 am

Post by tlr »

carlsson wrote:Dunno what to do with the arpeggio modes. As you point out, mode 1 works quite well for my purpose apart from the possibility to add silence. In mode 0 on the other hand, all values $40-$4F will be silent.
I think the current modes (0 and 1) will already allow for some pretty cool stuff.
I'll think a bit more about which new mode would be useful. Maybe this will crystalize as people do a few more songs... :wink:
carlsson wrote:One way to fix it would to revert noise channel back to a note table instead of using absolute frequencies. In that way, arpeggio mode 0 would work equally well with all voices. I don't know which frequency C#4 ($3D) corresponds to, but maybe there is room to extend the note table upwards.
I have thought a bit about that too. I think you would want the full range of frequencies for the noise, atleast that's what I felt when I implemented it this way.
carlsson wrote:Re: notation, I think using capital letters for regular notes, inversed for sharp and small case for the somewhat rare tie notes (inverse small case for sharp ties) would work. To get a tie, you press the key corresponding to that note twice or something.
Could be a solution. This requires some rework in the editor code which might be done for a future version.
carlsson wrote:Some day, I'll look into this variable pulse width thing. If it is controllable, it might be great to add to victracker.
I had some thoughts about this aswell. I think it's possible to control depending on how much raster time you are willing to spend.
Maybe with some trick it could be done even with just a little raster time.
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

More feature requests.. :)

1. Tweakable note table, preferrably saved with song data. I'm sure you have produced the best sounding table for C major, but sometimes if you compose in a different key, things can sound a bit off. I've been struggling with finding the best frequencies for VIC-20 music since 1996, and it can be a pain sometimes to find the best combination of key and frequencies.

2. Duplicate effect byte. To make an effect like arpeggio or portamento last through the note, the effect has to be added to each row of the note (++). If there is a key to copy the current effect byte into a buffer, and for every time you press SHIFT SPACE to get a ++ row, the effect byte will be added, it'd be a nice improvement IMHO. Press the same key to detoggle this feature.

3. Transpose pattern in pattern list? Not only copy-paste-transpose, but maybe it would be useful to reuse the same pattern in different keys.

I found that portamento + tie note yields a bit funny results in some cases, like the ending note is way higher than expected.

Enough complaining, this is what I've worked on. It is a 3/4 cover of one of ABBA's hit songs, packed with arpeggios, some vibratos and glides.

http://www.cbm.sfks.se/files/MONEYMON.VT

Then I tried to execute vtcomp under MinGW. I have all the required tools, and I managed to compile it, but it didn't execute well. It works in Linux though. This tool outputs an assembly listing, which I merged with the simple raster timing routines Marko wrote many years ago. Finally, I had to Pucrunch it to fit in unexpanded VIC-20. (don't clear screen)

http://www.cbm.sfks.se/files/money.prg (PAL version)

I'm not sure how to do a NTSC version. Victracker has an option for a such play speed, and I can change the timing parameters for NTSC speed, but I don't know which to fiddle with.
Anders Carlsson

Image Image Image Image Image
Post Reply