Jump to content

rensoup

Members
  • Content Count

    1,066
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by rensoup


  1. 20 hours ago, emkay said:

    Because there is no oversampling. 

    It's technical stuff ;)

    If you read my posts carefully, I was explaining it. 

    I read your posts left to right and right to left but the meaning escapes me a lot of the time... i need simple stuff with numbers and/or code

     

    I do understand that you need twice the play at twice your sample frequency for it to play without artifacts but I don't know why it doesn't work with my bass test...

     

    6 hours ago, emkay said:

    Ah, I see the problem. 

    Normally, RMT is mixing AUDCx together for the generators and the volume. 

    The used method here just hikes a channel and writes the volume only . 

    Indeed but I tried merging the pure tone gen like Ivop said but it made no difference?


  2. 2 hours ago, ivop said:

    You don't need to play every channel at 800Hz

    I know, it's just easier to not have to change LZSS to compress channels a different frequencies for now. Yes it would be great to be able to select the replay rate per channel of course.

    2 hours ago, ivop said:

    Just play 4 times AUDF/AUDC, and AUDCTL, at 50Hz or 60Hz. And then have a certain RMT instrument trigger the volume-only waveform player with a certain wave.

    Sure, that's optimizing for speed & space but I'm just trying to figure out if this is worth it. Hardbass runs at 1950hz, which seems to be enough for convincing bass "samples". 

    2 hours ago, ivop said:

    And optionaly ORA'd with a tone generator, what emkay means.

    lda sample4bit

    ora #VolumeOnly

    ora #ToneGen

    sta AUDC0

     

    Is that what you mean ? 

    3 hours ago, ivop said:

    Don't play full samples, but round-robin a 256 or 512 byte waveform, and jump around with fixed point math

    Does that have any influence on the sound quality ( produces purer sounds) ? Or is it space saving ?

     

    • Like 1

  3. 39 minutes ago, emkay said:

    Your test tune just is doing some "neutral" wave, and the source rmt file play some aspeggios in that channel. 

    neutral wave ? it's that bass sample which is included in that example zip.

     

    39 minutes ago, emkay said:

    Of course it is worth exploring. But the state of development is crazy. 

    Just like ordinary building  house and to put tiles to the roof, the "rmt2lzss tool is now like some juggler throwing all tiles to their places on and on while it  is raining.

    Sounds like a Nintendo game & watch 😁

     

    This new options were more like low hanging fruits, there's nothing complex about them, they're just extensions of what's already there

     

    39 minutes ago, emkay said:

    I tried that before writing my post. But there only was the standard RMT played after converting. 

    Ooops... I forgot to set the replay rate to 800Hz in the song... I forced it in the code while testing, but you need to hack the song speed yourself: it's the 3rd byte after the RMT4 signature (currently set to $01)

     

    sampletest.rmt

    • Like 2

  4. 11 hours ago, VinsCool said:

    Holy SHIT this was not an expected update!
    Incredible work! I am so excited to try this out :D 

    I can't wait to see if you can come up with something great... Less anxious to read your bug report 😃

     

    Like I said... sample playback at 800hz is unconvincing (so far) but perhaps 800hz is good enough to get Pokey to produce interesting bass sounds

    • Thanks 1

  5. 12 hours ago, emkay said:

    It looks like, the sample playback is cancelling the tone generator. 

    Can this be changed?

    I'm not sure what you mean ? the AUDC dist ? I can set it to any value of course... not sure what the correct settings are for proper sample playback.

     

    12 hours ago, emkay said:

    Also, if there is no tool to adjust "samples" with the rest of the tune, things may keep to be "not convincing". 

    If you mean adjust the sample frequency with the note, that could be done of course. This is more of a proof of concept to see if it's actually worth exploring...

    Any complex amiga soundtracker effect could be done too since it all ends up as raw registers anyway...But would it be worth it at 800hz ?

    12 hours ago, emkay said:

    And, btw. : How to activate/deactivate the "samples" in a tune anyways?

    If you check the example RMT tune, there is an associated .erti file which just replaces instrument $01 with a 16bit mono wav. You just output that tune with RMT2LZSS with the custom tables option.

     

    • Like 1


  6. New version with a bunch of experimental features!

     

    1.7 Apr 2021


        -added 400 & 800hz playback (speed 5 & 6). This turns off the equalizer. It may also not work in NTSC.

     

    For the new playback speeds, the RMT file needs to be hacked because it's not supported by the RMT editor.

     

        -added simple sample playback (speed is limited to 50hz->800hz !). See .erti example

     

    Sample playback is limited to 4bit at playback frequency. 


    The sample data is stored into the envelope. 


    There's no way to interactively change the playback speed (the note doesn't matter). 


    I've tried with a bass sample and it doesn't sound very good 😃. I've also tried a simple sample playback test at 15KHz with the same bass sound for reference (also in 4bits).

     

    I'm curious if anybody has a better sample for testing ?

     

        -added envelope speed. See .erti example

     

    Envelope speed (EnvelopeStep) specifies how quickly the envelope pointer moves for each playback step(locked to 1 in RMT). 

    If using steps smaller than 1.0, the envelope effects and commands are only processed once moving to the next step. 


    This feature was requested by @VinsCool because there's already a notetable speed in RMT. However having looked at the code, I'm not sure how well it's going to interact with instrument effects. It is useful for sample playback at least because it lets you specify the playback speed (because the sample data is stored in the envelope).

     

        -optimized player source code is now included

     

    Same as dmsc's original player, just unrolled to take a bit more space and a bit less CPU time.

     

        -added Vinscool's latest custom notetables

     

    I also hacked one of Vinscool's tunes for my sample playback test hence it might sound vaguely familiar 🙂

     


    Right now I'm not convinced sample playback is useful, mainly because the max playback frequency is too low... but perhaps there are ways to improve it (PWM/PDM seem out of question)?

     

    sampletest.png.623cedf50be8d4ce943cd0d01e262366.png

     

    sampletest.zip

    • Like 2
    • Thanks 2

  7. 7 minutes ago, emkay said:

    If there only was something melodic ;)

     

    I like it for a special cause, but Makary's tunes also suffer in being melodic. 

    At least, VinsCool's tune doesn't suck all CPU time. 

    Well your latest conversion was melodic with good sounds but the tune is truly boring... can't have it all 😏

     

    Makary's tunes run pretty well at 50Hz (even if they were created at 200Hz)

    • Haha 1

  8. 17 hours ago, emkay said:

    Things should be easy. 

    It's just that the data has to be played at the same point, where it is stored .

    If you use always the same "offset" for storing data and saving data, it will be stable for sure. 

    ?

     

    The Pokey data isn't created by any kind of emulation, it's just a PC player which outputs Pokey data without any kind of accurate timing. 


  9. 9 minutes ago, pps said:

    Aha, did not know that you changed @dmsc's player routine, too. Of course I tried to use his routine, as I thought that is the one to use. Is your routine publicly available?

    nope, I was going to package it with RMT2LZSS but then I got lazy 😀

     

    I'm going to make it available, but please do send that tune (or at least the part that goes wrong) so that I can finally figure out the cause

    • Like 2

  10. I'm guessing my version plays correctly... but again, haven't got a clue why!

     

    9 minutes ago, pps said:

    My code shows some real time generated graphics on screen, uses DLI for additional colors and runs the dsmc player from VBI (direct as first thing, but that made no difference). The soundfile is not changed, just included into my intro. It's a pity, that this does not work - it's really frustrating.

    the rmt file may help tracking down the problem...

    • Like 1

  11. 1 hour ago, emkay said:

    It seems somehow that the replay has a special "position" in the LZSS Player, but the librarydoes something different. 

     

    38 minutes ago, VinsCool said:

    What demo? How was the sounds generated? How was this converted? Is it always consistent? Many things need to be taken in consideration.

    I suspect it's @pps's https://github.com/ppsberlin/tutorial_lzssplay_g2f_rasterconverter ? (it uses dmsc's original player)

     

    @emkay: Can you confirm ? Because you message is a little cryptic (as often) and post both xex and the rmt ?

     

    33 minutes ago, emkay said:

    Let's say , it's "those intros with a scroller thing" . 

    By all problems with RMT, but the player plays exactly the same. Alike, if the player is used or the "routines" that run in Demos.

    We're going back to how the Pokey registers are updated but when I did some tests, you said it played the same no matter how I updated them.

     

    -The RMT player loads 2 values and updates a pair of Pokey registers and then the next pair, then AUDCTL.

     

    -dmsc's player decrunches each channel then updates the Pokey value, so there's a "long" delay between eahc update. The registers are updated in reverse order too starting from AUDCTL

     

    -my optimized version of dmsc's player loads 1 value and updates  the corresponding Pokey register. So very close to RMT.

     

    Seems you may have a pretty good test case there...

     

    • Like 1
    • Thanks 2

  12. 17 hours ago, emkay said:

    It seems to be too much though.

    Particular, if programs were using a lot CPU , and special DLIs to change things on the screen. 

    If you run that thing at 800Hz , the decompression has to do all 5 pokey registers. 

    Doing that just with volume of one channel, the decompresion will get 5 times faster at that point 

    Yes there should be just enough juice for 800hz with 4 channels which like you said is probably not very useful. A single 800hz channel (at fixed updates) would be nicer but it may require changes to LZSS

    • Like 1

  13. 12 hours ago, miker said:

    Feel free to try again. 😜

    No need to be so sensitive 😏

     

    And to get back on topic... The next version will focus on the Attract mode with assets which may or may not be final.

     

    There will also be a cart version which will use the same streaming method that xxl showed in his video (128KB of RAM still required).

    I would like to extend it in the future to have a mix of streaming and direct access for storing preshifted/premirrored sprites... but that's probably wishful thinking....

    • Like 4

  14. 5 hours ago, emkay said:

    800 times changing the volume on the generator, means 800Hz changes.

    hmm.. that's saying the same thing ? 800 times per second is 800Hz

     

    4 hours ago, emkay said:

    For the sampling, only the speed of volume changes is relevant. Changing the whole instrument envelope is a huge wasting of ressources. So I hope there will be a fitting solution.

     

    Not if it gets converted to LZSS (which may or may not compress well)

     

    4 hours ago, emkay said:

    800Hz is more than sufficient. 

    The question still is the flexibility of different speeds inbetween.

    800hz means 16 times at equal intervals per VBL at 50fps. Having "flexible intervals" between those 16 times per frame would be some kind of hybrid 800hz. I don't think it's a good idea for 2 reasons:

     

    -In a project that uses DLis for different purposes, that could cause DLi clashes.

    -You may want a variable interval for one channel but you probably don't want the same interval for the 3 other channels unless you play them at lower frequency.

     

    Hopefully 800hz fixed intervals should be nice enough.

    • Like 1

  15.  

     

    4 hours ago, Wrathchild said:

    Why is small exe size a constraint in this day and age :D

    I was thinking it'd be easier to potentially convert a smaller project to C# 

     

    4 hours ago, Wrathchild said:

    Not sure if the Goat-tracker UI is too basic for Pokey needs?

     

    It seems pretty different... What do other people think ?


  16. 15 hours ago, emkay said:

    Depending on the speed of the sampling, one could change the length of the "samples" to get the fitting resulting tone frequency. 

    You mean like Ivop says below ?

    6 hours ago, ivop said:

    It's actually a mix.  It uses small snippets (preferably exactly one wave period), and loops those at different speeds (i.e. jumping through it with a different delta and loop). AtariSid6 also has different snippets for different volumes, but that is not strictly necessary.

    I was thinking I could use an instrument with AUDC set to volume mode and have the volumes/samples in the envelope (envelope length is not limited in RMT2LZSS). I could make the envelope speed variable (like Vinscool mentioned earlier) for different playback frequencies...

     

    6 hours ago, ivop said:

    Indeed, you only need AUDC, but with full samples you can forget about decent compression with LZSS, or any lossless format for that matter. That's why FFT/DCT based lossy compression schemes were invented :)  BUT! The small windows of 256 or 512 bytes can be compressed pretty effecient, for example with delta compression and RLE, which is what AtariSid6 already does.

    Probably won't compress well indeed... but we're talking 800hz max... might be worth a try!


  17. On 4/15/2021 at 1:49 PM, Irgendwer said:

     

    Ah, I was wrong, they seem to use the Win api exclusively for display... so not a problem to have a scrolling pattern window then... too bad it's C++ because sneventracker (famitracker) seems very similar to RMT.

     

    Anybody knows of a tracker similar to RMT/famitracker with a very small exe size and with source code available ?


  18. 3 hours ago, Peri Noid said:

    Maybe a kind of xbios feature? I have completly no idea, though.

    well I'm ok to let that one go 🙂

     

    2 hours ago, tschak909 said:

    What's left to do ?

    -Thom

     

    not a lot... but dependned on what kind of polish I want, this could take some time.

     

    I was planning to do a release soon so you'll find out 😱

    • Like 9
×
×
  • Create New...