Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user Jedfox ! (Registered 2024-05-28) You are not logged in - nap
CSDb User Forums


Forums > C64 Productions > Music Trackers - what should a new one be able to handle?
2003-07-06 16:34
St0fF

Registered: Oct 2002
Posts: 40
Music Trackers - what should a new one be able to handle?

Hi All!
As I'm working on a new tracker and have some sort of concept done, I guess it's best to ask for some comments.

Basic Concept:
-tracking of up to 32 tunes
-> out of memory error included!
->consisting of 4 tracks - one for each voice and one for the filter
- completely reconfigurable speed, two speed-steps
- up to 128 sectors for voices 1..3
- up to 128 filter-sectors
- duration-dependant player, duration independent editor (evry note occupies 1 tick while editing)
- up to 128 instruments (defined by adsr, wave-pointer, pulse-pointer)
- up to 256 Wave-effects
- up to 255 Pulse-effects
- up to 128 Filter-effects
- multispeed-capabilities, handled by the player, you just have to supply the right music-calls ;)
- Player-Calls:
JMP PLAYER ... Akku = tune_num: initialise tune
JMP PLAYER+3 ... standard play_call
JMP PLAYER+6 ... set Global volume to #Akku (for fadein/fadeout purposes)

Tracks: normally point to sectors
Commands: Transpose up/down -$1f..+$1f Halftones
loop track
end track
set global volume (D418)
play song X (so you can make a song out of subtunes ;)
repeat following sector N times

Sectors: do play Notes with Instruments ;)
one tick can consist of the following parts:
- Instrument selection
- ADSR - tuning
- wavepointer - tuning
- pulsepointer - tuning
- global tickspeed - tuning
- Note - Description:
can B: pure Note - just play note using the settings above
glide Note - glides from one note to another with a precalculated glide-add-value
tied Note - just play without restarting the Instrument ... like a freq-change
slide Note - slides from the actual playing frequency to the new note's frequency without restarting the Instrument using a precalculated slide-add
wait tick - just waits
switch gate - switches the gate's status
voice off - turns off the Instrument, resets $d404+(voice_offset) to (09 & gate_status)

huh ... and that was just the upper level ...

Instruments: consist of ADSR, Wavepointer, Pulsepointer
- the Pointers point to Effect numbers.

Wave-effects:
consist of lines ...
which consist of:
- Commands:
- change instrument update speed
- tremor (halftone offset,speed)
- vibrate -> with a given vibrato-width, vibrato-speed, vibrato-delay, and vibrato-direction
- slideaway -> a function dedicated to drum'n'bass music, using vibrato parameters
- off -> works like voice_off, but from inside the instrument
- loop -> loops to another line of the waveeffect
- a Waveform prepared for $d404+(voice_offs), with the Drum-Mode coded into the reset bit (bit3), #8
- a transpose value to be added to the played note to gain the actual frequency __or__ the HIbyte of the frequency if the drum mode was specified

PulseEffects:
also consist of lines
consisting of:
- pulse_set (adjusts $d402/3+(voice_offs))
- pulse_add (sets an 8bit adder and an 8 bit counter)
- pulse_fine_add (16bit adder, 8 bit counter)
- set_delay (sets a 4 bit value of playcalls to wait until the next pulsemodification takes place; none of the following commands are possible if set_delay is specified
- end_pulse
- loop_pulse

Filter-stuff ... it's better to show this on its own
Filter-Tracks ... equal to normal tracks
Filter-Sectors ... do play Notes with Filters ;)
one tick can consist of the following parts:
- Filtereffect selection
- Filterinput selection (which voices 2 filter)
- Note - Description:
can B: pure Note - just play note using the settings above
wait tick - just waits
NOTICE: due to the fact, that the filter itself is regarded as a voice, we supply the basic filter cutoff frequency with the note we play. We can now do Filter-Arpeggios instead of just making some linear motions. We can also do logarithmic motions thru filter-arpeggios ;)

Filtereffects:
consist of lines ...
consisting of any of the following functions combined:
- frq-mode selection (how to translate freqs - as notes or linear)
- Filtertype & -Resonance set
- Frequency set (depending on the frq-mode this is either a halftone_steps_to_add_to_actual_note or a hibyte of a cutoff-freq.)
- set Add - supplying an adder and a counter, some motion is established (for linear: you supply a 16bit addvalue (i know only 11 bits are used for cutoff-freq.); for note_mode: you supply an 8bit adder of how many halftones to add each step)
- set Delay: number of calls to deleay the next filterchange (none of the following commands can be used if this one is used!)
- set freq Fine - sets the 16bit value supplied as filtercutoff, regardless of actual freq-mode
- end filter - stops working on this filtereffect
- loop filter - jumps to another line in the fltfx

Well, this was a damn lot of stuff regarding the structure of 'upcoming' musicdata. A few things left:
The editor manages music memory dynamically, so a sector only takes what it needs while it is not edited. This way we should be able to manage even 32 songs.

Ok, any comments are welcome,
St0fF/Neoplasia
.
 
... 43 posts hidden. Click here to view all posts....
 
2003-10-26 16:46
dalezy

Registered: Apr 2002
Posts: 475
paterpi, but laziness doesn't get you anywhere, imho. always the same sounds make your tunes boring, whatever different melody/bassline the whole thing is based on.

i think so far i've recycled exactly one bassdrum, because i was excited that it turned out that way, but other than that all my sounds are beeing done from scratch, which maybe makes the tunes unique in a certain way (plus the production way always turns out different =).
2003-10-26 17:38
6R6

Registered: Feb 2002
Posts: 244
Pater pi: Free Memory left in SDI is around $0300 bytes, I'd rather use that for other things than a save-instrument routine.
2003-10-27 08:12
LordNikon

Registered: Dec 2001
Posts: 42
@ParterPI: Hehe, right. I wanted to say "it would(N´T) be to bad.... "

2003-11-22 17:06
Akira

Registered: Oct 2003
Posts: 52
CyberTracker lets you save instruments. I think it's handy, because I don't use to remember all the shit I experiment with, and you can tweak them later on transforming them into new stuff.
2003-11-26 09:14
Twoflower

Registered: Jan 2002
Posts: 434
I laid sleepless the other night, and suddenly my mind slipped into some more or less comfortable thoughts. I remembered this thread, and an earlier discussion with Dane concerning what the JCH'ed lacked.

In my opinion - the one thing the JCH'ed really lacks is a decent effect-table. Just like on Amiga or PC-trackers. And I want it on every single note so that I might be able to switch both vibrato/speed/sound/macropointers and whatever I feel like - on every single note. "Well, it isn't possible", you say. "The C-64 char layout is only 40 chars wide!". Well, then don't do it 40 chars wide. Do it 54 or sth equally dividable. Should work out fine. And why in the heck do you need 7 digits for entering a vibrato (f.ex S03 -> 60 32) when only 2 really is needed (entering V0 for 60 30 and V2 for 60 32). If you have dedicated places for these, you wouldn't even have to care for the "V", but I think keeping that makes it more flexible. Look at my example;

A#3 01S4U2
--- ------
C#4 01S3V2

The above example should slide up the note A#3 with speed 2 so it reaches C#4 when it's played (=U2). Furthermore, the general speed of 4 for the entire tune is activated (=S4) while playing the note with the instrument 01 (=01 - first row dedicated to sound). Changing the macropointers for the current sound should be done with entering any value in effectcolumn one or two. This leaves any single parameter save for A-F available for describing effects to the player/editor. F.ex "P" for portamento, G for gate on/off, M for adding that cheap kind of arpeggio you have in PC-trackers, etc...

This leads med into the second issue. Splitspeeds. I find it annoying not to be able to make music splitted in the speeds like f.ex 6/4/2 (three different speedmarkers or more). This might also make it able to individually slow down the tune, without having to spread over more than one or two patterns for a slower passage. Many tracked tunes have used this option.

Third issue. Rastertime. I think there are two needs today. One for making tunes with low r-time, fitted to Grahams, Crossbows, Krills and HCL's purposes, and one for making quality sounds fitting for all music compos, etc. So, why aim for low rastertime? People don't to extremely timed spritemultiplexers anylonger, and in the case they do, there are plenty of players able to achieve what you need. Nah, make a player which takes some r-time and/or make use of $01-$50 or sth similar. :-) And who updates all the sounds and all the effects every frame. Then we're talking nice stuff. Think this over!
2003-11-26 10:52
Dane
Account closed

Registered: May 2002
Posts: 421
Hopefully, I'll be able to release a relatively userfriendly version of the JCH-editor/packer/player in the future. In the meantime, keep stacking these suggestions.
2003-11-26 11:11
Stryyker

Registered: Dec 2001
Posts: 465
Or use a jump to a table sort of like SYNC but more like SDI, a program. For the effects that are either on or off, combine upto 8, sort of like DMC 4 did for instrument effects.

If screen space is limited, use you 3 columns as usual but add a 4ths for extra data that can be jumped to from current voice. Sort of like the old sector editor in DMC/FC. Although you can't see all 3 voices at once, you can see 1.

I guess these ramblings make it obvious I don't handle trackers well :(

ADD:
I'm with Twoflower about raster time. 99% of the time sound quality will make 0 difference code quality in the demo or production. Someone can always make raster restricted player version later.
2003-11-26 12:30
St0fF

Registered: Oct 2002
Posts: 40
Twoflower:
cool vibrato with more usability than 'just' vibrato needs 5 nybbles. starting direction(1 bit), strenth(3 bits), width(one byte), delay_till_start(one byte)
This is a vibrato able to do cool d&b-FX and even more. Variable slides via vibrator and so on.
So don't tell wrong things some ppl have made up their minds ages ago!
Regarding rastertime: some of the most sophisticated players still need more RT than neccessary. It's a compromise between playersize, zeropage-usage, how direct you use your data, and work-scheduling inside the player!
There are two basic ways to minimize Rastertime: do a cut on FX / player-possibilities OR c0de a simple work-scheduler like atmds 3.2 has (look at rastertimes of my tunes - atmds 3.2 is a full function player with an average RTM of less than $10, max i ever seen $1a)
And a last question for twoflower: have you ever thought about how the music with all your FX will look in memory and be managed by the player? From your post it looks like NOT.

cadaver: ATMDS 3.2 has an instrument-save option, but the c0de is so hairy, that it is even hard to find the left over bugs (which appearently are there).

St0fF ... starting to ignore akira and twoflower because of lameness (sry, but i'm just honest)

2003-11-26 16:03
Twoflower

Registered: Jan 2002
Posts: 434
Yeah, sure. Ignore me and call me lame.

I'm just the guy that is convinced that there are ways to do a player suitable for musicians, and i'm aware it'll take quite some rastertime. From your description, your player sounds just like a run-of-the-mill player with some nice code, although with functions fitted to make drum'n bass music. Just about the same as the other 200 available players - save for the d'n b that is. Although I agree with you on the case of the vibrato, the necessary values could be easily stored in another table and the "V1" might just be a pointer to that table. But for my needs - a precalculated vibrato fits just fine.

Concidering most of the other stuff, I think you're way out. What i'm saying is that you SHOULD'T compromise with usage of zeropages, nor rastertime, nor how much memory it'll use. I'm not interested in if a routine takes 10 lines or 50. There are plenty of compromise players with "intelligent" routines cutting r-time, made to impress, so why make another? What's lacking in this scene is a routine which gives the best sound and usability for the musician, at any cost! Just compare the amount of tunes released in musiccollections, musiccompos or directly in HVSC with the actual amount of tunes used in productions. It's about time that the music will have a chance to stand for itself. Have you, btw, ever taken a peek at the playercode for last routine the brothers Follin used? Ste Ruddy's using a staggering amount of zeropages there, and still the r-time usage is quite heavy. Noone still matched that one, and it still worked just fine along with Ghouls&Ghosts.

And sure - the result in memory would probably be quite annoying, although nothing unable to handle. Just reserve about the double memory for the patterns, reading the effects as a separate pattern linked to the notepattern. To make it use less mem, do it like in JCH's and use a packer in the end to remove the spaces and change the pointers. Managing it with a routine that updates the filter, pulse, vibrato and sound every frame would most probably take a hell of rastertime, but concidering that - look above. And hey - Amigamod's have a great structure which you could rely on. There's plenty of documentation of the structure of f.ex the .mod format and it's followers if you want to learn how to handle this.

But who am I to describe this? I mean, i'm just a visionary answering your question "what a new player should be able to handle". And since you're obviously not going to code the player anywhere near what i'm aiming at - I better keep still, keeping on wishing that some other coder would make something which would bring something new to the scene.

I mean, I have understood you right, haven't I? You really didn't want a serious answer to your question, nor serious comments? You wanted a load of puppets applausing your ideas, telling you that your ideas are great while you keep bragging.

Well. I'm not going to give you that.
2003-11-26 17:47
Hate Bush

Registered: Jul 2002
Posts: 456
I agree with Twoflower on that. There aren't many occassions on which I'm forced to cut down the rastertime my tune uses. And if I am, there is GT 1.01, there is JCH v19, there is Ninjatracker.
What I need is flexibility, tweakability (nice word eh?), loads of features and user-friendliness (which means: as close to general tracker standard as possible - GT is unbeatable so far). Perhaps even in reverse order. :)
BTW., there is a new player/editor, coded by Asterion/Samar. Hasn't been released yet, but it is FULL of features. I talked about it with the author, and each question of mine starting with "Does it allow me to... Does it have..." Asterion replied in positive. I can't wait to see and try that tracker.
Previous - 1 | 2 | 3 | 4 | 5 | 6 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Cresh/Elysium
psych
t0m3000/HF^BOOM!^IBX
Isildur/Samar
Shake/Role
iceout/Avatar/HF
Knut Clausen/SHAPE/F..
Steffan/BOOM!
DjS/Silicon Ltd
encore
Guests online: 102
Top Demos
1 Next Level  (9.8)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Aliens in Wonderland  (9.7)
5 Coma Light 13  (9.7)
6 Edge of Disgrace  (9.6)
7 No Bounds  (9.6)
8 Comaland 100%  (9.6)
9 Uncensored  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Happy Birthday Dr.J  (9.8)
2 Layers  (9.6)
3 It's More Fun to Com..  (9.6)
4 Cubic Dream  (9.6)
5 Party Elk 2  (9.6)
6 Copper Booze  (9.6)
7 TRSAC, Gabber & Pebe..  (9.5)
8 Rainbow Connection  (9.5)
9 Dawnfall V1.1  (9.5)
10 Daah, Those Acid Pil..  (9.5)
Top Groups
1 Nostalgia  (9.4)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 SHAPE  (9.3)
Top Organizers
1 Burglar  (9.9)
2 Sixx  (9.8)
3 hedning  (9.7)
4 Irata  (9.7)
5 MWS  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.051 sec.