701

(21 replies, posted in Sinclair)

Got it, thanks!

Yes, 126 step limit is indeed quite a hassle. However I recall Chris mentioning that it would be rather complicated to fix this issue, which is why he hasn't done so until now I guess.

Dunno about WyzTracker. Since it runs AYemul at it's core it should in theory be possible. But many (especially newer) beeper engines may not fit in well with the current instrument/fx editing approach, since beeper routines are generally not frame-based (unlike AY routines).

702

(5 replies, posted in General Discussion)

Well, I'm a huge fan of 1tracker, so I certainly don't mind big_smile

I'd be interested in your instrument handling logic in any case. Perhaps Shiru and/or ccowley could even be convinced to add this kind of functionality to their editors.

Yes, the request is still very much open! Also, a complete forum styling would be even better.

Personally, I would very much like a "simplistic but elegant" black-and-white design. It doesn't necessarily need to be very retro, as some things discussed on here are pretty un-retro. But oh well, anything is better than what we currently have, I guess...

Btw finally changed the forum header text to something more concise. Hope you guys are ok with that smile

704

(21 replies, posted in Sinclair)

Thanks, awesome! Uhhm... what do those asterisks in your table mean?
Also, how about a meta patcher tool for Beepola that allows you to set your own configurations for note tables, speed values? That would basically open up a whole new range of possibilities for people who are into drone music, microtonal stuff etc...

705

(5 replies, posted in General Discussion)

Hi mate, welcome back to the 1bit-forum smile

Nice examples! I think some people would indeed appreciate a proper xm21tm converter. It's not even terribly difficult to do. Check Shiru's engine packages or my github (for example this for some C++ resp. Perl examples of how to read out XM data. Also, I believe this is the most accurate XM file format specification. If you're interested let me know and I'll post a walkthrough in the tutorial thread.

Yo, nice jammin' smile Also, envy at that nice burgundy colored 82 STATS wink

707

(21 replies, posted in Sinclair)

Great to have these mods available as patches. Thanks a lot, mate.

708

(14 replies, posted in Sinclair)

So does that mean the gfx iteration actually varies in length? I always thought the timing fluctuations from memory contention would be too much of a nuisance.

709

(21 replies, posted in Sinclair)

Good job, thanks Frank!

710

(14 replies, posted in Sinclair)

Yeah, I noticed you can lower the rate a lot with the "combined pin pulse" approach. I would have assumed you'd be interlacing music and gfx iterations one by one though Good to know that dropping one out of several sound frames works, too. I'd be curious about how you keep the timing of the gfx frame stable (ie dealing with contention) while still syncing properly, too. I assume syncing is done in software, not via an ISR? Well, guess I'll have to dig into this with a disassembler, then wink

711

(25 replies, posted in Sinclair)

Looks pretty damn stylish. Too bad it's "just" another FPGA box, but yeah, with that design even I am tempted wink

712

(65 replies, posted in Sinclair)

Ahahaha, now I remember. Yes, it's a pity that the spam stopper plugin can't be configured in a more flexible way. Just recently we were hit by quite an onslaught of spammers signing up (they had figured out the answer to the old question somehow), so removing the questions are unfortunately, uh, out of the question at the moment.

713

(65 replies, posted in Sinclair)

Huh? Who asked that where? Everybody knows that ZX Spectrum CPU is a TMS1000 big_smile

714

(21 replies, posted in Sinclair)

Maybe one patch with "coder" tempos (0x100, 0x200, 0x300 etc) could be useful, too?

715

(14 replies, posted in Sinclair)

So, what's the magic technique behind it? How are you interlacing the music with the graphics?

716

(14 replies, posted in Sinclair)

Well, in any case I do like it a lot. Congrats.

717

(21 replies, posted in Sinclair)

Was it this one, by any chance? Or was that for Savage?

In any case, retrieving the note table should be trivial. 25 bytes into the player there's a pointer to the music data, the note table is sitting directly before that address and is 54 bytes long.

Edit: Beepola 1.08.01, at offset 0x3a72c0 wink

718

(135 replies, posted in Sinclair)

Oh, I better hurry up with turning this into a proper engine then, eh? wink

719

(65 replies, posted in Sinclair)

Hehe, seems you managed to post precisely at the moment when I moved my post to the "next gen engine ideas" thread yikes

720

(14 replies, posted in Sinclair)

Hehe yeah I saw sq was on the payroll big_smile But the overall idea/design was your idea, wasn't it?

721

(21 replies, posted in Sinclair)

I'd suggest putting some 1 and 2 tick speeds in there as well. Some people are crazy for high speed Tritone abuse, and they're still sticking to the old XM converter precisely because those high speeds are inaccessible in Beepola.

Btw, would it be possible to apply your alternate SpecialFX note table as a patch, too? In combination with the Tritone speed patch it might make for a nice "FrankT's Modded Beepola" release...

722

(14 replies, posted in Sinclair)

woooooooooooooooo! Super nice. Reminds me of some skrju prods (which I adore very much).

723

(135 replies, posted in Sinclair)

Discovered a new trick while working on Houstontracker. Consider the usual pulse interleaving with variable duty cycle:

   add hl,de
   ld a,b          ;b = duty
   cp h
   sbc a,a
   out (#fe),a

   ;blabla same for 2nd channel

Now, as you know, we can add a "SID-style" duty cycle sweep by incrementing the duty when the add counter (HL) overflows.

   add hl,de
   ld a,b          ;b = duty
   adc a,0
   ld b,a
   cp h
   sbc a,a
   out (#fe),a

So far, so good. Now for the new stuff, we'll add an extra parameter that will be XORed against the duty setting on every sound loop iteration.

   add hl,de
   ld a,b          ;b = duty
   adc a,0
   xor c           ;c = additional XOR parameter
   ld b,a
   cp h
   sbc a,a
   out (#fe),a

This will produce some very interesting timbres! A primitive form of square wave FM, if you will. The result tends to have some aliasing noise (because the harmonics will cross the Nyquist limit if I understood this correctly), but I suppose it could be filtered out with the low-pass filter algorithm I was talking about earlier.

Now I actually went another step beyond this. Since I'm using a split timer update as usual, I have time to add an offset to the XOR paramter (C) every 256 sound loop iterations. Now this is a double sided sword - it will act nicely as a third FM OP, but only if the value is 1/256th of the base frequency used. When it is not, then the results will vary from "interesting" to "ouch my ears".

The attached .tap demonstrates both techniques. The first pattern starts with a simple duty cycle sweep and the additional XORing disabled, followed by XOR parameters of 8, $10, $20, $40, and $80. The second pattern starts again with regular duty cycle sweep and XOR 0. Following this, the XOR parameter is raised by 1/256th of the base frequncy once per 256 sound loop iterations, and following this the XOR parameter is raised by a fixed value (8 in this case) every 256th iteration. This is then repeated but with the initial XOR set to $80.

Don't ponder too much about the code in the .tap, there is some additional leftover stuff from an earlier experiment.
Anyway, I'm busy with HT at the moment, so if someone wants to pick up this trick in the meantime, be my guest wink

EDIT: Realized I posted this in the wrong thread, moved for clarity.

724

(21 replies, posted in Sinclair)

Well, I guess you could use just about anything you wanted to.
In the original XM converter, the speed value is calculated as follows:

speed=(int)(2500.0f*(float)tempo*(3500000.0f/1000.0f/153.0f)/(float)bpm)+256;

where "tempo" is the number of ticks per row if I understand correctly. So, eg. for 120 bpm @ 8 ticks you'd get a value of 4069.

Heh, that's fine with me if we get a lot of OctodeXL tracks wink

Ok, so Savage newcore is out and all Octode mods are in. I'm fine with that. I'd also throw out LSengine - while not super popular, MB and me have been using it quite a bit in the past. ZX-3, I doubt anyone would use it considering the interface. (I have used it once, it's awful). There'd be an argument for allowing ZX-7, considering it's just been added to 1tracker. On the other hand, Jan once told me that sales figures were into the 4-digit numbers, so even though nobody uses it today, it can hardly be called an unpopular engine. So I would still vote to disallow the entire ZX- family.