Mod Archive Forums Mod Archive Forums
Advanced search  

News:

Please note: Your main modarchive.org account will not work here, you must create a forum account to post on the forums.

Pages: 1 ... 5 6 7 8 9 [10]
 91 
 on: March 18, 2024, 02:10:59 
Started by DZ-Jay - Last post by looper231
Keep up the development  ;)

 92 
 on: March 17, 2024, 17:23:16 
Started by DZ-Jay - Last post by DZ-Jay
Progress, you ask?  Why, yes.  We have some.  :)

I fixed a bug* in which "tick-zero of a row" was confused with "first tick of a note," which caused the tick-zero handling to only be executed when a new note is started.  DOH!

(* The "bug" existed in my head as well, since I wrote the code to work that way because that is how I understood it.  Imagine my shock and surprise when I finally figured out that it was all wrong.)

We now have the following effects supported:
  • 0xy: Arpeggio
  • 1xx: Portamento Up
  • 2xx: Portamento Down
  • 3xx: Portamento To Note
  • 4xy: Vibrato
  • 5xy: Portamento To Note + Volume Slide
  • 6xy: Vibrato + Volume Slide
  • 7xy: Tremolo
  • Axy: Volume Slide
  • E1y: Fine Portamento Up
  • E2y: Fine Portamento Down
  • EAy: Fine Volume Slide Up
  • EBy: Fine Volume Slide Down
  • Gxx: Set Global Volume

That's a pretty nice roster.

All these effects have been tested and work as expected -- well, at least the way I understood them to work, based on my research, reference documents, and the feedback from this forum.

I'm quite happy with the results.  I feel now that I have a rather solid framework that handles ticks and effects correctly, so adding new effects should go smoother in the future -- I mean, what could possibly go wrong?  ;D  (Said the guy that has had to re-write his tracker engine multiple times to fix design flaws ...)

Anyway, my next step is to implement a few more of the low-hanging fruit effects, such as  Set Song Speed (Fxx), Tremor (Txx), etc., and see how it goes.

Stay tuned! (Har! Har! see what I did there?)

     -dZ.


UPDATE: Added Gxx effect.

 93 
 on: March 17, 2024, 16:40:42 
Started by Seabrush - Last post by Seabrush
Hello, musicmakers!
Here's my best chip mod. Tracked in 1999, used in PC 64K intro,
which was presented at  ANTIQ 2000 AMIGA/PC 64K INTRO COMPETITION (Hungary).
We won 1st place!

"Bullet"

https://www.youtube.com/watch?v=jUKbHGs9YCc



XM file attached.



 94 
 on: March 14, 2024, 13:12:13 
Started by Seabrush - Last post by Seabrush
Hi! I'm rather veteran, but still producing.
I'll be posting here for you guys (and ladies) mostly vids on YouTube.
Because that's the formula I liked last time: music with some nice visuals.

First is the most complicated XM I've ever created :)
Genetic TRANSfer.
Made in 2000. Best regards, Seabrush.

https://youtu.be/L8oUNptMjNU



XM download here:
https://demozoo.org/music/106381/


 95 
 on: March 14, 2024, 04:06:12 
Started by 4194304 - Last post by 4194304
UPDATE: add what I know

There's a song in a YouTube video that I liked, so I looked at the description. I have a few very clues, only definitive clue is that it came from this site, ModArchive.

All I have:
  • Originated here
  • Made in 2022, possibly in May - July 1st
  • Over 2 minutes in length

Shazam didn't work, Google song recognition, not at all. I have countless songs that have appeared in YouTube videos that I can never find, and I'd love to find this one.

Link: https://youtu.be/9kjCLXcd7Ho?t=132

If you find it, make sure to reply.

 96 
 on: March 10, 2024, 16:04:59 
Started by DZ-Jay - Last post by DZ-Jay
OK, never mind on this -- it seems to be a quirk of FT2, so I won't bother with it.

I found this in the MilkyTracker documentation, comparing the various implementations (FT2 description in red):

https://milkytracker.org/docs/MilkyTracker.html#fx0xy
Quote
Explanation:
Arpeggio quickly alters the note pitch between the base note (C-4) and the semitone offsets x (3 = D#4) and y (7 = G-4). Each pitch is played for the duration of 1 tick. If speed is higher than 3 (meaning there are more than 3 ticks per row), the sequence is looped.

ProTracker 2/3
Base note is played for tick 0, then the semitone offset x for tick 1, then semitone offset y for tick 2.

Fasttracker II
Base note is played for tick 0, then the semitone offset y for tick 1, then semitone offset x for tick 2.


It seems that the intention (and most common implementations) is to cycle through base, base +x, and base + y.

I do have one question, though.  Is it expected that we should skip tick zero of every row, or that we should restart counting the sequence "base, base + x, base + y" on every row?

This would make the arpeggio sound a bit irregular, depending on how many ticks there are in a row.  For instance, if the song speed is 5 ticks per row, the arpeggio would cycle like this:

Tick #semi-tone
0skipped (base)
1base
2base + x
3base + y
4base
0skipped (base)
1base
2base + x
3base + y
......

In contrast, the original way I had implemented it (and the way I thought it should work) was to process the command on every tick and always cycle through the sequence "base, base + x, base + y" for the duration of the note (or until the effect is deactivated).

For those with more experience than me, especially from the musician side of things, how do you think this effect is expected to work?

    -dZ.

 97 
 on: March 10, 2024, 14:12:12 
Started by DZ-Jay - Last post by DZ-Jay
I have a question about the Arpeggio (0xy) effect.

All the documentation I read on common implementations of XM (FT2, OpenMPT, MilkyTracker, etc.) state that the effect alternates between 3 semi-tones:
  • Base note
  • Base note + x param
  • Base note + y param

This makes perfect sense to me and it is how I originally implemented it.

However, I am looking at the ported FT2 code and that logic appears to be incorrect.  Unless I am completely misunderstanding something, the code works like this:
  • The effect is processed only on non-zero ticks.
  • It uses the song timer (i.e., the tick counter -- which counts down on every tick from the song speed until zero) to determine the semi-tone offset to use:  a value that cycles through 0, 1, and 2.
  • Those values are used like this:
    • 0: Base note
    • 1: Base note + x param
    • 2: Base note + y param

Essentially, the three offsets are read from a table of 16 entries, using the count-down timer as an index, so the values are read in reverse:

Arpeggio Table:
Code: [Select]
0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0

What all this means in practice is that the first tick of every row is skipped, and the countdown causes it to process the parameters in reverse.

Therefore, the ultimate product is the something like in the following table.  Consider a song speed of 8 ticks per row. 

Tick #TimerTbl ValueResult
0 (start of row)8 (timer recycled at zero of last row)SkippedBase
17arpTab[7] = 1Base + x param
26arpTab[6] = 0Base
35arpTab[5] = 2Base + y param
44arpTab[4] = 1Base + x param
53arpTab[3] = 0Base
62arpTab[2] = 2Base + y param
71arpTab[1] = 1Base + x param
08 (timer recycled at zero)SkippedBase
17arpTab[7] = 1Base + x param
26arpTab[6] = 0Base
............

Moreover, because the first tick on every row is skipped, when you use a speed number which is a multiple of 3, it will cause the base note to be played twice.

This is sort of weird to me, so perhaps someone with more experience can shed some light on how it should work in practice, or whether this is the expected behaviour.

    -dZ.

 98 
 on: March 09, 2024, 17:51:44 
Started by DZ-Jay - Last post by looper231
No. what you've presented here is how it really is. "Fine" commands only play their command on first ever tick of the row, for a more smooth ease

 99 
 on: March 09, 2024, 14:23:34 
Started by DZ-Jay - Last post by DZ-Jay
I also, went ahead and added the Fine Volume Slide (EAx, EBx) and Fine Portamento (E1x, E2x) effects, just because they are the same as the regular effects, but played on tick zero only.

I assume you understand that "Fine" commands do it more slowly and gradually?

Yes.  From what I read in some documents, it appears that the only different between the normal and the "fine" commands is that the latter is applied on tick zero only -- i.e., once per row instead of once per tick.

For example, on E1x:
https://wiki.openmpt.org/Manual:_Effect_Reference#Effect_Column_2
Quote
Similar to 1xx, but only applies on the first tick of the row.

https://milkytracker.org/docs/MilkyTracker.html#fxE1x
Quote
Explanation:    
Works similarly to 1xx portamento up, only the slide is a lot finer because the effect is applied only once per row.

Also, the ported source code of FastTracker II shows that the functions that implements commands 1xx and E1x are identical -- with the only difference being when (how often) they are invoked.

Then again, my experience is exceedingly narrow, and limited mostly to what I read online.  Do you suppose that there may be a bit more nuance to it that I am missing?

    -dZ.

 100 
 on: March 09, 2024, 04:50:44 
Started by DZ-Jay - Last post by looper231
I also, went ahead and added the Fine Volume Slide (EAx, EBx) and Fine Portamento (E1x, E2x) effects, just because they are the same as the regular effects, but played on tick zero only.

I assume you understand that "Fine" commands do it more slowly and gradually?

Pages: 1 ... 5 6 7 8 9 [10]