Anonymous




Register
Login

Amiga Future

Community

Knowledge

Service

Search




Advanced search

Unanswered topics
Active topics

Last Magazine

The Amiga Future 141 was released on the November 5th.

The Amiga Future 141 was released on the November 5th.
The Amiga Future 141 was released on the November 5th.

The Amiga Future 141 was released on the November 5th.
More informations

Social Media

Twitter Amigafuture Facebook Amigafuture RSS-Feed [german] Amigafuture RSS-Feed [english] Instagram YouTube

Advertisement

Partnerlinks

Note cut, delay and retrigger

Support DigiBooster

Moderators: G.Frank, AndreasM

krashan
Amiga Future Fan
Amiga Future Fan
Posts: 58
Joined: 26.01.2009 - 23:06
Contact:

Note cut, delay and retrigger

Post by krashan » 28.01.2009 - 09:01

Well, my first question to you, the users. I guess we all know ECx, EDx and E9x effects. Their purpose is simple, I recall it just for completness of my question:

ECx - cuts note at tick x
EDx - triggers note at tick x instead of tick 0
E9x - retriggers note every x ticks

More interesting things now. I've checked how these commands interact with each other, when two of them are used on the same note. It seems that DigiBooster 2.x behaves completely unlogical then.

Case 1: EDx and ECy used for the same note.

One can expect that if only y > x (so cut is after delayed trigger) note should be triggered at tick x and cut at tick y. If y <= x, nothing should happen. This is not the case with DBPro 2.x When EDx and ECy are used together, there is no trigger at all, no matter what x and y are.

Case 2: EDx and E9y used for the same note.

One can expect that trigger is delayed to tick x and then note is retriggered every y-th tick. The question is y counting should start from x or from 0, so for the following sequence:

C-3 01 ED1 E92

If retrigger is counted from 0, triggers will happen at ticks 1, 2, 4. If retrigger is counted from the first trigger, triggers will happen at 1, 3, 5 (i assume standard F06 speed here). What about DigiBooster 2.x? It depends on commands order, if EDx goes first, triggers happen at 1, 2, 4. If E9x goes first, retriggers are ignored.

Case 3: ECx and E9y used for the same note.

This combination is expected to reject any retrigs that happen after the note is cut. Let's have an example:

C-3 01 EC4 E91

The note is triggered at every tick, but there is a cut at tick 4. Then triggers should happen at ticks 0, 1, 2, 3. Let's go back to DigiBooster 2.x. For once things work as expected, and are independent of effect order in a row.

My proposals

I propose to define these three commands as follows:

EDx - delays the first trigger (and possible following ones) to the tick x.
ECx - cuts note at tick x (counting from tick 0), any following triggers are rejected.
E9x - retriggers note every x-th tick, counting from the first trigger.

All the above is independent of which command is the first and which is the second.

What is your opinion?

krashan
Amiga Future Fan
Amiga Future Fan
Posts: 58
Joined: 26.01.2009 - 23:06
Contact:

Post by krashan » 28.01.2009 - 12:00

And while we are at it - another funny puzzle. There are two commands for fine volume slide:

AFx - fine volume slide down
AxF - fine volume slide up

The question is: what AFF means then?
a) slide up by 15 volume units per position (this is how 2.x handles this)
b) slide down by 15 volume units per position
c) nothing, just ignored

It is not only volume slide problem, 5Fx/5xF, 6Fx/6xF share it too.

daxb
AFF Profi
AFF Profi
Posts: 566
Joined: 10.11.2002 - 01:42

Post by daxb » 28.01.2009 - 16:17

Case 1: EDx and ECy used for the same note.

Your proposal is correct. I would expect the same like you.

Case 2: EDx and E9y used for the same note.

Counting should start from x. If I understand it right it correspond with your proposal.

Case 3: ECx and E9y used for the same note.

Works as expected.

The order of commands should be independent.

BTW. Did you tried E91 on one or more notes and switch off the channel?! Normaly I would expect a mute channel but here there is some sound. Maybe a bug.

About the other commands I`ve to check how Protracker it handles. To be compatible. But which version?

krashan
Amiga Future Fan
Amiga Future Fan
Posts: 58
Joined: 26.01.2009 - 23:06
Contact:

Post by krashan » 28.01.2009 - 16:31

daxb wrote:BTW. Did you tried E91 on one or more notes and switch off the channel?! Normaly I would expect a mute channel but here there is some sound. Maybe a bug.
Will look at it.
daxb wrote:About the other commands I`ve to check how Protracker it handles. To be compatible. But which version?
ProTracker does not have these commands. It has only plain Ax0/A0x, EAx and EBx. I decided to implement AFF as slide up, the same as in DigiBooster 2.

daxb
AFF Profi
AFF Profi
Posts: 566
Joined: 10.11.2002 - 01:42

Post by daxb » 28.01.2009 - 17:50

krashan wrote:ProTracker does not have these commands. It has only plain Ax0/A0x, EAx and EBx. I decided to implement AFF as slide up, the same as in DigiBooster 2.
Hmm... AxF and AFx are only "volume slide up/down". EAx/EBx are "fine volume slide up/down".

Axx seems to be the same as AxF. I.e. Axx isn`t an own command or Axx = AxF?

Edit: The above is wrong, sorry. :(
Last edited by daxb on 29.01.2009 - 13:15, edited 1 time in total.

krashan
Amiga Future Fan
Amiga Future Fan
Posts: 58
Joined: 26.01.2009 - 23:06
Contact:

Post by krashan » 29.01.2009 - 07:54

daxb wrote:Hmm... AxF and AFx are only "volume slide up/down". EAx/EBx are "fine volume slide up/down".
Not exactly. The original 2.21 manual states in the list of effects that Axx is just "volume slide", while AFx is "fine volume slide down" (the same description as for EBx), and AxF is "fine volume slide up" (the same description as EAx). I've verified this doing experiments with DigiBooster Professional 2.21.
daxb wrote:Axx seems to be the same as AxF. I.e. Axx isn`t an own command or Axx = AxF?
It is clear to me, that AxF and AFx are separate commands. Note that this combination of parameters is not allowed in ProTracker. The difference is Ax0 (A0x) slides the volume 'x' units every tick, while AxF/AFx slides the volume 'x' units every pattern row, so is 6 times slower than ordinary Ax0/A0x (at default F06 speed).

What is the difference between AFx/AxF and EAx/EBx then? Well, AFx/AxF can be repeated with just A00, while EAx/EBx have no such feature.

daxb
AFF Profi
AFF Profi
Posts: 566
Joined: 10.11.2002 - 01:42

Post by daxb » 29.01.2009 - 13:08

I just tried Axx again. My result is:

AFx/AxF/A0x/Ax0 is clear to me but Axx is really stupid IMHO because Axx (xx = 01-FF) could also be AFx/AxF/A0x/Ax0. With Axx (xx = 11-EE) I get only a volume slide up like Ax0.

krashan
Amiga Future Fan
Amiga Future Fan
Posts: 58
Joined: 26.01.2009 - 23:06
Contact:

Post by krashan » 29.01.2009 - 20:46

daxb wrote:AFx/AxF/A0x/Ax0 is clear to me but Axx is really stupid IMHO because Axx (xx = 01-FF) could also be AFx/AxF/A0x/Ax0. With Axx (xx = 11-EE) I get only a volume slide up like Ax0.
My mistake. I should be more precise, by Axx I mean Ax0/A0x. DigiBooster 3 player engine just ignores any Axx combination which is not one of A0x/Ax0/AFx/AxF.

daxb
AFF Profi
AFF Profi
Posts: 566
Joined: 10.11.2002 - 01:42

Post by daxb » 29.01.2009 - 22:41

Ok, in this case the documentation is wrong or not precise enough.

Ijon_Tichy
AFF Anwärter
AFF Anwärter
Posts: 11
Joined: 26.12.2003 - 14:14

Re: Note cut, delay and retrigger

Post by Ijon_Tichy » 05.02.2009 - 10:59

krashan wrote:I propose to define these three commands as follows:

EDx - delays the first trigger (and possible following ones) to the tick x.
ECx - cuts note at tick x (counting from tick 0), any following triggers are rejected.
E9x - retriggers note every x-th tick, counting from the first trigger.

All the above is independent of which command is the first and which is the second.
Seems logical indeed. Frankly speaking I don't remember testing such combinations on v2.
I decided to implement AFF as slide up, the same as in DigiBooster 2.
DigiBooster 3 player engine just ignores any Axx combination which is not one of A0x/Ax0/AFx/AxF.
Do I get it right that AFF will not be ignored as nonsense because technically it is one of A0x/Ax0/AFx/AxF?

Post Reply