Jump to content
IGNORED

[RELEASE] RASTER Music Tracker, v1.34.00


VinsCool

Recommended Posts

RASTER Music Tracker

 

RMT is now open source!

https://github.com/VinsCool/RASTER-Music-Tracker

Contributions are welcome!

 

For new release starting from v1.34.00:

https://github.com/VinsCool/RASTER-Music-Tracker/releases

 

Old opening post:

Spoiler

 

Merry Christmas, and Happy Holidays Atarians!

 

It has taken me a lot of work, and I had to learn how to program from almost no experience, but finally I am incredibly happy to share this unofficial version of Raster Music Tracker!

There was a LOT, and I don't say that lightly, a LOT of work done into this project, and I really hope I was able to carry the legacy of Raster's music tracker with my changes and improvements.

 

Changelog: (spoiler alert, it's a wall of text!)

Spoiler

Changes in RMT 1.31 (VinsCool's version)
-------------------

--- The story begins around the month of June 2021 ---

RMT Patch 16 started simply as my own hacked driver version, and was nothing more than tuning tables experiments, based on the Patch 8 hack by Analmux.
Slowly, it had become its own thing, and I started learning 6502 Assembly during summer.
Months were passing, and I kept pushing my experiments further, to the point I was *literally* reverse-engineering RMT from absolutely nothing for reference!
Then, while I was really close to give up, feeling horribly frustrated and upset.
I was not able to do anything without the experience, or just a tiny bit of the original code to lead me in the right direction, and during the month of October, I really thought I had reached the dead end.

But then, something unexpected happened!
I was contacted via email by Mathy, and was very kindly sent the actual source code of RMT!
I was so shocked, in fact, I almost refused to even touch it, scared I'd destroy the legacy of Raster, and everything he had built the foundations, before he had left this world 10 years ago.

There I was, sitting with my huge messy reverse-engineering efforts, and the actual files I was wishing so much I had the chance to use...
After having exchanged some more emails regarding what I was allowed to do and not to do, I thought I was in good terms with the people keeping the original code safe.
So as far as I understood, as long as I did not distribute the source code to anyone else, I could do pretty much anything I wanted with it. 

So thanks again, Bobik, and Fandal I believe? as well as Mathy for relaying the emails, for granting me the privilege of having the RMT code in my posession!
Once I made sure I had the permission to talk about my experiments, and mention I was actually working from the official source code... I was determined to make good use of it...

So I spent a considerable amount of time learning C++ during the following month, just for the sake of pushing onward, and experiment with the RMT code, in hope I could expand it, and also improve it to my liking.
And all of this was really awesome, and fun!
Anyway, that was the story so far, so here we are at the first wave of changes I did into the RMT code, which was at that moment broken by my fault, mostly because I had *literally* no experience coding in C++ at all!

--- So here we are, around the month of November 2021 ---

Changes below came from the original 1.29 code I was working on.
Things were a lot mixed up, but eventually were merged then forked into its own direction.

At that point, I had simply called this fork "RMT 1.29+Patch16", because of how hacked up and just borderline functional it was during that time.

- Fix the UI bugs I have introduced with my experiments 
- Adjust the UI to either 4 or 8 tracks layout, making things look cleaner in general
- Adjust the Instrument popup window width so full names can be visible, making instruments with long names easier to find
- Fix the exports formats to be compatible to the Patch 16 design. Full support of MONO, STEREO, and NTSC parameters, in both SAP and XEX formats (still in progress for some details, but they are fully functional)
- Re-introduce the external binary loader, using the obx extension. This makes a lot of the things I am doing a lot more modular and easier to maintain since I don't have to hack pointers and memory addresses every time
- Allow modules instrument speed to support up to speed 8 / Maximum of speed 4 in exports still!!
- Fix the Tracker UI's hitbox so the 4th/8th channel's speed column could be clicked using the mouse pointer
- Change ALT+DEL to CTRL+Z for undo, same for the redo whatever ALT+SHIFT+DEL, to CTRL+Y. This now seems to be fully functional, the previous redo combo had random chances of missing due to the implementation of how keys were checked
- CTRL+TAB jumps to the speed columns of the currently edited channel
- Fix the song timer to always reset when the player stops
- Add the ability to either set a song bookmark, or remove it. Shortcut using it would either play from set bookmark, or from cursor position when unset. Bookmarks used to stay for as long as the module was edited
- Cursor follow during play is now toggled with the F12 key, and playing from one of the shortcuts (now F5, F6 and F7) will not overwrite it, but instead make use of either case, making the overall interface less awkward when it's playing
- Reset the entire sound process (including reloading the .dll plugin) with a SHIFT+ESC combo, helps removing stutters or crackling in some cases
- Fix a small visual bug related to the colours displayed, which caused conflicts with certain colours used together, and added a case for either being in JAM or EDIT mode when necessary
- JAM mode is toggled with CTRL+SPACE, the other SPACE shortcuts were removed (since other, better ways to stop the sounds exist anyway)
- Instruments and song infos can now all be edited in Jam mode, leaving the Tracks and Song blocks the only ones which will be in live test mode.
- Permanently display what mode is being used (EDIT, JAM (MONO) and JAM (STEREO)), with matching colour palettes (still in progress)
- Display Two-Tone Filter, requires the Altirra plugins for proper functionality 
- PAL/NTSC display in the info area, toggle in-tracker using CTRL+F12
- Colours fix in the UI
- New font by PG
- Fix the SONG block size, as well as its clickable area, and the offset related to it so the currently playing line is centered too
- Add a PAL/NTSC toggle from a mouse click in the text area associated to it, behaviour is identical to CTRL+F12 when it's executed
- Set MAXTRACKLENGTH and switch between 4 and 8 TRACKS from the main interface.
- New Global UI commands: Song Line Seek Next and Previous. Use with either Multimedia Keys (Seek Next/Prev)
- Tweak the clickable hitboxes slightly when the text was variable width for the the MONO/STEREO and PAL/NTSC boundaries

This is around that time, about a month later, that another surprise had happened, spicing up this adventure!
To make a pretty short story, out of nowhere, I was also sent the sources of RMT 1.30 this time! 

This version, which was another fork version, added a couple of new things, but was then left dormant by the original author, probably for the lack of time or interest.
So thanks a lot, sir Rudla, for allowing me to use your own version for my experiments!
A lot of his changes helped me a lot to get unstuck on a bunch of things I was unsure about, so this was a blessing, on the long run!

--- December 2021's progress... ---

- Bump version to 1.31 (still work in progress at that moment), and removed all the "Patch 16" references since this is pretty much the unofficial continuation of RMT now
- Port to Visual Studio 2019
- Fix a bug introduced by 1.30, which caused the lines of selected objects and AUDCTL hooks to be black, since they were reading zeroes instead of the proper RBG values
- Fix the "centered cursor on rows" view being dynamically adjusted using the window size itself
- Add MinMaxInfo calls for the minimal window sizes, independantly from 1.30's code changes since I took a different approach for it
- Display notes as Flats or Sharps (also saved in rmt.ini)
- Add a toggle for notes to display German Notation, basically B notes as H instead, etc (thanks PG for the idea)
- Change the highlight colours to a more uniform display, design is still not definitive
- Replace the text "Flat or Sharp notes" to "accidentals", being the proper musical term. Thanks to Enderdude for the information!
- Edit the configuration dialog window to make options a little less ambiguous, also re-arrange the elements a little bit
- Small code cleanup, now that most things merged recently (1.29, 1.30 and my own experiments) appear to work properly, few 1.30 additions were purposefully omitted for the time being, since a different approach was being taken
- Display the "About" dialog if no .ini file is detected, this is assuming RMT ran for the first time on a new system. It's the small things!
- Tweaked the commandline argument, so attempting to load any file by association that isn't a .rmt module will throw an error message and exit, instead of loading the tracker with nothing at all
- Changed the F7 hotkey to now Play from current position using F7 alone, or from Bookmark only if SHIFT is held and Bookmark is set.
- New global shortcut: CTRL+W to create a new file. 
- Preleminary Multimedia keys support, also added independently from the 1.30 changes
- Fix the Instrument editor screen to allow using SHIFT + Note Key again, and keep SHIFT as SHIFT for uppercase on the Instrument Name and Song Name instead
- Fully removed the necessity to use CAPSLOCK for typing uppercase characters holding SHIFT, this was counter-intuitive and rather unpleasant to have to use it like that
- Tweak the SHIFT key further when testing notes or editing text, so no accidental values are input if certain characters were pressed while SHIFT was held
- Properly implement CAPSLOCK, which will force uppercase and reverse to lowercase if SHIFT is also being held, it won't affect anything else than the text input areas (Song and Instrument names)
- Add another BOOL flag for the Song name area this time since it caused conflicts with the instruments screen when the same one was used for both at the same time
- Remove the old code and references to CAPSLOCK, NUMLOCK and SCROLLLOCK since they are no longer needed
- Fix a bug where holding SHIFT through CAPSLOCK caused instrument name cursor to function backwards, now having CAPSLOCK active won't cause any conflict with the arrow keys while SHIFT is held
- Tiny change to the is_editing_infos boolean, making sure it's actually only setting 1 when the cursor is on the Song Name area, while the Speed values will always return 0
- Fix a design oversight where editing in the "Track lines boundaries go to next/previous songlines" parameter being disabled would not take the pattern size into account and overflow past the "END" rows
- Make sure the selection block cursor won't cross pattern boundaries, fixing both a graphical bug and the awkward block selection behaviour where it would also overflow into the next/previous pattern
- Allow tracks to be navigated with LEFT and RIGHT keys seamlessly, making all Tracks columns (Note, Instrument, Volume and Speed) accessible unconditionally
- Force the Instrument column to insert a note if the note keys are used on empty rows, effectively making it behave the same as the Note column. Will use the original instrument number function otherwise
- Two-Tone Filter can now display its volume output in a unique colour, final design to decide later
- Replace the "." character in empty tracks to "-" for making it easier to visually know where the active line is
- Fix the "now playing" yellow colour to only display on the proper song line, and not when the same patterns are used elsewhere
- Fix the newer TRACKS UI blocks position
- Tweak the UI elements a bit to allow larger tracks, making Speed columns their own spot and also did preliminary work on implementing more complex functions in tracks
- Add preleminary support for sa_pokey.dll PAL/NTSC toggle, sending the accurate CPU clock values between each cases
- Fix the X coorfinates in TRACKS hitbox, everything else works as expected
- Adjust the minimal window size to accomodate the new TRACKS UI dimensions
- Preliminary new colours and themeing (thanks PG for the help and suggestions!)
- 256 colours bitmap support
- Tweak the DrawAnalyser() function in order to draw the mute/shadow/full volume bars with unique colours matching the background
- Highlight GOTO lines in the SONG block to make them easier to see (thanks PG for the idea!)
- Fix the config dialog update to not reset the sound routine if no region setting was changed, same for the HW/SW Soundbuffer setting. This was an oversight by Vin, oops
- Move the SONG block depending on the window size. This was the last 1.30 feature that was not backported yet since I took a different approach with the offset displacement handler
- Fix a tiny bit the Volume Analyser in the Instrument Editor screen, the volume bars were 3 pixels off relative to the tracks below it
- Add experimental register state visualiser/debug informations display, works for the few elements in place, but a lot of the design has yet made
- Add few more windows size parameters in order to move the SONG block accordingly, and hide the registers view block if it is too large to display properly
- Fix a small bug related to the WINDOW_OFFSET variable which would run into a conflict with another parameter and cause the UI to flicker as a result
- Add rudimentary frequencies calculation for the Register View. Much still missing!
- Create a Distortion C formulae for 15khz, 64khz and 1.79mhz modes. Accurate frequencies computed in real time!
- Create a Distortion 2 formula only for 1.79mhz mode, same as above!
- Worked around all missing modes by going directly into the Pure (Distortion A) frequencies formulae
- Fix a memory leak in the initialisation of the Registers Visualiser causing glitched characters to pop up at random
- Rewrote the Registers Viewer entirely to make it fit inside a single for() loop, since this caused random corruption in the data being read elsewhere despite sharing the exact same variables
- Fix a tiny mistake where not having the POKEY Chip registers option checked in the View menu would not display the Registers on the right, while the POKEY REGISTERS text shown above was still there
- Fix the Registers View initialisation, which potentially leaked memory by writing characters out of bounds
- Add Distortion 2 64khz and 15khz formulae
- Add Distortion 0 and 8 POLY9 formulae for 1.79mhz and 64khz
- Rudimentary cents off calculation. Needs improvements
- Further improvements in the cents calculation. Seems to output acceptable accuracy withing the range of +-1 error compared to the earlier attempt
- Remap the Registers View into a nicer block, still in progress. Small code cleanup in the AUDCTL bits detection
- Hopefully fix the RMW format for loading and saving due to an error in parameters number being incorrect, causing RMT to crash (thanks Zlew for reporting this bug!)
- Add new compiler flags in order to speed up the general performace of the code, few code adjustments done accordingly (thanks Puna for the tips and advices!)
- Notes computation based on cents and base tuning (440hz currently) is now fully functional!
- Fix the Instrument Editor screen where being in the Instrument parameters make SHIFT not work to switch Instrument with LEFT or RIGHT when the cursor is not on the Instrument Name line
- Also fix the Infos area with the same issue
- Make both "is_editing_" BOOLs more robust by making sure any situation would update the flag accordingly, to prevent keeping the wrong flag in memory when the cursor is moved elsewhere
! Work around the TXT format being broken by preventing the user from loading and saving in that format until it is properly fixed at an ulterior time
- Fix hotkey support holding SHIFT for Infos and Instrument areas, making PLUS, MINUS, PAGE UP and PAGE DOWN work again for Volume and Octave edit, finally after being broken for 3000 years
- Fix the SPACE key input when exiting PROVE/JAM mode, which would be input by accident in the instrument editor, when mode switched.
- Also fix a small bug in PROVE mode where pressing SPACE also reduced the current active volume... because of a missing break; statement at the end of its case entry, oops
- Allow jumping to ANY song line during playback, using either the mouse pointer, or any of the known shortcuts to SongUp() or SongDown() (Thanks Zlew for the suggestion)
- PAGE UP and PAGE DOWN keys can be used anywhere, effectively allowing seeking song lines from everywhere during playback! In Tracks: Use CTRL+Up or Down, or CTRL+Page Up or Page Down for the same effect
- Add Paste Merge (CTRL+M) hotkeys in tracks
- Tweak PROVE keys further so navigation is almost identical to EDIT mode control, minus the ability to edit SONG and TRACK lines. Instruments and Infos can still be edited, use SHIFT to test notes there
- Add Transposition shortcuts using CTRL+F1/F2/F3/F4, F1 and F2 transpose down or up 1 semitone, F3 and F4 transpose down or up 1 octave
- Add the ability to use most Tracks edit hotkeys without selecting a block first. When no block is selected, current row is automatically selected then gets the effect processed onto it
- Tweak the paste shortcuts so the data can be pasted anywhere when a Selection Block is still active, avoiding pasting in that block when it was not wanted
- Add CTRL+SHIFT+LEFT/RIGHT/UP/DOWN shortcuts, Left an Right change the instrument, Up and Down change the volume. If a block was selected first, it will be processed whole, else, it will be the active row
- Press Escape key to DESELECT a block
- Add CTRL+NUMKEY_ADD/NUMKEY_SUBTRACT shortcuts to change the tracks Step value
- Step value is now precessed in all situations in tracks, eg: inputting notes, volume, deleting row, selecting block, etc, except for SPEED column (no step when input), or when ENTER key is used (always 1)
- Add CTRL+SHIFT+ENTER hotkey to input a track end line, useful when you literally cannot use the END key (like myself)
- Multiple tweaks and polish on most things, too many detail to remember, or be worth mentionning, mostly fixing some bugs or very small oddities. Input revamp still in the work, so bugs may happen!
- Fix Tracks lines going out of bounds going up on tracks with Wise Loops due to a maths error
- Fix Select All command to actually select all, up to the Track End line, as it should have been since forever. This is directly related to the oversight mentionned above. Manual selection needs fix too
- Fix Tracks lines during Play+Follow mode to prevent any movement, except on the horizontal axis, so moving the cursor left and right still works. Fixes the oversight introduced with my new Song Lines code
- Fix a off by 1 error in the Select All function, where a line would be selected too far outside the boundaries, causing an overflow and possibly memory corruption when copied then pasted elsewhere
- Edit the Song Lines Goto code to make sure it always starts playing on the very first row of a pattern, to avoid skipping lines by "continuing" the playback from the wrong row on a different pattern
- Fix the Info section where changing the active instrument with SHIFT+LEFT/RIGHT would fail due to a missing parameter in the input handler
- Fix a bug in the Instrument editor where the combo CTRL+SHIFT+PLUS/MINUS for editing the volume envelope would be ignored due to a missing parameter
- Fix a bug in the Instrument editor where the combo CTRL+SHIFT+UP/DOWN would be ignored, also due to a missing parameter
- Fix a bug in the Instrument editor where using CTRL+SHIFT+LEFT/RIGHT would wrongfully return an instrument change command, because of a missing condition in the SHIFT key handler
- Fix a bug in the Instrument editor where using SHIFT+INSERT would wrongfully be ignored, also because of a missing parameter (god fucking damnit I keep finding new ones...)
- Tweak Prove keys a bit to prevent accidental inputs with invalid combinations
- Add TAB key support in Song lines, move track right, or left if SHIFT is also held
- FINALLY made sense of all inputs, will be much easier to edit from now on!
- Hopefully fixed the bugged note/instrument combo input from the Instrument column in tracks, where an empty row would force a note, else, change the instrument value
- Fix a crash caused by attempting to display Volume Only mode in the Registers View. Added few tiny changes in order to display "nothing" instead (thanks Enderdude for pointing this out!)
- Tweak global shortcuts further to avoid any conflicts with PROVE keys in stereo (CTRL+SHIFT+NOTEKEY)
- Add HOME and END keys support in PROVE mode, HOME to the first line, and END for the last
- Re-add the SONG Lines shortcuts "Insert New Unused Pattern", "Duplicate Pattern", "Set Goto Line"", now I realise those were nice to have there too
- Tweak Block Selection behaviour, so now manual selection using SHIFT+UP/DOWN in tracks follow the same logic used by CTRL+A, allowing selection of all valid track lines properly
- Tweak TrackUp() and TrackDown(), to make sure "going past boundaries move Song Line to the Next/Previous position" is properly happening only if the configuration is also enabled
- Also Treak the Tracks up/down code further so having a block selection active could never go past the boundaries, and just not move further on the active line, regardless of the boundary setting active
- Make the Home and End keys in tracks have a much smarter behaviour, where holding SHIFT for a Selection Block will match the improved logic done a bit earlier
- Also allow END to either go to the last wise loop line/end line or actual last line, replicating the behaviour of HOME which goes either to the first line in track, or first line in a Wise Loop
- Force the Tracks ENTER key case to always move down, to prevent the Selection Block's last line to get stuck, caused by the improved logic's check for the last line while the block is also active
- Update the manual to match this version's differences and new design
- Correct some English grammar in menus, update strings to better reflect the changes done
- Add experimental NTSC timing, using a pretty cursed setup involving the timeSetEvent() function which gets called every other frame to oscillate the timing between 16 and 17 miliseconds in NTSC mode

--- December 27th, 2021, just barely missed the Christmas release goal :( hahaha :) ---

...This was a MASSIVE changelog, but here we are, finally! 
Enjoy this new unofficial Raster Music Tracker version! More updates and more rambles will come in the near future :D
~Vin


Alright so here I'll try to make a simple summary of what can be done currently too.

This is a copy of a reply I made in the thread but here is the information for convenience. :) 

Spoiler

Let's first go from the Distortions themselves, and what they can do right now:

 

Distortion 0 - White noise generator, there are no special features yet.
Distortion 2 - POLY5 tones, sounds like a metallic square wave. Currently, there is a tuning table for 64khz mode, and 1.79mhz mode assigned to it.
Distortion 4 - POLY4+5, it's a pretty weird one, there are no special features yet.
Distortion 6 - This is a copy of Distortion C features. The original 16-bit bass code has been removed but planned to be redone in a different way, so this is a free slot currently.
Distortion 8 - White noise generator, there are no special features yet.
Distortion A - Square wave, pure tones. There are many tables for it currently. 64khz, 15khz, 1.79mhz mode and 16-bit through AUDCTL bits $50 or $28 when 2 Joined channels are enabled at once for that purpose.
Distortion C - Buzzy bass tones, there are tables for 15khz, 64khz and 1.79mhz mode. This is the exact same tables currently in Distortion 6 too.
Distortion E - Gritty bass tones, there are tables for 15khz, 64khz, 1.79mhz mode and 16-bit through AUDCTL bits $50 or $28 when 2 Joined channels are enabled at once for that purpose. The 15khz table it the same one used in Distortion C too.

You may have noticed there are AUDCTL bits involved, and that's precisely the point!

Those are the conditions for some specific features or tables to be used in the sound generators, and by doing it that way, this allows several things to be "automatically" adjusted when needed!

 

For example, using a Distortion C note in 1,79mhz in one channel, 64khz in another, even with the exact same pattern track data, they will be "adjusted" for the proper tuning in the relevant channels.

Or if you use a Distortion A instrument, and the song changes between 15khz and 64khz all the time, the tuning will be adjusted automatically, so most things between 15khz and 64khz should not be out of tune anymore!

Very useful for having a big bass, but play nicely tuned chords stabs between every beat :) 

The 16-bit method currently isn't very user friendly, but I will find a better way to use it later, too.

 

There are some other features I had tweaked, or edited:

- The Filter envelope code (AUTOFILTER just avoid the confusion) was edited so the 3rd and 4th channels are not forced to be muted, this was a deliberate choice I made because this can greatly improve the sound modulations.

- Instrument CMD7 has been replaced entirely, and now has a really useful function: AUDCTL envelope using $XY parameters, with the exceptions of Two-Tone Filter toggle using $FE to enable and $FD to disable, and finally, Volume Only with $FF.

 

The Two-Tone filter is a pretty complicated one to explain, but in short it's mostly used for producing Serial/Cassette tones, but there is technically no limitation for using this in a musical context!

So that's exactly what I intended to make it used for here :D 

You can produce a pretty convincing Pulse Width Modulation when notes are playing in Channel 2, and are 1 octave +01 higher in Channel 1, and offset in even higher frequencies interval.

A lot more tonalities can be achieved, and it can be very similar to a Ring Modulation in some cases.

You can also still output the volume of Channel 2 on top of it for richer modulation, and even apply regular High Pass Filter on top of it, so it could really become a complex synth with all the combinations added together! 

 

So you can see why my patch is still pretty much in its infancy.

There is still a lot to improve, and so I hope I will be able to make things work in a easier to understand format.

Unfortunately, there is currently a lot of CPU time being wasted with my driver changes, but this is mostly explained by my lack of experience mostly.

I've started to experiment with this only last summer, and I literally have started to learn how to code around that time! :P 

 

I have included the patched driver sources in the first post download, but I also had made a Github for my experiments too, where I originally had been using a pretty badly hacked RMT executable back then.

https://github.com/VinsCool/RMT-Patch16

This is precisely the reason why re-introducing the binaries loader in the code was necessary for me, because the driver alone can do a LOT of things :D 

 

 

Enjoy!

I hope you guys will like using it as much as I loved working on this fork, and add newer functionalities into it :D 

 

If you have any comments, suggestions, bug reports, feel free to share your thoughts in this thread!

I am not a very experienced programmer or musician but I will do my best to still bring further improvements for ulterior versions in the future.

 

For now, I'm going to take a break, I have spent the entire week end finalising this, between 2 Christmas dinners and serious sleep deprivation, hahahaha ?

Thanks again everyone who believed in me, and most importantly, thank you very much for being awesome!

 

Now, if you may excuse me, I have some leftover potato salad I would love to eat right now... Hahaha!

Good night, or good morning if you're on the other side of the Atlantic Ocean.

...

 

Updates and downloads:

 

Changes in RMT 1.31.21
-------------------

- Initial Unofficial 1.31 release for everyone

- Changelog is located in the spoiler above since the list is huge

rmt131.21.zip

 

Changes in RMT 1.31.22
-------------------
- Tweak the NTSC timing hack, should be a little closer to the actual thing now
- Fix the step size of 0 to force a movement of 1 when movement keys are used, to prevent getting stuck (thanks Ravancloak for pointing this out!)
- Force a .ini file write if no config is found when RMT.exe is launched, setting the default configuration (thanks again Ravancloak!)
- Added one of my own tunes I missed last time (Stranded on the Surface of Io Final.rmt), and updated a tune upon author's request (ilusia.rmt)

rmt131.22.zip

 

Changes in RMT 1.32.00
-------------------
- Updated the driver binaries to a newer and better WIP version, including export binaries. Work in progress ASM code is also included. Beware, it is messy...
- Bump the version number to 1.32 since the driver update is a major change, and numerous fixes will be done since the last 1.31 revision
- Clearly show the exact version number, since RMT may be updated pretty often, without really being warrant of a major release... Like this one for example :P

 

Changes in RMT 1.32.01
-------------------
- Added 16-bit pitch accuracy frequencies display for Distortion 2, A, C and E (C table 2)
- Added Sawtooth pitch frequencies display, as well as if the waveform is inverted by swapping the CH1 and CH3 values

 

Changes in RMT 1.32.02
-------------------
- Fixed a bug when playing a song with follow cursor enabled would always switch back to "play from current position" mode even if the mode was set to "track loop"
- Fixed a memory leak caused by the 16-bit frequencies calculations, which lead to a chance out of 2 to cause a crash when RMT is being executed
- Changed the empty tracks appearance from a single dash per row to a dotted pattern identical to tracks with data into them (thanks zaxolotl for the suggestion!)

 

Changes in RMT 1.32.03
-------------------
- Tweaked the "Go to line: XX" appearance by moving it a few tiles to the left, in order to mask the line number. This may help reduce the number accidental recursive GOTOs when they are edited
- Also changed the GOTO colours so only the number colour will be changed when highlighted. The number will be white by default
- Added a line separating the Left/Right tracks in the SONG block, making it easier to identify which channels belong to which side
- Small improvement to make the "Go to line" on tracks more appealing visually: highlight the number when the cursor is actually active in tracks, and keep the "Go to line" text more visible as well.
- Set the cursor position on the Volume envelope by default for instruments, to avoid accidentally overwriting the name when cycling through instruments (thanks PG for the suggestion!)
- Properly fixed the Follow Cursor Play bug by also making sure the parameter was defined in the Subsong change as well
- Fixed a bug where using the PAGEUP/PAGEDOWN keys in tracks at the same time as play+follow mode is active would cause graphical glitches since the line would try to move at the same time of following the cursor

 

Changes in RMT 1.32.04
-------------------
- Re-introduced the Distortion 6 BASS16 code in RMT, with updated description. You can also set the Distortion used for it with CMD6. $0Y = Distortion
- Small update on Distortions and Commands description, Added infos for new BASS16 CMD6 code, as well as Distortion A Sawtooth mode using AUTOFILTER + CH1+3 1.79mhz mode.

rmt132.04.zip

 

 

Changes in RMT 1.32.05
-------------------
- Added scaling support. 100% to 300% There is no filtering yet, only integer multiple of 100% will look pixel perfect.

rmt132.05.zip

 

Changes in RMT 1.32.06
-------------------
- Added a new tracker.obx function, where the driver version is written in plaintext, and then displayed in the About dialog. This is purely cosmetic, otherwise, there is no difference.
- Make the XEX export format have the colour shuffling optional.
- Also make sure the SAP exports skip the colour shuffling instructions, since both export formats use the same player binaries.
- Added an option for XEX exports to enable or disable the automatic region detection, in case a particular setup may work incorrectly with it.
- Fixed a bug related to scaling, causing the output to have choppy appearance due to incorrectly having set the boundaries of the display to draw every frame. Now it's a smooth display!
- Improved the PAL/NTSC detection code in the exports player (thanks pps for the sample code I used as a reference!).
- Updated all binaries with the last 6502 ASM changes, the old export binaries will no longer be compatible due to several memory address changes!

rmt132.06.zip

 

Changes in RMT 1.33.00 BETA

-------------------

- Added tuning calculations dialog, ALL known POKEY modes that was programmed to use a lookup table in the driver code will be generated on the fly, automatically!
Exception for the Sawtooth tables, it will not be generated due to not having figured out an optimal way to compute it yet.
- Added SAP-R Dumper, LZSS Compression, and new Export format: XEX-LZSS
VUPlayer coded by myself, now powered by rensoupp's unrolled LZSS driver! LZSS compression code by DMSC, which I have ported to C++ for use within RMT itself!
- Fixed several memory leaks, and fixed several bugs related to the UI and scaling
- General performance improvements, related to improved plugins communication, faster and better Tuning calculations, and improved bitmap usage for Registers View code
- Tweaked plugins communication, fixing Stereo detection, PAL/NTSC detection and making the timing hopefully more stable and accurate
Note that for the plugins improvements, I modified the Altirra plugins to make them work properly after my changes in the RMT code.
This also means the older sa_pokey.dll and apokeysnd.dll plugins won't work properly unless they also get updated accordingly.
- Many 6502 driver changes, fixing 16-bit generation, changed the way AUTOFILTER behaves, and attempted to fix several issues such as the vibrato underflow bug.
The driver changes be for the best, or may be not! Feel free to try and see what was potentially broken in the process!
I am aware some of the Portamento/Vibrato changes I did were not bugfree, and I apologise for that, this will be fixed another time.
Most tunes should work properly, otherwise.
- Temporary disabled SAP/XEX export
Since I am in the middle of the exporter code rewrite, and it's been a huge task so far, I haven't finished fixing it, but I know people wanted a new RMT version for a long time now.
So I decided to not take the risk and make sure the feature was temporarily taken away, but don't worry, the LZSS exporter is currently a much better option to use ;)

---

That being said, this is a BETA version, so it's very likely I broke more things and did not realise it. Please tell me if anything is wrong!

---

rmt133.00BETA.zip

 

...

I will post future versions in this thread and OP, so keep an eye on it :D 

 

 

Edited by VinsCool
Updated for new release and big news!
  • Like 23
  • Thanks 23
Link to comment
Share on other sites

Looking at it now. It looks great so far and adding the Pokey Registers gives a very interesting, and helpful, perspective. Also, I see that you got the 4th column speed setting working. In 1.30, that seemed to be missing so WTG!

Small bugs.
1. If I put RMT is full screen mode on my second screen and select the instrument, the dropdown extends into my first screen. Not a big deal but most programs respect the screen boundaries. If I move RMT to screen one and full screen it, not issues. Again, VERY minor.
2. It seems that some empty space, in the TRACK EDIT section, between the column header and the columns themselve.

 

image.png

RMTDropdown.png

  • Thanks 1
Link to comment
Share on other sites

First of all: It is not enough just to say thank you for all the work you put into this rework of great RMT player. I'm sure all the real musicians here will have a lot of fun playing with this enhanced RMT.

 

A short remind from me as I have looked into the asm sources - want to know how I can include music done with this new toy into my own programmes ;) Your automatic NTSC/PAL switch will work fine on real unmodified machines. But esp. in the NTSC region there are some people, that have put a PAL ANTIC into their machines to have a chance to play with us PAL users software that is not NTSC friendly. On these machines your code won't adapt the speed correct, as they acclaim to be PAL machines on the PAL register, but their clock speed is still 60 Hz. So the PAL register should only used to adapt color registers and you should use another check, if the machine is running at 50 or 60 Hz. For me this one works (MADS source):

Spoiler

	.zpvar .byte sixtyhz,count_s
;--------
   	.proc hz_test
	mva #0 559
	sta count_s
	lda #7				;VBI
	ldx >vbi_i
	ldy <vbi_i
	jsr setvbv			;init
	mva #34 559
	mva #$40 nmien		;VBI on
;50 Hz or 60 Hz?
	mva #0 vcount
@	lda vcount
	beq w
	sta count_s
	jmp @-
w
	lda count_s
	cmp #$9b
	bmi ntsc
;PAL
	mva #0 sixtyhz
	sta count_s
	rts
ntsc
	mva #1 sixtyhz
	mva #0 count_s
	rts
;--------
	.local vbi_i
	jmp xitvbv
	.endl
;--------
	.endp

 

The vbi is not needed, if you are sure, that there is no strange vbi running, count_s must not to be reset, but I (re)use this atm for my speed correction during vbi.

Edited by pps
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

6 hours ago, VinsCool said:

and was very kindly sent the actual source code of RMT!

Aaaah! I was under the impression you worked with an IDA Pro reverse engineered version and added hooks to a new segment :)

 

It's great that the source has finally reached somebody that actually does something with it! It's sad that it had to take so long.

 

Thanks VinsCool for your great work!!

  • Like 1
  • Thanks 1
  • Haha 1
Link to comment
Share on other sites

33 minutes ago, michomis said:

Sorry, but now my "Ilusia" song from songs folder sounds terrible... it is totally out tuned. It seems that instrument B and C must be lower down 3 notes, but then I am out off scale.

In older vesrion of RMT is ok.

Any idea why?

It was a very quick fix!
Since rmt 1.28/1.30 didn't have good dist 2 1.79mhz tables, you compensated for that by transposing it 2 semitones, and then offsetting the pitch by $FE additionally. I simply removed that fix you made to utilize vin's new notetables to make it sound right again. :)

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

Hello guys

 

9 hours ago, pps said:

Your automatic NTSC/PAL switch will work fine on real unmodified machines. But esp. in the NTSC region there are some people, that have put a PAL ANTIC into their machines ...

 

Maybe there could be an option where you could choose between "automatic detection", "NTSC on 50Hz" and "PAL on 60Hz".

 

Sincerely

 

Mathy

 

 

  • Thanks 1
Link to comment
Share on other sites

Hey there everyone! Thanks for all the comments, I will do my best to reply to everyone :) 

14 hours ago, Beeblebrox said:

@VinsCool  Thanks! Amazing work.:) I listen to your creations on AA regularly and of course the work done on PoP.  Will check this out over the feastive break, (even though I have no musical talents whatsoever):grin:

 

Happy Christmas/hols.

Thank you very much!

14 hours ago, Justin Payne said:

Looking at it now. It looks great so far and adding the Pokey Registers gives a very interesting, and helpful, perspective. Also, I see that you got the 4th column speed setting working. In 1.30, that seemed to be missing so WTG!

Thanks a lot! Those were things, among many other planned features I wanted to get, so hopefully even better could be done soon.

14 hours ago, Justin Payne said:

Small bugs.
1. If I put RMT is full screen mode on my second screen and select the instrument, the dropdown extends into my first screen. Not a big deal but most programs respect the screen boundaries. If I move RMT to screen one and full screen it, not issues. Again, VERY minor.
2. It seems that some empty space, in the TRACK EDIT section, between the column header and the columns themselve.

1- This is a known issue, thanks for the reminder! I have yet to come with a solution for the UI improvements still.

2- This one is not a bug, but a deliberate change I have coded into the tracks display, in order to have the cursor centred on the track patterns during playback and editing.

The "empty" space, is currently kind of a compromise for that matter, but I wanted to make it display something a bit fuller, something like a partial view of "previous" or "next" patterns if the cursor goes on the bottom, but I don't know how I could do this yet.

9 hours ago, pps said:

First of all: It is not enough just to say thank you for all the work you put into this rework of great RMT player. I'm sure all the real musicians here will have a lot of fun playing with this enhanced RMT.

 

A short remind from me as I have looked into the asm sources - want to know how I can include music done with this new toy into my own programmes ;) Your automatic NTSC/PAL switch will work fine on real unmodified machines. But esp. in the NTSC region there are some people, that have put a PAL ANTIC into their machines to have a chance to play with us PAL users software that is not NTSC friendly. On these machines your code won't adapt the speed correct, as they acclaim to be PAL machines on the PAL register, but their clock speed is still 60 Hz. So the PAL register should only used to adapt color registers and you should use another check, if the machine is running at 50 or 60 Hz. For me this one works (MADS source):

  Reveal hidden contents


	.zpvar .byte sixtyhz,count_s
;--------
   	.proc hz_test
	mva #0 559
	sta count_s
	lda #7				;VBI
	ldx >vbi_i
	ldy <vbi_i
	jsr setvbv			;init
	mva #34 559
	mva #$40 nmien		;VBI on
;50 Hz or 60 Hz?
	mva #0 vcount
@	lda vcount
	beq w
	sta count_s
	jmp @-
w
	lda count_s
	cmp #$9b
	bmi ntsc
;PAL
	mva #0 sixtyhz
	sta count_s
	rts
ntsc
	mva #1 sixtyhz
	mva #0 count_s
	rts
;--------
	.local vbi_i
	jmp xitvbv
	.endl
;--------
	.endp

 

The vbi is not needed, if you are sure, that there is no strange vbi running, count_s must not to be reset, but I (re)use this atm for my speed correction during vbi.

Thank you very much! I knew my detection method was not the most efficient right now, so I appreciate the alternative! This might be very helpful in the future :)

I may revisit this sometime soon, and will try to improve that as well, thanks for the code example, that looks like an even better method!

8 hours ago, ivop said:

Aaaah! I was under the impression you worked with an IDA Pro reverse engineered version and added hooks to a new segment :)

 

It's great that the source has finally reached somebody that actually does something with it! It's sad that it had to take so long.

 

Thanks VinsCool for your great work!!

Hahaha yeah no! :D 

While it is true I had a pretty large amount of the code reversed using Ghidra, and was able to have a very good understanding of what was happening in general I just couldn't do anything useful other than hardcoded patches directly in x86 Assembly.

Honestly, it did not take me long to get stuck and really mad about the disassembled code. I literally had wasted an entire week for a single function, and gave up as soon as I realised I was unable to edit the binaries export code in a proper way to get them working.

The most I did actually do through reversed code was the .exe memory hack I did some time before I had the chance to get the sources, and few memory addresses and pointers I was able to edit for a few jumps, but apart from that it was a dead end for me.

This was still a huge amount of experience and learning material, so I can't say this was all wasted time!

 

Thanks a lot! I hope I can do as many things as I want to do, and also be able to do them.

I have learned from almost no understanding at all of programming in general, so to know people are happy makes me even more happy and determined to work harder on this project :)

6 hours ago, michomis said:

Sorry, but now my "Ilusia" song from songs folder sounds terrible... it is totally out tuned. It seems that instrument B and C must be lower down 3 notes, but then I am out off scale.

In older vesrion of RMT is ok.

Any idea why?

Hi there michomis, I am sorry about the issues you experienced.

I did my best to keep as much compatibility with older modules, but unfortunately a lot of them will require a manual update to work properly :( 

Thanks @EnderDude for the quick fix, I knew you'd have popped if I wasn't around earlier :D 

I will also add the updated song version in the folder for the next revision I will post in this thread.

 

This actually reminds me I haven't exactly elaborated about how to use the sounds, and what they can do, so I'll make sure to update the manual soon with a more indepth explanation.

That being said, my patched driver version is currently incomplete, and it will need a lot of improvements soon.

I had focused mostly on the tracker UI side because I wanted to make RMT more comfortable to use, and also prettier to the eyes, but there will be driver improvements as well :) 

 

You would be surprised to find out how much of the actual RMT engine there is in the 6502 ASM code!

That's the very reason I wanted to absolutely have the external binaries loader back and functional.

I knew from the Reverse Engineered code already it existed, but I was unable to make use of it, so I'm really happy it was still present in the sources too.

 

Anyway, I'll make a followup reply in a moment to address what my RMT Patch 16 driver can and cannot do, because I realise now people don't live in my head, hahaha :D 

I have originally made it for myself and my personal use, so obviously most people would be confused to see it behaving differently.

I'll also try to edit the OP for some more details as well later.

1 hour ago, Mathy said:

Hello guys

Maybe there could be an option where you could choose between "automatic detection", "NTSC on 50Hz" and "PAL on 60Hz".

Sincerely

Mathy

Hello Mathy, glad to see you again :) 

Like I posted above replying to PPS, this is something I planned to improve sometime soon, so thanks for the suggestion.

I will make sure to offer more customisation with export binaries, I have to admit it was a very difficult part to do, even with the full source code in front of me.

I've learned a lot since the first day however, so improvements will probably be done in due time :D 

50 minutes ago, SlidellMan said:

I have to admit, this new version of Raster Music Tracker sounds like fun. It took me a while to figure out that the H note is the B Natural note, however.

Hi SlidellMan, thank you very much for the kind words!

I really wanted to make RMT more comfortable and fun to use, so I'm happy to know I may have been successful!

 

Regarding the notation display, I have added new parameters in the configuration window for that purpose.

You can display the H notes again with the German Notation setting, and you can also display accidentals (sharps) as flats, if you desire.

Each options can also be enabled at once, and will be in the appropriate format when they are combined. :) 

 

Currently the Registers View only displays in Sharps, and only the PAL pitch is displayed, but that part will also be updated later to match the tracks visual for the notation.

 

  • Like 4
  • Thanks 1
Link to comment
Share on other sites

16 minutes ago, VinsCool said:

Anyway, I'll make a followup reply in a moment to address what my RMT Patch 16 driver can and cannot do, because I realise now people don't live in my head, hahaha :D 

Alright so here I'll try to make a simple summary of what can be done currently :) 

Let's first go from the Distortions themselves, and what they can do right now:

 

Distortion 0 - White noise generator, there are no special features yet.
Distortion 2 - POLY5 tones, sounds like a metallic square wave. Currently, there is a tuning table for 64khz mode, and 1.79mhz mode assigned to it.
Distortion 4 - POLY4+5, it's a pretty weird one, there are no special features yet.
Distortion 6 - This is a copy of Distortion C features. The original 16-bit bass code has been removed but planned to be redone in a different way, so this is a free slot currently.
Distortion 8 - White noise generator, there are no special features yet.
Distortion A - Square wave, pure tones. There are many tables for it currently. 64khz, 15khz, 1.79mhz mode and 16-bit through AUDCTL bits $50 or $28 when 2 Joined channels are enabled at once for that purpose.
Distortion C - Buzzy bass tones, there are tables for 15khz, 64khz and 1.79mhz mode. This is the exact same tables currently in Distortion 6 too.
Distortion E - Gritty bass tones, there are tables for 15khz, 64khz, 1.79mhz mode and 16-bit through AUDCTL bits $50 or $28 when 2 Joined channels are enabled at once for that purpose. The 15khz table it the same one used in Distortion C too.

You may have noticed there are AUDCTL bits involved, and that's precisely the point!

Those are the conditions for some specific features or tables to be used in the sound generators, and by doing it that way, this allows several things to be "automatically" adjusted when needed!

 

For example, using a Distortion C note in 1,79mhz in one channel, 64khz in another, even with the exact same pattern track data, they will be "adjusted" for the proper tuning in the relevant channels.

Or if you use a Distortion A instrument, and the song changes between 15khz and 64khz all the time, the tuning will be adjusted automatically, so most things between 15khz and 64khz should not be out of tune anymore!

Very useful for having a big bass, but play nicely tuned chords stabs between every beat :) 

The 16-bit method currently isn't very user friendly, but I will find a better way to use it later, too.

 

There are some other features I had tweaked, or edited:

- The Filter envelope code (AUTOFILTER just avoid the confusion) was edited so the 3rd and 4th channels are not forced to be muted, this was a deliberate choice I made because this can greatly improve the sound modulations.

- Instrument CMD7 has been replaced entirely, and now has a really useful function: AUDCTL envelope using $XY parameters, with the exceptions of Two-Tone Filter toggle using $FE to enable and $FD to disable, and finally, Volume Only with $FF.

 

The Two-Tone filter is a pretty complicated one to explain, but in short it's mostly used for producing Serial/Cassette tones, but there is technically no limitation for using this in a musical context!

So that's exactly what I intended to make it used for here :D 

You can produce a pretty convincing Pulse Width Modulation when notes are playing in Channel 2, and are 1 octave +01 higher in Channel 1, and offset in even higher frequencies interval.

A lot more tonalities can be achieved, and it can be very similar to a Ring Modulation in some cases.

You can also still output the volume of Channel 2 on top of it for richer modulation, and even apply regular High Pass Filter on top of it, so it could really become a complex synth with all the combinations added together! 

 

So you can see why my patch is still pretty much in its infancy.

There is still a lot to improve, and so I hope I will be able to make things work in a easier to understand format.

Unfortunately, there is currently a lot of CPU time being wasted with my driver changes, but this is mostly explained by my lack of experience mostly.

I've started to experiment with this only last summer, and I literally have started to learn how to code around that time! :P 

 

I have included the patched driver sources in the first post download, but I also had made a Github for my experiments too, where I originally had been using a pretty badly hacked RMT executable back then.

https://github.com/VinsCool/RMT-Patch16

This is precisely the reason why re-introducing the binaries loader in the code was necessary for me, because the driver alone can do a LOT of things :D 

 

 

 

  • Like 5
  • Thanks 3
Link to comment
Share on other sites

On 12/28/2021 at 2:12 AM, VinsCool said:

ahaha yeah no! :D 

So does this now mean that the source is finally open sourced? It's amazing that people have been sitting on this source for so long, even said the family didn't find anything, and finally decided to send it to somebody that has never programmed in C++ before, instead of to several people with 30+ years of programming experience. That baffles me. That's not a dig at you VinsCool. YOU did a great job!

  • Like 7
  • Thanks 1
Link to comment
Share on other sites

Hello Ivo

 

3 hours ago, ivop said:

So does this now mean that the source is finally open sourced? It's amazing that people have been sitting on this source for so long, even said the family didn't find anything, and finally decided to send it to somebody that has never programmed in C++ before...

 

No, RMT still isn't open sourced!

 

Bobik! promised Fandal that he would release the source this year, but he still hasn't done so.  I don't know why, but I've always had the idea that Fandal had the source.  So when VinsCool got to the point where he said he couldn't make any progress anymore without the source, I contacted Fandal, which I've met a couple of times at the Fujiama, and told him about VinsCool and his progress.  He sent me the source and gave me permission to relay it to VinsCool.  I confirmed with Fandal that we are allowed to talk about receiving/having the source code and that VinsCool is allowed to release new versions of RMT.  But we are NOT allowed to give anybody the source code!

 

Sincerely

 

Mathy

 

Edited by Mathy
  • Like 2
  • Thanks 3
Link to comment
Share on other sites

3 hours ago, ivop said:

So does this now mean that the source is finally open sourced? It's amazing that people have been sitting on this source for so long, even said the family didn't find anything, and finally decided to send it to somebody that has never programmed in C++ before, instead of to several people with 30+ years of programming experience.

Well honestly... I don't know.

I really do hope this becomes official, because currently, to my understanding, I do not have the permission to share the source code yet.

Otherwise I'd be really happy to post my progress on github or any platform for that purpose, I'm sure this would benefit from a lot of coder with much more experience than myself to keep the program updated and kicking ass!

3 hours ago, ivop said:

That baffles me. That's not a dig at you VinsCool. YOU did a great job!

Thank you very much!

That means a lot for me.

I've honestly had no experience at all with programming until somewhere during the month of June, and 6502 Assembly was my first actual programming language experience.

I seriously got hooked with it, and a lot of things clicked with me since that day.

Months passed, I've only had a very short lived time learning Javascript in between, and I hated it so much!

Then I've pretty much learned C++ with no tutorial, no "beginner's training guide", just fucking around until something worked the way I wanted... And here are today!

I'm honestly a visual learner after all. I learn better how to use a tool if I do have the tool in my hand and then given challenges to pass using it :D 

 

I have to say, I'm even more baffled at the fact I had learned C++ relatively quickly (2-3 months pretty much!), and I went beyond my own expectations by adding actual new features into RMT!

I am incredibly proud of my Registers Viewer code, and this one, surprisingly, was made during a single week end(!).

I've never anticipated that, and yet, I could do even more with it in the future if I use the logic backwards... to compute tuning tables in real time, if you see what I mean :D 

 

However, before I dive into adding even more features, I've planned to focus on improving my Patch 16 driver for now... by starting over with it, and redo it properly, using the experience I gained since my last revisions for it.

It's quite obvious it's a lot of noob-tier hacks held together with duct tape, in which I've had several technical limitations to work around, and also had taken a lot of guesses about how it was really intended to work.

Despite this, I was incredibly surprised to find out in the RMT code that, I pretty much had almost everything correctly assumed since my earlier Ghidra reverse engineering, so at the end, it did work out quite well, all things considered!

2 hours ago, _The Doctor__ said:

rmt greetinx should be sent out to all the crews that used to make music for the 8 bit... I bet they'd be inspired, all of our ears will be blessed!

I agree... I have had the intention to add more peoples in the shout out screen, but kept myself a little reserve since I did not want to "hijack" the original text with the people inside of it... out of respect, mostly.

I will most certainly give credits to everyone who inspired me, believed in me, or helped me one way or another, that i can promise :) 

Edited by VinsCool
I can't English
  • Like 6
Link to comment
Share on other sites

9 minutes ago, Mathy said:

Hello Ivo

 

 

No, RMT still isn't open sourced!

 

Bobik! promised Fandal that he would release the source this year, but he still hasn't done so.  I don't know why, but I've always had the idea that Fandal had the source.  So when VinsCool got to the point where he said he couldn't make any progress anymore without the source, I contacted Fandal, which I've met a couple of times at the Fujiama, and told him about VinsCool and his progress.  He sent me the source and gave me permission to relay it to VinsCool.  I confirmed with Fandal that we are allowed to talk about receiving/having the source code and that VinsCool is allowed to release new versions of RMT.  But we are NOT allowed to give anybody the source code!

 

Sincerely

 

Mathy

 

Thank you very much again Mathy, for relaying the sources to me, I really feel blessed for having earned the trust for this big project, and I am so grateful that I was indeed able to make use it, beyond the expected results I was hoping to get at first!

Seriously, I can't even say how much I am thankful, and also feeling like I am really making a difference in the community, with all my experiments and often crazy ideas I put into this, since last year or so :) ?

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

46 minutes ago, emkay said:

Seems, I found a little bug in the latest version. 

Everything seems fine, but for vibrato command 3 the is a pitch to low. 00 needs to be ff ?...

 

Interesting... Can you provide an example? module file too if possible.

I never changed anything related to the vibrato code, so that's a new one for me.

Link to comment
Share on other sites

7 minutes ago, VinsCool said:

Interesting... Can you provide an example? module file too if possible.

I never changed anything related to the vibrato code, so that's a new one for me.

Seems, you have to wait some days ;)

But I was really twisted with the tune, until I changed the values ... ;)

Link to comment
Share on other sites

12 minutes ago, emkay said:

Seems, you have to wait some days ;)

But I was really twisted with the tune, until I changed the values ... ;)

I see...

Well anyway I think I know what may have happened. Most likely an overflow in the frequency?

In this case, this could be addressed without too much trouble, in order to avoid overflowing from $FF to $00 or vice versa.

 

So I will keep this in mind and add a small check in order to prevent this from happening.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...