need help with 030x smps tempo speeds (XM3SMPS/oerg866)

Discussion in 'Discussion and Q&A Archive' started by Lil-G, Jan 3, 2015.

Thread Status:
Not open for further replies.
  1. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    ok, now i have a different problem/question. how come in XM3SMPS (oerg866 ver.) when i set the smps speed to 030x, different channels play out of order? like if i have a song with 5 channels, 2 FM, 1 DAC, 1 PSG, and a Noise, and i set it to play with the speed 0302 the 2nd fm, psg, and noise would play the notes from the pattern after while the rest of the channels had notes in the first pattern and the second pattern. anyone know why it does this?

    i tested my smps with SMPSPlay but it also does this in a rom file
     
    Last edited by a moderator: Jan 3, 2015
  2. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    well as the title says in need help with the tempo speeds 030x. i have tried getting help from my other thread (which i still have questions for) and on the basic Q&A thread and looking for other threads but i haven't found one so i figured it should have its own thread.
    so i don't have to retype anything i'll post my quote from the q&a thread (which i quoted from my question thread)


    since i have posted that i have have tried adding rests and (blank) notes to the beginning of the patterns to see if it was like xm4smps in some way but that hasn't worked, any ideas?


    after making that post i tried 040x and that speed has the same problem. i attached the xm i'm trying to convert incase it has something to do with the xm

    Competition Menu.zip

    p.s. also how do you use soundfonts in mpt? i know how to import it but i can't figure out how to make it use it as the default
     

    Attached Files:

    Last edited by a moderator: Jan 6, 2015
  3. MarkeyJester

    MarkeyJester ♡ ! Member

    Joined:
    Jun 27, 2009
    Messages:
    2,870
    I don't think many of us have ever used the tool, I for one never had, in fact, all of my music/SFX have been done via a hexadecimal editor (Rubbing it in! Rubbing it in! Fuck everyone else I'm awesome!!).

    If you require help with the tool, I would suggest asking "oerg866", while he does not exist on the site as a valid member, you will find him in the IRC channel (beware though, he may offend you in some form of manner (even if the ironic factor is based on using a tool with his name on it), but he's the kind of guy who hangs with something (like SMPS) and then dumps it and calls others idiots for hanging with it, so you have been warned, I will not defend you). Another alternative would be to ask nineko, though I'm not sure what he knows, but he's generally quite active around here. Pop him a PM perhaps.
     
  4. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    ok thanks for the reply but uh (incoming noob question) where is the irc? does ssrg have they're own own or is it the badnik irc?
     
  5. N30member

    N30member non-pro user btw Member

    Joined:
    Feb 15, 2014
    Messages:
    216
    Location:
    Kazakhstan
    1. Find an IRC web client or download it to your PC.


    2. Type "irc.badnik.net" into "Server" field and "6667" into "Port" field.


    3. Type your nickname into "Nick" field (you can type anything you want, not only your forum nick)


    4. Type "#ssrg" into "Channel Join-List" (or something similar) or type into dialogue field "/join #ssrg"

    5. ???

    6. PROFIT
     
  6. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    hmm, i tried using both a downloaded client (KVirc) and a web client (Kiwi IRC) and it comes up with a error. is badnik down?

    KVirc:

    his is the first connection in this IRC context: using the global server setting

    [10:55:24] Attempting connection to 209.20.85.14 (Sonic Retro) on port 6667

    [10:55:24] Contacting IRC server 209.20.85.14 (209.20.85.14) on port 6667

    [10:55:45] [sOCKET ERROR]: Connection timed out

    [10:55:45] Connection attempt failed [209.20.85.14]

    [10:55:45] Will attempt to reconnect in 10 seconds [2 of 15]

    i tried using the web name and the address to see if that was the problem but it had the same error

    Kiwi IRC:

    Error Connecting (Closing link: (unknown@78.129.190.63) [Z-Lined: out])
     
    Last edited by a moderator: Jan 6, 2015
  7. Chaotix

    Chaotix Bad at Team Fortress 2 Member

    Joined:
    Aug 21, 2014
    Messages:
    190
    Location:
    England
    If you use Google Chrome, try using an extension called CIRC.
     
  8. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    that doesn't really help with a desktop (non-web) client
     
  9. sham1

    sham1 Newcomer Member

    Joined:
    Jul 8, 2014
    Messages:
    23
    Location:
    Somewhere in Northen Europe
  10. DanielHall

    DanielHall Well-Known Member Member

    Joined:
    Jan 18, 2010
    Messages:
    860
    Location:
    North Wales
  11. Irixion

    Irixion Well-Known Member Member

    Joined:
    Aug 11, 2007
    Messages:
    670
    Location:
    Ontario, Canada
    Z-line. You're IP banned. Unless you go and use mibbit (linked in the post above mine), it doesn't matter what client you use.
     
  12. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    ok, the problem was i was trying to connect from my school internet, it works fine

    edit: ok i've pinpointed the problem is somewhere in the smps code itself because editing the tempo from the bin itself from 0202 to 0306 has the same problem. also its just the psg channels 1-3 that play out of sync. when the speed is set to 0306 the psg channels play slightly faster than that. i've been letting it play for about 10 min and its been (very slowly) lining up with the rest of the song.
     
    Last edited by a moderator: Jan 6, 2015
  13. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,883
    Location:
    italy
    I already replied to the private message he sent me yesterday about this, and I'm sorry I didn't see this post earlier but I hardly browsed the forum at all in the past days, but I might take this chance to remind everyone that I described that behaviour in my guide almost one year ago.


    It's a known little bug: the "divider" is actually a "multiplier", and since note durations are stored in RAM as bytes, bad things can happen if the multiplier is too high. Basically, as you know, a note duration can be at most 127 in SMPS (since values from 128 onwards are note numbers, and flags from 224 onwards), so with multipliers such as 01 and 02 this isn't a problem because it's stored as 127 or 254 in RAM; with multipliers from 03 onwards, though, you might end up with in-RAM durations higher than 255, which overflows the byte and end up to be way shorter than they should. If you use a 03** tempo, your note duration limit is 255/3 = 85. A workaround for this is to divide longer durations into shorter notes, chained with E7 flags. Ironically, xm3smps automatically divides long durations by adding E7 flags when needed, but since I programmed that code when I didn't know about this SMPS quirk, it is hardcoded to split durations every 127 units. It would be extremely trivial to edit the source code to replace that 127 with something like

    tmp = 255 tempo
    limit = iif(tmp < 127, tmp, 127)(variable names aren't actual)

    I experienced this problem ever since my earliest xm2smps test conversions, but I couldn't figure out why; Puto came up with the explanation some months later, which is still several years ago, I'm surprised this isn't global knowledge by now, I was sure someone posted about it somewhere, I swear I'm in good faith and I didn't want to be an information hoarder (as proven by the fact that I mentioned this in my guide).


    If there is enough demand I might release a "bugfixed" version of xm3smps (even though that name is misleading since this isn't a bug in xm3smps, but a quirk in the smps driver itself), but it would be a build of vanilla xm3smps and not of its /oerg branch.
     
    Last edited by a moderator: Jan 7, 2015
  14. Irixion

    Irixion Well-Known Member Member

    Joined:
    Aug 11, 2007
    Messages:
    670
    Location:
    Ontario, Canada
    Didn't you come up with a BPM to divider/multiplier tool?
     
  15. Lil-G

    Lil-G Friendly Local Noob Root Admin

    Joined:
    Oct 21, 2014
    Messages:
    13
    Location:
    olathe, KS
    what if in the smps code you change bytes to to words (or longwords)? couldn't you technically fix this problem? of course you would have to edit the smps song for this to work

    the is one in xm4smps and mid2smps (mid2smps has it imbedded in the program)

    one post left...
     
    Last edited by a moderator: Jan 7, 2015
  16. nineko

    nineko I am the Holy Cat Member

    Joined:
    Mar 24, 2008
    Messages:
    1,883
    Location:
    italy
    Irixion: yes, but apparently he's stuck with an XM tempo which requires him to use a 03xx SMPS tempo, and I'm sure he has very valid reasons which makes it impossible for him to alter the XM to make the resulting tempo more suitable for conversion. Either way, this isn't the problem.


    And lol sure let's use longwords for note durations, I totally want a song where a note lasts for 4000000000 SMPS time units. Seriously speaking, I guess that modifying the SMPS driver to allow for in-RAM word durations would fix this quirk, but it would require like 10 more bytes of RAM, one for every channel, maybe even 12 or so since I don't remember if unused or mutually exclusive channels are removed from RAM or not. It wouldn't require to edit the songs, though, since in-file note durations have to remain in their current range (1-127) because as I said the values from 128 onwards are used for other things (note numbers and flags).
     
Thread Status:
Not open for further replies.