| |
spider-j
Registered: Oct 2004 Posts: 498 |
Release id #216054 : GTUltra V1.0.3
Better take this to discussions to not flood the comments.
Quote:Can you run it from the win32 folder?
Running the exe through WINE works fine. I'd prefer a native linux build though. |
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
same problem here, there is some file missing:
$ make
./bme/dat2inc gt2stereo.dat goatdata.c
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -c -o goatdata.o goatdata.c
cc1: Warnung: Kommandozeilenoption »-fpermissive« ist gültig für C++/ObjC++, aber nicht für C
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -c -o gt2stereo.o gt2stereo.c
cc1: Warnung: Kommandozeilenoption »-fpermissive« ist gültig für C++/ObjC++, aber nicht für C
In Datei, eingebunden von bme/SDL/SDL_stdinc.h:30,
von bme/SDL/SDL_main.h:26,
von bme/SDL/SDL.h:30,
von bme/bme.h:6,
von goattrk2.h:12,
von gt2stereo.c:26:
bme/SDL/SDL_config.h:42:10: schwerwiegender Fehler: SDL_config_minimal.h: Datei oder Verzeichnis nicht gefunden
42 | #include "SDL_config_minimal.h"
| ^~~~~~~~~~~~~~~~~~~~~~
Kompilierung beendet.
edit: after copying the missing file from a random source on my hd (which may or may not be correct, this file doesnt exist in my system libs) it goes further until the linking stage - which then craps out with a ton of undefined and duplicate symbols.
what kind of environment is this supposed to work in?
ticket
edit++: there also seem a bunch of files in the repo that shouldnt be there.... like dotfiles with macos metadata in the SDL header dir. And the entire SDL header dir itself actually :) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Following the info that zzarko posted in the main thread (GTUltra V1.0.3), I've added the changes from his patches.
Hopefully downloading / removing a few #defines will now allow for successful linux builds
Cheers
Jason |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
(have hopefully also removed all offending .o and .h files too) |
| |
Silver Dream !
Registered: Nov 2005 Posts: 108 |
Haven't tried on GNU/Linux yet (the second of the two systems I use) but on mac it now asks for missing `SDL_config_macosx.h`
silverdr$ make
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -I/usr/local/opt/openssl/include -c -o gt2stereo.o gt2stereo.c
In file included from gt2stereo.c:26:
In file included from ./goattrk2.h:12:
In file included from bme/bme.h:6:
In file included from bme/SDL/SDL.h:30:
In file included from bme/SDL/SDL_main.h:26:
In file included from bme/SDL/SDL_stdinc.h:30:
bme/SDL/SDL_config.h:34:10: fatal error: 'SDL_config_macosx.h' file not found
#include "SDL_config_macosx.h"
^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [gt2stereo.o] Error 1
Also I am not sure if this is "standard" or not but SDL2 on my system provides `sdl2-config` rather than `sdl-config`. I guess this uses SDL2, right? |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
SDL 1 is my guess - this bme lib is ooooold |
| |
Silver Dream !
Registered: Nov 2005 Posts: 108 |
Quoting GroepazSDL 1 is my guess - this bme lib is ooooold
Uh... I don't remember when it was the last time I had SDL1 installed. Tnx. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: Haven't tried on GNU/Linux yet (the second of the two systems I use) but on mac it now asks for missing `SDL_config_macosx.h`
silverdr$ make
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -I/usr/local/opt/openssl/include -c -o gt2stereo.o gt2stereo.c
In file included from gt2stereo.c:26:
In file included from ./goattrk2.h:12:
In file included from bme/bme.h:6:
In file included from bme/SDL/SDL.h:30:
In file included from bme/SDL/SDL_main.h:26:
In file included from bme/SDL/SDL_stdinc.h:30:
bme/SDL/SDL_config.h:34:10: fatal error: 'SDL_config_macosx.h' file not found
#include "SDL_config_macosx.h"
^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [gt2stereo.o] Error 1
Also I am not sure if this is "standard" or not but SDL2 on my system provides `sdl2-config` rather than `sdl-config`. I guess this uses SDL2, right?
And even if you fix that (I did) it will still complain about link errors. gmidi.o is needed on the linker line and that's windows only atm. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I had to search everywhere for a sdl 1 binary. I could have used sdl2, but as I had no idea how GT used it, I wanted to keep as much the same as possible. |
| |
Conrad
Registered: Nov 2006 Posts: 847 |
How to access channels 7-12?
I've set the SID numbers to 3 / 4, but I'm stuck with channels 1 to 6 still.
Is there a shortcut key for it? |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.
Needed to comment out #define __WINDOWS_MM__ in RtMidi.cpp and switch between the __WINDOWS__ and __LINUX__ defines in gmidi.cpp.
There is also a typo in makefile.common. A spurious '+' sign before gfile.o. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: And even if you fix that (I did) it will still complain about link errors. gmidi.o is needed on the linker line and that's windows only atm.
I manage to hack some more and had it built on Mac using a dummy midi driver. It will generate an executable in the linux folder though but that's easy fixable. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.
Needed to comment out #define __WINDOWS_MM__ in RtMidi.cpp and switch between the __WINDOWS__ and __LINUX__ defines in gmidi.cpp.
There is also a typo in makefile.common. A spurious '+' sign before gfile.o.
Made similar changes on mac. Also had to enable c++11 and fix a == vs = bug. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
so throw your PRs at github? :) |
| |
Frantic
Registered: Mar 2003 Posts: 1646 |
Quote: I manage to hack some more and had it built on Mac using a dummy midi driver. It will generate an executable in the linux folder though but that's easy fixable.
Tried to build on my mac, and this is what I got:
cc `sdl-config --cflags` -Ibme -Iasm -O3 -fpermissive -c -o gt2stereo.o gt2stereo.c
In file included from gt2stereo.c:26:
In file included from ./goattrk2.h:12:
In file included from bme/bme.h:6:
In file included from bme/SDL/SDL.h:30:
In file included from bme/SDL/SDL_main.h:26:
In file included from bme/SDL/SDL_stdinc.h:30:
bme/SDL/SDL_config.h:34:10: fatal error: 'SDL_config_macosx.h' file not found
#include "SDL_config_macosx.h"
^~~~~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [gt2stereo.o] Error 1
|
| |
zzarko
Registered: Feb 2003 Posts: 76 |
@Frantic: Just find that file from some other project, and possibly delete definitions that compiler says are duplicates. At least that helped me to compile for Linux.
@Jason Page: Since the program is made with SDL1, that is maybe even discontinued, you can port it to SDL2, or possibly use a new project that had its first release this month, SDL12-compat, implementation of SDL1 API atop of SDL2, made for usage with older projects:
https://github.com/libsdl-org/sdl12-compat
I haven't used SDL so far, so I do not know how much work would porting take. Here is official SDL migration guide:
https://wiki.libsdl.org/MigrationGuide |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
For GT2, my guess is it would be very easy to port to SDL2 - a lot of things don't have to be changed at all (and GT2 really only uses very basic SDL features).
That said, please merge the PR from Leandro :) The source in the repo really should be fixed to compile out of the box, not requiring such hacks, that makes things needlessly complicated |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Quote: Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.
Needed to comment out #define __WINDOWS_MM__ in RtMidi.cpp and switch between the __WINDOWS__ and __LINUX__ defines in gmidi.cpp.
There is also a typo in makefile.common. A spurious '+' sign before gfile.o.
|
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Quote: How to access channels 7-12?
I've set the SID numbers to 3 / 4, but I'm stuck with channels 1 to 6 still.
Is there a shortcut key for it?
For channels 7-12, these use odd song numbers
So song 0. = 1-6, song 1 v7-12…
Both songs play at the same time in the editor.
Read the GTUltra.PDF - all explained in there. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
Quote:Managed to build the current master (84dcb0a89cd21a577417006d4b79a5ce79284a73) on my Ubuntu 20.04 box.
but did it actually run? ticket |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Quote: For GT2, my guess is it would be very easy to port to SDL2 - a lot of things don't have to be changed at all (and GT2 really only uses very basic SDL features).
That said, please merge the PR from Leandro :) The source in the repo really should be fixed to compile out of the box, not requiring such hacks, that makes things needlessly complicated
Looking at SDL2. Although, I'll likely hold off changing things until I'm sure that I've fixed a few other issues that have been mentioned - Just so it's one less possible factor when trying to track problems.
I'm no github or linux expert, so please excuse my noob crappy handling. I've honestly just bought Github for dummies...! |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
Leandro already ported it to SDL2 :) see https://github.com/jpage8580/GTUltra/pull/8 |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
Quote:I'm no github or linux expert, so please excuse my noob crappy handling. I've honestly just bought Github for dummies...!
After we managed to make the digital talk people use git and github, i am no more able to accept any excuses like this. sorry :) (If you are on windows, install the github client - rather than plain git - and look at the tutorials they provide. it's not hard at all :)) |
| |
spider-j
Registered: Oct 2004 Posts: 498 |
@Jason: Perhaps it can help if you take a look at the dev branch of gt2fork. There is a proper implementation of rtmidi and SDL 2 which can be built for windows and linux aswell:
https://github.com/jansalleine/gt2fork/tree/dev
I'm very far away from the original GT2 code though, but the defines and Makefile compile options should still give good hints I guess. Another option would be to check out Leandros GT2 fork:
https://github.com/drfiemost/goattracker2
That's the great thing about open source: no need to re-invent the wheel :-) |
| |
Youth
Registered: Aug 2003 Posts: 43 |
Quoting spider-j That's the great thing about open source: no need to re-invent the wheel :-)
Regarding SDL2 and building for different platforms, you could maybe find some useful information in the SIDFactoryII code too: https://github.com/Chordian/sidfactory2. It has automated Windows, macOS (universal AMD/ARM) and Ubuntu builds, and uses SDL2. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I went with Leandro's changes (https://github.com/jpage8580/GTUltra/pull/8)
although there were still a number of other things I needed to do to get it back to a working state, as there was no audio, video initially!
All appears to be good now. Will commit soonish |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Will that also make MIDI work on linux? Only got the dummy driver running. Not sure which defines or dependencies are expected. |
| |
Frantic
Registered: Mar 2003 Posts: 1646 |
@Jason Page: Good work! |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
No idea about Linux. I’m putting in the patches that others have given.
However, for windows, it defaults to “audio dummy” unless I specifically set a driver in code. This is an SDL2 thing.
Wonder if there’s something similar for Linux? |
| |
spider-j
Registered: Oct 2004 Posts: 498 |
Quote: Will that also make MIDI work on linux? Only got the dummy driver running. Not sure which defines or dependencies are expected.
rtmidi works with ALSA and JACK on linux.
You have to use ljack, lasound libraries when building and set the flags -D__LINUX_ALSA__ -D__UNIX_JACK__.
The docs:
http://www.music.mcgill.ca/~gary/rtmidi/index.html#compiling |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Ii pushed a new version yesterday that does this.
V1.1.0 |
| |
theK
Registered: Oct 2020 Posts: 46 |
Great work! I'm super excited to try this! :-)
But I get an error when compiling this on Linux.
-
gt2stereo.c:27:10: fatal error: bme\bme.h: No such file or directory
27 | #include "bme\bme.h"
| ^~~~~~~~~~~
-
The file seems to exist. Not sure why it doesn't go though.
Anyone got any ideas?
The version I tried is 1.1.0
/K |
| |
spider-j
Registered: Oct 2004 Posts: 498 |
I still had to correct a few things (like the above mentioned backwards slash), but now I was able to build it.
Seems a lot of thoughts and work went into MIDI functions. I must admit when I built MIDI into gt2fork I really didn't know what to do with it despite entering notes and selecting instruments. I especially like having polyphony in JAM-mode.
What I'm not so convinced of is the general concept how up to 4 SIDs are implemented. But this is also because of the "undefined" nature of 4 SID .SID files. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Agreed that the 3 and 4 sid exporting and editing are not perfect. I just didn’t want to completely change the editor (I knew nothing about how it worked initially) or the sng format, as this would likely have just broken everything and caused me to give up on the whole project. But, it does work at least. And it does allow you to jam over,say, a 3 channel song without interrupting those channels.
The format isn’t optimised either for 3-4 sid songs. But, I’d imagine that in 99% of cases, most would be stand-alone music files / .prg rather than part of some elaborate demo.
4 sid support was added as mega65 can handle it. And, adding extra sid support, once I’d made the editor player code more modular, was pretty straight forward.
Will add those patches to V1.1. Hopefully things are really a lot better than the first release now.
Thanks again |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I was also thinking of making a midi learn function. So you could mute tracks / change filter cutoff, etc. good for quickly testing ideas. But it kind of depends on how useful it would be overall.
Now that it’s moved to sdl2, I can also make use of the mouse scroll wheel as well. Maybe for selecting instruments whilst editing patterns or something. |
| |
TheRyk
Registered: Mar 2009 Posts: 2218 |
If I got comments on this one
Powered by Drum Patterns
right, mono tune .SNGs can only be opened by earlier/other GT versions by setting to stereo mode.
Would be great if this could be fixed. |
| |
DeMOSic
Registered: Aug 2021 Posts: 126 |
Quote: If I got comments on this one
Powered by Drum Patterns
right, mono tune .SNGs can only be opened by earlier/other GT versions by setting to stereo mode.
Would be great if this could be fixed.
I opened an issue about this on github, and No. Its not an earlier version i mean, its the stereo goattracker version , not an earlier goattracker version |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
GTUltra (and GT Stereo obvs). Will load original 3 channel sng files. But they only save as GT Stereo sng files. I’ll add the ability to save as 3 channel SNG too - along with warnings about possibly losing data if you proceed. |
| |
TheRyk
Registered: Mar 2009 Posts: 2218 |
seems fine solution to me, thx! |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Had to add -lpthread and more importantly change the midi port it tries to open. midiin->openPort(1) works on my system.
I guess it would be useful to have a command line option to select port? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I’ll add a selection screen that allows you to select from a list. Possibly by holding down escape or something for a second…
Will also give you the option to select audio device for output , as sdl2 requires that to be set for windows. Otherwise, it defaults to dummy audio. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: I’ll add a selection screen that allows you to select from a list. Possibly by holding down escape or something for a second…
Will also give you the option to select audio device for output , as sdl2 requires that to be set for windows. Otherwise, it defaults to dummy audio.
Even better!
Would be nice to allow optional mono output with multiple sids as well, or may be that's already available? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
There’s an M in the top line of the screen, next to FV, 8580…
Click on that to change between mono/stereo output in the editor.
(This was already in GTStereo) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I've added a MIDI Port selection window
Shift-Click on the keyboard icon on the transport bar to display it.
Not sure what it will show for something with more than one port. shows the correct info for port 0 for me - but I've only the one port available. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: I've added a MIDI Port selection window
Shift-Click on the keyboard icon on the transport bar to display it.
Not sure what it will show for something with more than one port. shows the correct info for port 0 for me - but I've only the one port available.
It seems to work correctly. I get a resonable listing for my Arturia MicroLab.
There are a bunch of "MidiInAlsa::getPortName: error looking for port name!" errors on the console when I start though. Doesn't seem to affect anything. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Cool. It crashes if there's no MIDI ports now - Just pushed another version
I've also made it save as a standard 3 channel SID if there's either no patterns in the order lists for channels 3-6, or if the pattern(s) in channels 3-6 are all empty. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
If the current version seems good to you all, I'll make a new V1.1.1 binary for csdb. Would be good to include a build for linux though, if anyone could provide that? |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
You could setup github actions and have it build windows and linux (and macos with some limitations) binaries on every commit :) |
| |
theK
Registered: Oct 2020 Posts: 46 |
I managed to build it on Ubuntu finally. I didn't realize i needed the libsdl2-dev package.
Looking good! Looking forward to test it out! :-) |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Yes, the current master builds nicely. Still getting a bunch of messages about midi ports when bringing up the selection dialog but that seems purely cosmetic.
A side note: there is/was a readme.txt in the regular 3-chn gt2 repo which contains some documentation + a description of the file formats. This never was in the gt2stereo repo so I guess it got lost when you based GTUltra on this. Consider adding the relevant parts back to the repo. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I’ll remove the midi output text, add the original GT file format doc and then add a new official V1.1.2 release here.
Thanks again for everyone’s help and feedback. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
All updated. Hopefully no TTY output.
Have included the original GT readme.txt file too
Jason |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Works well here, good work! |
| |
theK
Registered: Oct 2020 Posts: 46 |
Works good in Ubuntu 22.04!
Thanks a lot! |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Good to hear.
I've just done a final commit, with improvements to char and palette editing.
I'll use that for the 1.1.2 release here.
I've had a few reports of freezes and crashes with V1.1.1 - but I've not been able to replicate.
If anyone experiences problems (and, even better, has repro steps!) please let me know |
| |
acrouzet
Registered: May 2020 Posts: 91 |
Is there a key that performs the same function as the clickable “rewind” button? I think it would be pretty useful…at least for me. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
There isn't..But there can be.
What key would work?
I was thinking of CTRL+LEFT_ARROW, but this would mean that the pattern change that it currently performs would only work with SHIFT+LEFT_ARROW?
Thoughts appreciated. |
| |
JCH
Registered: Aug 2008 Posts: 200 |
As fast forward, how about the corner key to the left of the "1" key? That's what I use for DeepSID.
Then perhaps with SHIFT it could rewind. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Thanks, Jens.
Will do that. Hopefully got some spare time this evening to implement. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Awesome work! Most things works beautifully. It's just two things I've noticed;
1. When stepping in the "order list" (ctrl+, or .) while playing, it doesn't scroll to show the actual position.
2. When using a transpose in the "order list", like a +3 or something, you can't step back from before the transpose point.
I'm not sure if I'm clear enough. I can give you a .sng with these "problems" after Revision... ;-)
Cheers! |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
That’s clear.
The code checks to see if you’re on a transpose or repeat, and if so, moves forward to the next. So that explains why it won’t go backwards.
Will look at the other issue too.
Thanks for spotting those |
| |
acrouzet
Registered: May 2020 Posts: 91 |
Another question (aka poorly disguised feature request): is redo functionality planned? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
It's been mentioned, but it wasn't on todo list.
I'll keep it in mind. Redo hurts my head & i'm not 100% sure that my undo code will handle that easily (as in, I've forgotten how I wrote it...) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
re: 1. When stepping in the "order list" (ctrl+, or .) while playing, it doesn't scroll to show the actual position.
So, I can't see anywhere in the code tht uses ctrl , or . !
It uses ";" or ":" and that appears to work correctly?
What have I missed here? |
| |
Adam
Registered: Jul 2009 Posts: 323 |
testing out the recent windows compile on windows10 (a few hours old going by the data on github).. noticed some issues:
1. fullscreen mode glitches the hell out if you switch to another application while in fullscreen (keeps flashing a black screen - rather violently - while hidden/minimized).
2. going into fullscreen doesn't work properly for me: pressing [alt]+[enter] - the application stops updating the window while continuing to play/run. does not enter fullscreen mode yet the config is updated to show that the mode was triggered. it will only recognize that it's in fullscreen mode when the program is closed and it reloads its config file. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Quote: re: 1. When stepping in the "order list" (ctrl+, or .) while playing, it doesn't scroll to show the actual position.
So, I can't see anywhere in the code tht uses ctrl , or . !
It uses ";" or ":" and that appears to work correctly?
What have I missed here?
I'm sorry! I've got it all mixed up.
It's shift + , and . = ; and : .
My apologies for the mixup, I got confused by the keyboard layout. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Ah. I think I understand now.
So, I made this only update the display if Follow was enabled too. I did wonder if it should always update the display, but then thought that the exact same "problem" would occur, where someone wanted the display to not change when changing the play position.
Will think about this one. I'm away for a week, so there won't be any updates until next Saturday/Sunday now (if you post here, I'm not ignoring you!) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Quote: I'm sorry! I've got it all mixed up.
It's shift + , and . = ; and : .
My apologies for the mixup, I got confused by the keyboard layout.
I've not touched the full screen code, compared to the original GTStereo (as far as I remember!). Do you see the same issues if using GTStereo too? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Looks like this could be something that just isn't reliable anyway. Quick Google search found this thread:
https://www.lemon64.com/forum/viewtopic.php?t=63136&start=15&si..
With the comment:
> Alt-Enter, but you may not like what you see, or it may not be 100% reliable, as it will not expand the window, but perform a fullscreen mode switch to an oldschool (SVGA-like) resolution.
Does it work OK if you edit the GTUltra.cfg file instead?
Just change this from 0 to 1..
;Window type (0 = window, 1 = fullscreen)
0 |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
V1.1.3 version here: https://github.com/jpage8580/GTUltra/releases/tag/V1.1.3
I went for ctrl-Left / ctrl-Right to select previous / next position (emulating clicking the buttons on the transport bar) as the key to the left of "1" was already used, JCH.
If this version seems OK to everyone (no major crashes, etc) I'll release officially here.
Thanks for your help, all. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Quote: V1.1.3 version here: https://github.com/jpage8580/GTUltra/releases/tag/V1.1.3
I went for ctrl-Left / ctrl-Right to select previous / next position (emulating clicking the buttons on the transport bar) as the key to the left of "1" was already used, JCH.
If this version seems OK to everyone (no major crashes, etc) I'll release officially here.
Thanks for your help, all.
Thanks for this!
Installs good on Ubuntu.
Will test out functionality later. :-) |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Is it just me or does the window scaling function no longer work (linux)?
I edit it to 2 in the config file (~/.goattrk/gt2stereo.cfg), but it get's reset to 1 on exit.
...or wait, after some fiddling: it loads gtultra.cfg, but writes gt2stereo.cfg... weird ass! |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I fixed the Linux gtstereo2.cfg recently. Not sure if I’ve updated it on GitHub though! |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: I fixed the Linux gtstereo2.cfg recently. Not sure if I’ve updated it on GitHub though!
HEAD seems to still be: c28467b4070c131ef70cc4e7ef6dc6c9d78efb9f
Tried 'make clean; make' but it still writes gt2stereo.cfg.
Not sure when you mean it was supposed to be fixed? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I fixed it in my local version. Just haven’t updated GitHub
It’s just one line in gtstereo.c that needs fixing |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Ah, I see. I misread your post slightly. Will wait for your next push then. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Just pushed 1.1.5 |
| |
theK
Registered: Oct 2020 Posts: 46 |
Doesn't seem to save setting on exit on Linux on 1.1.5. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: Doesn't seem to save setting on exit on Linux on 1.1.5.
Well, it load gtultra.cfg and saves gt2stereo.cfg. No change. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Unless I'm missing something I can only find that file in the win32 directory. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: Unless I'm missing something I can only find that file in the win32 directory.
You're missing something. :)
The configuration is in ~/.goattrk/ (was already with the original gt2) |
| |
theK
Registered: Oct 2020 Posts: 46 |
LOL! It's nothing unusual at all (that I miss something that is. ;-) ). Hmm, I'll have a look to see what I'm doing wrong. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
All I did was change the save filename. So hopefully it works.
But I only test on windows. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Yeah, it seems to save correctly in but for some reason it seems to refuse to load the settings on startup. :-/ |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: All I did was change the save filename. So hopefully it works.
But I only test on windows.
Nope, not in what you pushed: $ grep -i gt2stereo gt2stereo.c
printtext(0, y++, getColor(15, 0), "Usage: GT2STEREO [songname] [options]");
strcat(filename, "/gt2stereo.cfg");
$
Try:$ git diff c28467b4070c131ef70cc4e7ef6dc6c9d78efb9f gt2stereo.c |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
FFS
Pushed another.. Sorry about this. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: FFS
Pushed another.. Sorry about this.
Super, works now! |
| |
theK
Registered: Oct 2020 Posts: 46 |
There we go! Now it works! Thanks for all your hard work with this!
Also, I'm glad it wasn't me (this time ;-) ). |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
You’re both credited in the GTUltra.pdf
I really appreciate the feedback. |
| |
theK
Registered: Oct 2020 Posts: 46 |
It's still not possible to step back in the "orderlist" past a place where you have a transpose "like +3" with ";" or ":".
It way be by design, but still a bit strange. :-) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Will look into it.
I tried to repro this before, but it seemed to work for me. |
| |
theK
Registered: Oct 2020 Posts: 46 |
I'll try to replicate it and send you an .sng-file to show what I mean. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Hmm... I tried to compile (make) the latest version (1.2.0) in linux but got an error 1 "make: *** [<builtin>: gt2stereo.o] Error 1".
Did something change?
/K |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: Hmm... I tried to compile (make) the latest version (1.2.0) in linux but got an error 1 "make: *** [<builtin>: gt2stereo.o] Error 1".
Did something change?
/K
It's just that this line...
char filename[MAX_PATHNAME]; ...got removed from the top of main() in commit a46a91455659f4c605334451af4f0f2f43877790. |
| |
theK
Registered: Oct 2020 Posts: 46 |
@tlr: Yeah, I saw it now. Thanks, now it compiles.
But it seems to be something wrong with the themes, all I get is a black screen with a few blinking cursors. Is there a way to reset the theme?
/K |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Apologies. The filename[xxx] should no longer be required. I've pushed another update that just has the reference to this removed.
The new version doesn't use gtskin.bin files. Instead, it loads individual palettes from the gtpalette folder. If there's no palettes (or no folder), it should revert to a default palette which is stored in the .exe
I'm not seeing a black screen. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I can get a black screen if I rename the gtpalette folder and then force the default palette not to load.
in gtstereo.c - at line 192, I load the default.gtp (palette) file, and then save it to disk under a temp random-ish name. I then use the same code that I use later to reload that file 16 times to fill the palettes 0-15 with the default. Finally, I delete the temp file. Not my finest hour - Hence the comment in the code:
// load the default palette from the WAD file and then save again to disk...Nasty. Sorry.
I can only presume that for some reason, this bit is failing for you.
Always worth deleting / renaming the .cfg file to see if that helps
EDIT: Just pushed another version which replaces that hacky saving code. Hopefully that works for you now |
| |
theK
Registered: Oct 2020 Posts: 46 |
Sweet! Thanks a lot. Works like a charm now! :-) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Excellent! Does the window resize (drag bottom right corner) and anti-aliased display work OK too?
If so, I’ll package this one up, along with some final palettes from Lman as an official release and post on csdb. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Awesome!
Yeah, resize and antialias seems to work. :-)
However there seems to be no default there's more than the original, pressing the "theme" button don't do anything. (Maybe by design?). |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Nope. That means I’ve broken something. It should pick up the palettes in the gtpalette folder and load them at startup
Can you confirm you’ve got a gtpalette folder with files in it within the same folder as your GTUltra.exe ? |
| |
theK
Registered: Oct 2020 Posts: 46 |
Yes, in linux the binaries is in the /linux-folder and under there there's the /gtpalettes-folder with six files 0-5. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
OK... ANOTHER one pushed. Let me know how it goes!
I think the issue was that I had "\\" instead of "/" for file path separator. I've changed it to "/" in gpaletteeditor.c so that hopefully this now picks up all of the palette files |
| |
theK
Registered: Oct 2020 Posts: 46 |
Hmm, no. Sorry. :-/ Still no theme change.
Looking to see if I can see what's going wrong? What did you change from 1.1.6? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I'm sure it will be failing in the loadPalettes() method.
It checks to see if the gtpalette folder exists, and then gets the files in that folder via readdir, builds a final file path.
This then calls loadPalette(char *paletteName)
this loads the palette file and then calls readPaletteData(paletteMem); - which runs through the loaded data and sets RGB
readPaletteData is also called when loading the default palette - So this bit works. It has to be the file loaded - or how it's failing to find either the gtpalette folder or its contents where the problem is |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
This happens: $ gtultra
Unable to read directory: No such file or directory
$ (regardsless of where I'm standing) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
So, that's in loadPalettes, as suspected:
createFilename(appFileName, paletteFile, "gtpalettes");
folder = opendir(paletteFile);
if (folder == NULL)
{
jdebug[0] = 0xff;
perror("Unable to read directory");
It works for windows (or at least, for me and Lman!)
maybe for linux, it needs another "\" at the end of "gtpalettes"? |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
did a little printf() debugging, appFileName is '/home/tlr/.goattrk/gtultra.cfg' on my system... |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
createFilename looks backwards through that string until it finds a / or \. It then and adds the new filename (or folder) at that point (basically, replacing the gtultra.cfg text with the new string)
Changing the perror to the following show show the folder it's trying to open..
perror(paletteFile); |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
printf does nothing when i'm using windows cmd window to build - which is the reason that debugging this whole thing has been a f**king nightmare! |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: printf does nothing when i'm using windows cmd window to build - which is the reason that debugging this whole thing has been a f**king nightmare!
Yes, windows is usually resisting development activities. :)
But, point being is that appFileName is not used as appFileName, it is used as cfgFileName, hence you will search the palettes relative to where the configuration file is located. Place gtpalettes/ in $HOME/.goattrk/ and it will work using the current code.
EDIT: then it loads them, but switching does seem to work anyway... ? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
>Yes, windows is usually resisting development activities. :)
I'm a bit of a dick. I piped the output to a file, and I can see printf's... I'll be doing that more from now on!
I'm a bit confused!...
>But, point being is that appFileName is not used as appFileName, it is used as cfgFileName, hence you will search the palettes relative to where the configuration file is located.
Yes - the gtpalette folder should be within the same folder as gtUltra.exe AND the .cfg file.. Which is why the createfile code removes the gtultra.cfg and replaces it with gtpalette.. And then from there it adds "/"+filename of palette[n] to load each one..
That's what should happen - and it does under windows. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quoting Jason PageYes - the gtpalette folder should be within the same folder as gtUltra.exe AND the .cfg file.. Which is why the createfile code removes the gtultra.cfg and replaces it with gtpalette.. And then from there it adds "/"+filename of palette[n] to load each one..
That's what should happen - and it does under windows.
The config file is under $HOME/.goattrk/ on linux as it has always been. The binary isn't in the same directory. dirname(cfgFileName) != dirname(appFileName) for all platforms.
But, it still doesn't work if I copy it there. There are several issues. You still got a "\\" in loadPalettes(). You do "rb" of the palette (a text file) in loadPalette() and the hand parse that in readPaletteData() which is bound to fail on some configurations (CR/LF vs LF for instance). |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I wasn't aware that the cfg wasn't in the same location as the exe in linux...hmm
I do rb, as the default file is stored as binary in the large datafile. So reading the text file should be taken care of, once it actually loads into RAM.
I do a check for LF, etc - it's the code that I use to parse the default palette, which I modified to work with the binary data (it doesn't check for "\n", for example - it checks for 0xd... But we're going off track, I think.. take a look at sgets - I added a comment when I wrote it:
/*
Had to modify this to handle \n manually due to not being able to open "rt".
I add a 0 at the end of the loaded file buffer as a terminator.
I then check for <=0xd for a carriage return to cover 0xd,0xa combinations, rather than =='\n'
*/
This is what I get when running on windows: So the parsing of the binary works.
https://www.dropbox.com/s/ks63dxl2hx1q159/GoatTracker%20Ultra%2.. |
| |
theK
Registered: Oct 2020 Posts: 46 |
For linux to get to folders there is "./gtpalettes/0_default.gtp". |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: I wasn't aware that the cfg wasn't in the same location as the exe in linux...hmm
I do rb, as the default file is stored as binary in the large datafile. So reading the text file should be taken care of, once it actually loads into RAM.
I do a check for LF, etc - it's the code that I use to parse the default palette, which I modified to work with the binary data (it doesn't check for "\n", for example - it checks for 0xd... But we're going off track, I think.. take a look at sgets - I added a comment when I wrote it:
/*
Had to modify this to handle \n manually due to not being able to open "rt".
I add a 0 at the end of the loaded file buffer as a terminator.
I then check for <=0xd for a carriage return to cover 0xd,0xa combinations, rather than =='\n'
*/
This is what I get when running on windows: So the parsing of the binary works.
https://www.dropbox.com/s/ks63dxl2hx1q159/GoatTracker%20Ultra%2..
I did see the comment, but I'm thinking unless you tested it on the relevant configurations, there are many things that can go wrong.
When I put the gtpalettes dir with the config file and fixed the "\\" it seemed to do loadPalette() on all files, but no palettes appeared in the gui. No error messages. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
@theK
Thanks. I'll change the code to do this path... But are you seeing the same problem as tlr - the palette's still aren't changing?
Possibly worth seeing if the actual palette load is failing in loadPalette() (it also has a nice comment saying that I knew the RT thing was going to be a pain..:-) )
FILE *handle = fopen(paletteName, "rb"); // Have to use RB instead of RT as the default file is within the binary wad..grrr
if (handle == NULL)
{ |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
After some more printf() debugging I can see that it's sgets() that does not work correctly with LF line endings.
If I crudely change this:
if (**strp == 0xd){
s[i] = '\n';
into this:
if (**strp == 0xa){
s[i] = '\n'; it works with LF (but of course not with CR/LF anymore).
Should be easy enough to verify on your platform with an LF only file as you do a binary read. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Yeah, as tlr, I get the "/gtultra
Unable to read directory: No such file or directory"
This indicates that it's searching in the wrong folders. :-( |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
what confuses me is that I know that these files have 0xd,0xa as LF,CF - I can see it in a hex editor, and I'm loading in binary, so this should stay the same. So the code that is there already should handle this correctly...What have I missed here?! |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: what confuses me is that I know that these files have 0xd,0xa as LF,CF - I can see it in a hex editor, and I'm loading in binary, so this should stay the same. So the code that is there already should handle this correctly...What have I missed here?!
You are missing that they are text files. git cloning text files will yield native line endings on the platform the clone is performed on. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Hah!
Yes, I missed that!
I had no idea that GIT would mess around with file data! I thought the rb / me parsing the data should mean that the data is 100% the same for you as it is for me. That's pretty shocking... However, how does GIT know that they're text files? Just by a binary search? Surely that's really dangerous? it could just decide that something is a text file, even though it wasn't?...Time for a google search..
(Likelyhood is that I'll ditch the text format and revert to at least having binary data for palette files..) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Also - I just wanted to say that I REALLY appreciate your help here!
Thank you |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
@tlr - OK, so now I understand what's going wrong (I'm blaming GIT here ;) - When you change the check to 0xa, that should then fix everything... But you're still not getting different palettes?
EDIT: Is it possible for you to upload one of the .gtp files to here:
https://www.dropbox.com/scl/fo/1vaevbxbohrmzxghyhxg2/h?dl=0&rlk..
Would like to just verify that my changes to the text parser works.
Thanks! |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quoting Jason PageI had no idea that GIT would mess around with file data! I thought the rb / me parsing the data should mean that the data is 100% the same for you as it is for me. That's pretty shocking... Well, if it didn't convert it would be a horrible pain to work on the same code from two different platforms.
Quoting Jason PageHowever, how does GIT know that they're text files? Just by a binary search? Surely that's really dangerous? it could just decide that something is a text file, even though it wasn't?...Time for a google search..
I guess that is something Mr Torvalds has to explain. :)
Text file conversion to native line endings is the default in most revision control tools but commonly you have to explicitly tell the tools when to treat files as binaries. Git does it automatically.
Quoting Jason Page@tlr - OK, so now I understand what's going wrong (I'm blaming GIT here ;) - When you change the check to 0xa, that should then fix everything... But you're still not getting different palettes?
with my crude tweaks I get different palettes, yes.
EDIT: files here: gtpalettes.zip (unless zip converts them too :) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I can't download for some reason... The gods of code hate me today. can you copy to that dropbox folder?
EDIT: Ignore that. Chrome wasn't happy. Edge (urgh...) complained but eventually gave me the file. Thanks |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Super..
So, changing the magic line to:
if ((**strp == 0xa) || (**strp == 0xd))
{
Allows for both to work.
Apart from that change, what else did I need to change so that it compiles / works out of the box? Was there a change to the file path too?
I'll commit that change anyway ^^^ |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: Super..
So, changing the magic line to:
if ((**strp == 0xa) || (**strp == 0xd))
{
Allows for both to work.
Apart from that change, what else did I need to change so that it compiles / works out of the box? Was there a change to the file path too?
I'll commit that change anyway ^^^
You need to separate the concept of the path to the binary/installation from the concept of the path to the config file.
Also there was a "\\" in loadPalettes() that needs to be "/". |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Yeah, I fixed the // to \ thing before. I think you missed that push. Hopefully what's there works now? |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: Yeah, I fixed the // to \ thing before. I think you missed that push. Hopefully what's there works now?
Assuming I copy the gtpalettes directory to the config directory it seems to work. Can't say if the actual themes are 100% like intended, but they are all different. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Should match what was in the video link I posted earlier |
| |
theK
Registered: Oct 2020 Posts: 46 |
Just got back, you guys are hard at work! :-O
Latest build still get "./gtultra
/home/xxx/.goattrk/gtpalettes: No such file or directory"
It goes to the wrong folder. The gtpallets is in the "binary" folder, not the config one. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I'm going to change the code so that it looks for gtpalette folder in $HOME/.goattrk/
Please confirm this is correct |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: I'm going to change the code so that it looks for gtpalette folder in $HOME/.goattrk/
Please confirm this is correct
This is what it does now. It sort of makes sense, because it is configuration after all. The issue is that there is no gtpalettes/ folder there when starting up the first time. Either you have the palettes looked up where the binary is, or you write out the initial defaults to $HOME/.goattrk if no gtpalettes exist.
The latter is the nicest IMO. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Gotcha. Thanks
Laptop battery is dead. Will look at this again tomorrow. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Quote: For linux to get to folders there is "./gtpalettes/0_default.gtp".
One last question - just so I understand linux a little better!
Is this path we’re the palettes are currently stored?if the code just referenced “./gtpalettes/“ folder, it would find them?
So far, I’m clear on where the palette is currently trying to load from (cfg location..). But not where it actually is by default. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Ignore that question as it’s not relevant to my solution:
1. I’ll add all default palettes to the large data file. So they all load by default at stat-up - just as the single default palette currently does.
2. I’ll modify the code to create a gtpalettes folder if it doesn’t already exist.
3. Users can then place new / saved palettes in this folder, and they will be loaded at start-up after the default palettes.
(Lman has created some excellent skins, which I still need to add as the defaults) |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: Ignore that question as it’s not relevant to my solution:
1. I’ll add all default palettes to the large data file. So they all load by default at stat-up - just as the single default palette currently does.
2. I’ll modify the code to create a gtpalettes folder if it doesn’t already exist.
3. Users can then place new / saved palettes in this folder, and they will be loaded at start-up after the default palettes.
(Lman has created some excellent skins, which I still need to add as the defaults)
Seems like a good solution.
I noticed that the palettes are in a different order than in your example video. If you are not sorting the entries you'll get whatever order the filesystem happens to have. I'm guessing that's what happens.
(answer to question to be ignored: no ./ will always relate to where you are standing when starting the program. If not, eg 'ls .' would list the files where the ls binary is located) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
For windows at least, it was loading the files in alphabetical order automatically. I hoped that would be the same for Linux too.
For the defaults, it will always be in a specific order now, as I’m c”generating the file name to load in a loop, |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Quote: For windows at least, it was loading the files in alphabetical order automatically. I hoped that would be the same for Linux too.
For the defaults, it will always be in a specific order now, as I’m c”generating the file name to load in a loop,
I don't think POSIX guarantees any specific order for readdir(). For ext4 my guess is that you'll get the files in inode order. For NTFS, not sure. Could be in the order written perhaps? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I did wonder if that would be the case.
I Will look at saving the filename of the current palette in the cfg, rather than index.
It can then look through and do a string compare to use the correct palette on start-up |
| |
theK
Registered: Oct 2020 Posts: 46 |
Hmm, there seems to be an error in the latest build.
---
gpaletteeditor.c: In function ‘loadPalettes’:
gpaletteeditor.c:782:17: error: too few arguments to function ‘mkdir’
782 | mkdir(paletteFile); // default palette folder didn't exist in config file location. It now does..
| ^~~~~
In file included from goattrk2.h:10,
from gpaletteeditor.c:7:
/usr/include/x86_64-linux-gnu/sys/stat.h:389:12: note: declared here
389 | extern int mkdir (const char *__path, __mode_t __mode)
| ^~~~~
make: *** [<builtin>: gpaletteeditor.o] Error 1
--- |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Grrr..
mkdir for linux requires permission flags too.
I've changed the line for linux to:
mkdir(paletteFile, 0777);
Please try again! |
| |
theK
Registered: Oct 2020 Posts: 46 |
But... Am I thinking the wrong way here... Do you really need to create the folder if you make sure it's already there in the .zip with the content? |
| |
theK
Registered: Oct 2020 Posts: 46 |
Never mind. Now it compiles fine. And the themes work! \o/
Good job! |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
The folder allows you to place your own modified palettes in there and they will also load on startup. Glad it’s finally working!
Sorry for the chaos. |
| |
hedning
Registered: Mar 2009 Posts: 4720 |
GTUltra V1.2.0 |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
I pushed some changes since 1.2.0 release
- FIXED: splitting/joining/expanding/shrinking patterns would not work correctly if follow was enabled.
- NEW: 3 channel pattern display (single SID or 3 SID channels 7-9) expands to fill more of the screen, similar to the original GT layout. |
| |
tlr
Registered: Sep 2003 Posts: 1787 |
Good work!
Suggestion:
It would be cool if the lighter/darker highlighting steps could be set individually for use with odd meters, like 3 + 4 or 3 + 2 and similar. |
| |
Silver Dream !
Registered: Nov 2005 Posts: 108 |
Does the latest (1.2.0) build on macos? |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
It has only been built and tested on Windows and Linux. I haven’t got the knowledge to build for Mac,I’m afraid. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11350 |
If it works in Linux, chances are high it will compile in macOS too - just try it :) |
| |
hedning
Registered: Mar 2009 Posts: 4720 |
Apple is the main enemy of Commodore, mind you. :P |
| |
MuZZa
Registered: Nov 2020 Posts: 16 |
Hi friends, i made this on my Mac Mojave (10.14.6) to run GTUltra 1.2.0 (the program runs fine, all in Resid, at least what I've tested, since I'm not a composer I can't test it thoroughly) I can mail the files if anyone wanna test it):
1) brew install sdl2
2) brew install pkg-config (I remove anyway the alsa pkg from the Makefile).
3)
Add the "-std=c++11" (Apparently, you need to specify that the compiler should use C++11 with the Catch2 c++ framework) in the makefile.common config file:
CXXFLAGS+=$(CFLAGS) -fpermissive -std=c++11
4)
Modify the Makefile like this:
#
# MAC makefile
#
CFLAGS+=`sdl2-config --cflags`
PREFIX=../mac/
SUFFIX=
LIBS+=`sdl2-config --libs` -lpthread
include makefile.common
5)
Since i receive this error:
cc `sdl2-config --cflags` -Ibme -Iasm -O3 -c -o gundo.o gundo.c
gundo.c:508:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
1 warning generated.
cc `sdl2-config --cflags` -Ibme -Iasm -O3 -c -o gchareditor.o gchareditor.c
c++ `sdl2-config --cflags` -Ibme -Iasm -O3 -fpermissive -std=c++11 -c -o RtMidi.o RtMidi.cpp
RtMidi.cpp:359:14: error: virtual function 'initialize' has a different return type ('unsigned int') than the function
it overrides (which has return type 'void')
unsigned int initialize(const std::string& /*clientName*/) {}
~~~~~~~~~~~~ ^
./RtMidi.h:554:22: note: overridden virtual function is here
virtual void initialize(const std::string& clientName) = 0;
~~~~ ^
1 error generated.
make: *** [RtMidi.o] Error 1
I change the return type for void instead of "unsigned int".
The complete final dump: 8 Warnings no errors. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Just a few findings...
1. The "keyboard visualiser" seems to get stuck sometimes, esp. with 2SID tunes. No biggie, it's just for show.
2. When jumping in the orderlist the cursor jumps to the top of the patterns. This is a bit annoying since I usually go back and forth to see what I've done in the previous position.
3. I may have mentioned this before... But in the orderlist this highlighted and played position is the last one, i.e. you can't see what the next one will be. It would be helpful to see at least the next one.
All for now. ;-)
And thanks for all your hard work with this great tool! |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
re: 3. I may have mentioned this before... But in the orderlist this highlighted and played position is the last one, i.e. you can't see what the next one will be. It would be helpful to see at least the next one.
You mean that when it updates the position when follow is enabled, the right most position is the playing one.. You'd like to it scroll one pattern earlier?
Thanks for the feedback & compliments. Not sure what could be happening with the keyboard display. Will try to repro (and then fix). But if you've any sngs which show this easily, let me know.
- And thanks also to MuZZa for his superb Mac help!
Cheers
Jason |
| |
theK
Registered: Oct 2020 Posts: 46 |
Quote: re: 3. I may have mentioned this before... But in the orderlist this highlighted and played position is the last one, i.e. you can't see what the next one will be. It would be helpful to see at least the next one.
You mean that when it updates the position when follow is enabled, the right most position is the playing one.. You'd like to it scroll one pattern earlier?
Thanks for the feedback & compliments. Not sure what could be happening with the keyboard display. Will try to repro (and then fix). But if you've any sngs which show this easily, let me know.
- And thanks also to MuZZa for his superb Mac help!
Cheers
Jason
Yeah, it's hard to describe. But the highighted bar in the orderlist is at furthest right. If it was second to last it would be easier to see what the next one will be.
Like this...
_______________________\/
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
If instead it was...
____________________\/
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
01 02 03 04 05 06 07 08 09 0A
It would be easier. :-)
--
As for the keyboard it seems like it is when playing really high pitched notes, like DC, DD or DF... It doesn't seem to happen with "normal" notes.
I'm not sure if I made it more confusing now... X-D |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Thanks for this.
I’ll do some tests with high notes / scales to see what’s going on.
Will also look at those other points too. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Fixed the keyboard high notes.
Also fixed a few other minor things whilst looking into how best to not reset the pattern pos when changing song pos. |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Made the changes to preserve pattern editing position when selecting a different pattern / song position.
Made the change to scroll order list one pattern earlier, so you can see the next pattern (based on the master loop channel position)
So, that should be everything that you requested. |
| |
Raf
Registered: Nov 2003 Posts: 343 |
Is it intentional that F2 or so (F3 maybe) works differently than in original GT? I mean on original GT I could highlight entries in orderlist and start songs from that point and it doesn't work that way in GTU. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Quote: Made the changes to preserve pattern editing position when selecting a different pattern / song position.
Made the change to scroll order list one pattern earlier, so you can see the next pattern (based on the master loop channel position)
So, that should be everything that you requested.
Yes! Seems to work as intended! Thanks for the swift help! :-) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
Quote: Is it intentional that F2 or so (F3 maybe) works differently than in original GT? I mean on original GT I could highlight entries in orderlist and start songs from that point and it doesn't work that way in GTU.
Yea it’s intentional.
F3 basically does everything (play from current position)
F2 enables/disables looping or follow.
F1 a play from start. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Just found a tiny glitch.
The there's no key repeat on the export to SID file selector. :-) |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
If that’s as bad as it gets, I’ll take that as a win :-)
Will look at that one later.
I’ve also got to update it to handle building on Mac using MuZZa’s solutions.
I’m also looking at adding an expanded order list view. It will display vertically instead of horizontally, each step showing the pattern and transpose value. And with all repeats unrolled.
I might also colour code patterns (user can set pattern colours). So that could be easier to see, say, drum patterns vs leads. Or verse vs chorus.
… and then it’s time to look at samples. |
| |
theK
Registered: Oct 2020 Posts: 46 |
Quoting Jason Page
… and then it’s time to look at samples.
😮
I volunteer as beta tester! 😜 |
| |
Jason Page
Registered: Sep 2015 Posts: 87 |
GTUltra 1.3.0
I've just released this on GitHub.
https://github.com/jpage8580/GTUltra/releases/tag/V1.3.0
I'll create a CSDB-friendly release once it's had a bit of user testing.
Features:
- Expanded Order List editing
- True Stereo Panning (15 positions) per instrument (emulation only)
- Definable SID Chip Pan positions (eg. place the 3rd SID in the center!)
- Automatic regular .sng backups (user definable duration between saves)
- Inter-pattern (marked area) looping is now optional
- Optional “Classic” F1-F3 key use (shift-click on record button to enable)
- Improved 6502 code for 9 and 12 channel SIDs for simpler playback (no more hackery of syncing 2 .SID files)
- SID emulation now disabled when seeking to start position (the delay was noticeable and annoying)
- Option to fully disable MIDI within .cfg file (set port to 9999)
- Editor settings are now saved in .sng files (FV, PO, RO, NTSC/PAL, SID Type, HR Value, Speed, # SIDs, Stereo mode) |
| |
manganoid
Registered: Jan 2021 Posts: 8 |
Hi guys, is there a way to use GTUltra on MacOS 12 (on MacBook Air with Intel i5 CPU)? I successfully managed to run GT2 on it but GTUltra has some features that are very useful to me. Huge thanks in adavnce. |
| |
Richard
Registered: Dec 2001 Posts: 621 |
Just a thought. How about built in a SID depacker? in which can load and unpack SID (or PRG) versions of tunes made in Goat Tracker back to to GoatTracker Ultra? In the past I wrote many tunes, but some I wrote using Goat Tracker got lost in 2021 after a serious PC crash, which affected my backup files. |
| |
DeMOSic
Registered: Aug 2021 Posts: 126 |
Quote: Just a thought. How about built in a SID depacker? in which can load and unpack SID (or PRG) versions of tunes made in Goat Tracker back to to GoatTracker Ultra? In the past I wrote many tunes, but some I wrote using Goat Tracker got lost in 2021 after a serious PC crash, which affected my backup files.
there is a tool called sid2sng made by 2bt which does just that. turns sid files made in goattracker back to sng files |