| |
Laxity
Registered: Aug 2005 Posts: 459 |
SID Factory
Ok.. So.. I added it and called it an alpha release since it's not yet completely done and subject to fundamental changes, especially in the file format.
SID Factory 0.5 (alpha 1) |
|
| |
tlr
Registered: Sep 2003 Posts: 1730 |
Looks extremely nice. I especially like the per player table configurations! :)
Bug: Pressing RESTORE in the editor screen borks the interrupt and eventually crashes.
(tested in VICE + AR6) |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Oh yes.. Forgot to clamp restore.. ;).. Watch out for that one! |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
First touch of SF, only non-player questions:
1) JCH won't be happy if he sees SID Factory. ;) In fact, SF looks like first worthy succesor of JCH Editor.
2) I love keyboard shortcuts. At last they practical! Spiltting pattern and fiding unused (SHIFT + F) are good ideas.
3) How many sequences can be used? I've noticed that $80 value and more cannot be written into track list, but in $7F, $7E and $7D sequences I see a lot of strange numbers and symbols.
4) Can sequence $00 be used to store notes? In JCH it was strictly forbidden...
5) Keys F6 and F7 changes tune speed (right?) but their meanings wasn't described in docs.
6) Is it possible to change keyboard mode (in sequence-edit mode) so the crsr don't go to next line after I write a note? In JCH there was SHIFT + V/N and it wasn't bad thing. |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
1) I'm sure Jens doesn't care...But... Now that this was kind of thrown out the door, there's no credits written at all. It's not a secret that SID Factory is VERY much inspired by JCH's superb editor. As a matter of fact the sequence format is exactly the same (talking data format here). All the code was written from scrath though, without peeking even, if that makes a difference.
2) .. ;)
3) Says so in the main menu "max number of sequences" or something like it
4) Yes.. Sequence 0 is just a sequence.
5) No.. Tune speed is changed in the speed table (read the docs ;)..) F5 and F6 changes multi speed config. F7 and F8 the current octave.
6) Hold shift while typing a note will make the cursor stay on the current line.
EDIT: Be carefull with SHIFT+s, as it doesn't look through the sequences to replace the current sequence value with cur+new split part. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Thanks. So next things:
7) What about clearing all tables and/or patterns?
8) How to change last row in track-list ("loop") into something else ("stop" maybe?)?
EDIT
9) Is SHIFT + B (scroll play) planned/avaliable? |
| |
Hein
Registered: Apr 2004 Posts: 933 |
I'm a total noob to JCH/Sid Factory, so how do I get to the disk menu again? :) |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
SHIFT + X |
| |
tlr
Registered: Sep 2003 Posts: 1730 |
@Hein: By trial and error I found out that it is SHIFT+X. |
| |
dalezy
Registered: Apr 2002 Posts: 475 |
yay! i've been playing with it for more than an hour now.
2 things that i've noticed:
1) the tie note is mapped on '=' instead of '*' as it's described in the docs (atleast in vice, didn't try this one on my c64 yet; or is this a danish vs. klingon keyboard clash? =)
2) jumping from the instrument table to the right position in the wavetable would be a great plus, just like in jch (using 'G')
i agree with sidder, shift+B would be a sexy thing to have.
now i gotta re-learn the filter table, the automatic slides from $00-$10 are a nice thing to have though =)
.. i see us going nata on you in no time .. :D |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Maybe I am blind, but I'm not able to find:
10) How to jump to the beginning of all song (JCH's "=" key)
11) How to change tune speed?
12) How to jump to first current instrument line in wave-table (JCH's "G" / "H") and how to jump to first free line in wave-table (JCH's "J")? It was VERY useful. |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Thanks. So next things:
7) What about clearing all tables and/or patterns?
8) How to change last row in track-list ("loop") into something else ("stop" maybe?)?
EDIT
9) Is SHIFT + B (scroll play) planned/avaliable?
7) You mean like, clear the song?
8) Yeah, well.. one of those things pending implementation
9) No and no! |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: yay! i've been playing with it for more than an hour now.
2 things that i've noticed:
1) the tie note is mapped on '=' instead of '*' as it's described in the docs (atleast in vice, didn't try this one on my c64 yet; or is this a danish vs. klingon keyboard clash? =)
2) jumping from the instrument table to the right position in the wavetable would be a great plus, just like in jch (using 'G')
i agree with sidder, shift+B would be a sexy thing to have.
now i gotta re-learn the filter table, the automatic slides from $00-$10 are a nice thing to have though =)
.. i see us going nata on you in no time .. :D
1) Yes.. I forgot to change that in the docs. That's because "*" maps to a note on the keyboard when in the note row, so "=" is a little more convenient.
2) Yes well.. That's a problem when trying to have a generic table setup. I'll write on the low-priority list. (Which is pretty low, I'm afraid!) |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Maybe I am blind, but I'm not able to find:
10) How to jump to the beginning of all song (JCH's "=" key)
11) How to change tune speed?
12) How to jump to first current instrument line in wave-table (JCH's "G" / "H") and how to jump to first free line in wave-table (JCH's "J")? It was VERY useful.
10) How about "home"?
11) Use speed table.. Have you tried to press "," and "." when the dynamic tables are visible.. There are even more tables there (Driver 5.01d)
12) Look at instrument pointer, open and activate wave table, use cursor up or down ;) (Not implemented) |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote:7) You mean like, clear the song?
I thought about separately clearing:
- all patterns and tracks
- all tables
But let's start from ANY clearing. :)
Quote:11) Use speed table.. Have you tried to press "," and "." when the dynamic tables are visible..
OK, now everything is understood. |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Quote:7) You mean like, clear the song?
I thought about separately clearing:
- all patterns and tracks
- all tables
But let's start from ANY clearing. :)
Quote:11) Use speed table.. Have you tried to press "," and "." when the dynamic tables are visible..
OK, now everything is understood.
I can't see when clearing tables would make any sence, unless you want to clear ALL tables.. Now, clearing a sequence I can understand.. I usually keep sequence 0 the "standard" length of my song, so I just copy that to whatever sequence I wanna clear.
Note: I accidentally send you this reply as a PM.. Sorry.. That was not intended. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote:I can't see when clearing tables would make any sence, unless you want to clear ALL tables..
If we talk about sequences, I mean clearing ALL of them (without erasing instruments and tables). Kind of SHIFT + C.
IMHO there should be also way to cleaning ALL tables (without erasing patterns). It isn't used very often, but sometimes is.
I'd do it that way:
By pressing SHIFT + C messages apperas:
1st question
"Clear all sequences? Y/N"
2nd question
"Clear all tables? Y/N"
I think it's very natural and don't make any limitations. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Let's leave for a moment keyboards and technical details. I'm trying to understand how pulse and filter tables works, but without success. :(
Maybe an example? How to create _pulse_ like that?
1. Start with 50% pulse.
2. Leave it unchanged for $13 frames.
3. Add $0e value for $20 frames.
4. Subtract $0e value for $20 frames.
5. Goto 3
I also cannot find description of HardRestart & Init tables. Maybe I've just got other docs than you? ;) |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Let's leave for a moment keyboards and technical details. I'm trying to understand how pulse and filter tables works, but without success. :(
Maybe an example? How to create _pulse_ like that?
1. Start with 50% pulse.
2. Leave it unchanged for $13 frames.
3. Add $0e value for $20 frames.
4. Subtract $0e value for $20 frames.
5. Goto 3
I also cannot find description of HardRestart & Init tables. Maybe I've just got other docs than you? ;)
Ok.. Pulse first
00: 88 00 13
- Set pulse width $800 (50%) stay on program step $13 frames
01: 00 0e 20
- Add value $00e to pulse width, repeat for $20 frames
02: 0f f2 20
- Subtract $00e from pulse width, repeat for $20 frames ($1000-$000e=$0ff2)
03: 7f 00 01
- Jump to step $01
Init table and hard restart table isn't documented I just discovered!..
That hard restart table holds 16 sets of ADSR values. These are index from the instrument defining what ADSR is used for hard restart. Low 4 bits of the 3rd instrument byte are used for indexing into the hard restart table.
Neither is the init table.
The idea of the init table is that it hold a set of init variables per song in word file. So far only the first row of bytes make any sence as SID Factory doesn't support multiple tunes per work file.. yet..
In Driver 5.xx the init table describes the following:
aa bb cc dd
aa = Song speed pointer.
bb = D418 value (volume + band width)
cc = D417 value (resonanse and voice filter select bits)
dd = D416 value (filter value)
The filter setting stuff is there to avoid clicking on 6581. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Thanks, I finally understood these tables. Aren't so difficult as they look.
Hmm...:
13) I don't see tone-portamento command (NP 21.G5 8x xx). Unavaliable?
14) What about changing global volume on the fly? I noticed only set up global volume in init-table, but changing it during song play seems to be impossible. |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Thanks, I finally understood these tables. Aren't so difficult as they look.
Hmm...:
13) I don't see tone-portamento command (NP 21.G5 8x xx). Unavaliable?
14) What about changing global volume on the fly? I noticed only set up global volume in init-table, but changing it during song play seems to be impossible.
NP..
13) Yes.. unavailable for now. It's a must have, I know!
14) Seems that not implemented in the drivers either. Also absolutly a must have. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
All clear. So a little summary - what would I implement first (if I decided) and what is more important from my point of view:
High priority:
- tone-portamento
- changing global volume
- clearing all patterns
- SHIFT + "+" (jump to * start position)
Mid priority:
- jump to first line (of current instrument) in wave-table (JCH's "G") (ideal: in wave, pulse and filter tables - it'd be so useful!)
- scroll play (Yes and yes! :) - if tune is long without this function it's not easy to find and e. g. correct notes in 'far' sequences)
- clearing all tables
- stop mark in sequences-list
Low priority:
- easier docs: with examples how tables work
Anyway, SF is already good editor. I'll be waiting for all improvements.
|
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: All clear. So a little summary - what would I implement first (if I decided) and what is more important from my point of view:
High priority:
- tone-portamento
- changing global volume
- clearing all patterns
- SHIFT + "+" (jump to * start position)
Mid priority:
- jump to first line (of current instrument) in wave-table (JCH's "G") (ideal: in wave, pulse and filter tables - it'd be so useful!)
- scroll play (Yes and yes! :) - if tune is long without this function it's not easy to find and e. g. correct notes in 'far' sequences)
- clearing all tables
- stop mark in sequences-list
Low priority:
- easier docs: with examples how tables work
Anyway, SF is already good editor. I'll be waiting for all improvements.
On the driver level:
- Portamento is good to have
- volume change is a must.
These things are pending implementation.
On the editor level:
- Fix "Restore" bug.. ;)
- Clearing sequences and patternlist. Should be easy.
- Clearing patterns is a possibility, but I need to have a default pattern for the Init table per. player. This means I need to change the file format. Therefore, if this is needed, and I guess it is, this will be pending until I've planned the rest of the changes that will cause file format changes too.
- Shift + "+" - Have you tried pressing that combination? (I know.. that ALSO not in the docs!)
Those, jump to table, features are what I think of as "nursing" features. They are VERY nice, but not nessesary. Another thing that makes the rather complicated to implement is that the whole table setup is dynamic. Therefore linking a position in one table to another is rather bad. Especially as this info needs to be stored with the player/work file in some way..
- Scroll play.. Well.. I don't think so.. Let's see if I some day come up with an idea that allow this implemented easily.
|
| |
tlr
Registered: Sep 2003 Posts: 1730 |
Quote:Those, jump to table, features are what I think of as "nursing" features. They are VERY nice, but not nessesary. Another thing that makes the rather complicated to implement is that the whole table setup is dynamic. Therefore linking a position in one table to another is rather bad. Especially as this info needs to be stored with the player/work file in some way..
Couldn't you store it in the player file as the actual code (one for each table) that parses the current entry for its target.
It could for example return table number in Acc and table index in X (and some code for no jump).
Just a thought.
|
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote:- Shift + "+" - Have you tried pressing that combination? (I know.. that ALSO not in the docs!)
No - it IS in docs, but as not implemented. Quote:
"Shift + + - Go to marked track. (NOT implemented yet!)" |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
ok.. but it is ;) |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Quote:Those, jump to table, features are what I think of as "nursing" features. They are VERY nice, but not nessesary. Another thing that makes the rather complicated to implement is that the whole table setup is dynamic. Therefore linking a position in one table to another is rather bad. Especially as this info needs to be stored with the player/work file in some way..
Couldn't you store it in the player file as the actual code (one for each table) that parses the current entry for its target.
It could for example return table number in Acc and table index in X (and some code for no jump).
Just a thought.
I thought of that, it's a good idea actually, but I'm not going for that solution if I implement it. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote:Those, jump to table, features are what I think of as "nursing" features. They are VERY nice, but not nessesary.
Of course, but essential features of modern editors are such "nursing" attributes! Not only perfect player - also perfect editor. The more so because e. g. "G-key jump" is one of the most using function. |
| |
cadaver
Registered: Feb 2002 Posts: 1154 |
Beware, nursing features *are* the way to the darkside! |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Beware, nursing features *are* the way to the darkside!
LOL! |
| |
Steppe
Registered: Jan 2002 Posts: 1510 |
Nerding features the way to the dark side are, Luke? |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Actually I'm kind of intrigued by these nursing features, but if I'm to implement them I want to do it properly, and that's proving rather difficult, especially as the code for SID Factory is rather big.. Maybe I should start thinking about using $d000-$e000 too ;) |
| |
Oswald
Registered: Apr 2002 Posts: 5031 |
lol yeah, why nursing feats ? give them the player source in tasm format, then they can just edit the .byte lines like a charm :) |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
;) .. I realize that not everybody are programmers. |
| |
j0x
Registered: Mar 2004 Posts: 215 |
Oswald: That's exactly how my "editor" works! :) Gives a lot of freedom to the composer. Not very comfortable composing, though.
[irony] Maybe that's why I keep releasing hundreds of tunes? [/irony].
Laxity: What new features ("unique selling points") or combination of features does SF provide? I'm always curious about new audio innovations!
/Stefan |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: Oswald: That's exactly how my "editor" works! :) Gives a lot of freedom to the composer. Not very comfortable composing, though.
[irony] Maybe that's why I keep releasing hundreds of tunes? [/irony].
Laxity: What new features ("unique selling points") or combination of features does SF provide? I'm always curious about new audio innovations!
/Stefan
Eh.. Download and try, that's probably the best way to find out.
I wrote the editor mostly for myself as I would like to have one that was scalable (to a certain extend) around what ever player I cook up. |
| |
abaddon Account closed
Registered: Apr 2002 Posts: 28 |
how about transposing sequences downwards? see sdi for implementation |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote: how about transposing sequences downwards? see sdi for implementation
Note that in SF / JCH standard (default) transposition for sequences is +$C. So you can use $0 - $0B in track list (isn't one octave enough? ;)
Laxity, is it possible to comeback to SF after reset? Any SYS? |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Hmm.. Dunno, never had to recover from reset. Did the editor crash?
I think the memory manager might screw up if you try to sys $0840 or the state delegator might not be reset correctly, but I'm raelly not sure. I can test it.... |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
No, you cannot sys back into the editor or menu or anything - it doesn't crash, but just doesn't respond to input as. I can fix it for the next release (which is november at the soonest because of maximum work pressure). |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: how about transposing sequences downwards? see sdi for implementation
Was that $8c default transposition answer enough?
I ran SDI once, and if I remember correctly, it displays or can display notes transposed in the sequences. Pretty cool I think, which makes the relative transposition a lot more dynamic when editing because you'll actually hear the notes you type not the notes you type plus some obscure transposition. I like that! While praising SDI, I might as well add that I find the 4th utility-track (or what to call it?) a brilliant concept. |
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote:Did the editor crash?
No, it was only theoretical question. |
| |
abaddon Account closed
Registered: Apr 2002 Posts: 28 |
Quote: Was that $8c default transposition answer enough?
I ran SDI once, and if I remember correctly, it displays or can display notes transposed in the sequences. Pretty cool I think, which makes the relative transposition a lot more dynamic when editing because you'll actually hear the notes you type not the notes you type plus some obscure transposition. I like that! While praising SDI, I might as well add that I find the 4th utility-track (or what to call it?) a brilliant concept.
yeah, i know all about it, since i've been using jch's editor for many years now. i just think the sdi's way is more flexible, though adding it would break the compatibility with older tunes in your editor. maybe it could convert the old tunes to the new trackformat while loading.
|
| |
Soren
Registered: Dec 2001 Posts: 547 |
well, I'm glad that Laxity is doing this editor to please himself, as often you can't please everyone, due to people wanting things to work in different ways.
In my editor I have seserved $9000 bytes for sound and music data (that includes 160 sequences, so I have already had a few problems fitting everything into it. So I did a priority list of "things to do". Unpacked my editor is 244 blocks big, so I hope that I'll still find a cruncher that handles files of that size. ;-)
Anyways, my point is that musicians don't always think of the "problem" of only having 64k to work with... musicians who code editors do, however. And in my opinion a lot of things being suggested for c64 music editors, are not really needed.
|
| |
cadaver
Registered: Feb 2002 Posts: 1154 |
@Jeff: just out of interest, what's your maximum sequence size in bytes? Or is memory dynamically handled? I've used fixed 192 in ninjatrackers, though the playroutine could handle full 256. |
| |
Soren
Registered: Dec 2001 Posts: 547 |
@cadaver: it's 192 bytes as the duration bytes are left out in the editor-version of the player, so I have to make sure that it will always fit into a 256 bytes sequence in the packer- version of the player, which ofcourse has the duration bytes.
:) |
| |
abaddon Account closed
Registered: Apr 2002 Posts: 28 |
yeah, i suppose it can get annoying, implementing all kinds of little features that everyone wants. maybe i'll revenge with my own music-editor... maybe not. :) in any case, excellent work so far.
|
| |
Soren
Registered: Dec 2001 Posts: 547 |
@Abbaddon:
Sid-Factory looks very good to me, sofar :-) |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: @Abbaddon:
Sid-Factory looks very good to me, sofar :-)
Doyoumean untill I screw it up? ;) |
| |
Soren
Registered: Dec 2001 Posts: 547 |
@Laxity:
Hehe, no :) I know from myself that bugs occur, but those can be corrected, when they are found..
Also just think about how big an improvement SidFactory is compared to your old editor :-)
|
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: @Laxity:
Hehe, no :) I know from myself that bugs occur, but those can be corrected, when they are found..
Also just think about how big an improvement SidFactory is compared to your old editor :-)
Oh yes.. In that perspective SID Factory is rather good ;) I like the old editor a lot though. |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Speaking of bugs.. Driver 6.02 in the SID Factor 0.5 (alpha 1) package is bugged. A missing line of code in the vibrato command parser is resulting in filter enabled bits to be set when setting a vibrato. This makes the driver unusable, unless you don't use vibrato. Thanks to Fanta for pointing out this one. Driver 6.03 is comming soon. |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Driver 5.02 (now with portamento) and Driver 6.03 (bug fixed) can be downloaded from:
http://www.m-studios.dk |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Quote: yeah, i know all about it, since i've been using jch's editor for many years now. i just think the sdi's way is more flexible, though adding it would break the compatibility with older tunes in your editor. maybe it could convert the old tunes to the new trackformat while loading.
Oh no.. It wouldn't mean anything to the file format. This is just a question about presenting the data that is already there in a slightly different way, and interpret the user input a little. The biggest problemt is memory that the code'll cost. |
| |
SuperNoise Account closed
Registered: Aug 2006 Posts: 30 |
What about 64k extension? |
| |
Soren
Registered: Dec 2001 Posts: 547 |
I think it would be rather stupid with 64k expansion... then everyone using the editor, would have to get one of those.
|
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
Quote: Driver 5.02 (now with portamento) and Driver 6.03 (bug fixed) can be downloaded from:
http://www.m-studios.dk
So now avaliable commands are:
0x
1x
2x
3x
4x
8x
9x
C0
F0
F1
Hmm... I know it's completly unimportant, but why didn't you decided to use e.g. 5x cmd as tone-portamento? :] It'd be more logical... Techical reason? Or maybe you left those "attractive" (5x, 6x, 7x, Ax, Bx, Dx) commands for something special? |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
c0 does work, but I see you removed that comment.
Yes, f1 xx xx because of reasons of implementation. You've got the effect, you should be happy. ;)
fx commands are parsed before instrument and notes are set, because they have an effect on that, or rely on being set a that time of execution.
0x-7x commands are set after sid values are written
8x-ex commands are set before sid values are written
|
| |
Sidder Account closed
Registered: Mar 2003 Posts: 56 |
When I'm trying to load song there's an error: Target adress invalid.
What does it mean? Song is lost? |
| |
Laxity
Registered: Aug 2005 Posts: 459 |
Sounds like one of 3 things could be the reason.
1. The file you're tryink to load is broken. (disk problem)
2. The file is not a factory file.
3. You're trying to load a packed tune.
There are two valid load rejection reason. On is that the target adress of a file is wrong (which should be $0dfe) and the other that it's not a SID Factory file (the header data is wrong).
I've not yet expirienced that SID Factory has corrupted a file, so if it's a file you actually saved from SID Factory, I suspect you packed it before you saved it. OR you saved it to a bad disk - but that the load adress gets screwed up is highly unlikely, but possible.
|
| |
booker Account closed
Registered: Jul 2003 Posts: 333 |
Hi
What player does SIDFactory use ?
Regards
|
| |
Stainless Steel
Registered: Mar 2003 Posts: 966 |
My best guess would be, the laxity player :-)
on second guess, did you go and steal from poor rob hubbard again thomas ? :-D
|
| |
Bamu® Account closed
Registered: May 2005 Posts: 1332 |
Quote: My best guess would be, the laxity player :-)
on second guess, did you go and steal from poor rob hubbard again thomas ? :-D
:D ;)
Guess, we shouldn't say *steal* ;) |
| |
Fanta
Registered: Jan 2002 Posts: 26 |
hey booker. you made my day! :-D |
| |
booker Account closed
Registered: Jul 2003 Posts: 333 |
Quote: hey booker. you made my day! :-D
He he :-D |