Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > CSDb Discussions > Android Goattracker compatible tracker
2021-04-25 05:24
Splunkh!

Registered: Apr 2021
Posts: 31
Android Goattracker compatible tracker

FakeSID is a FOSS Android chiptune tracker (inspired by LFT's Blackbird). The coder is now considering rewritting the whole thing, basing it on Goattracker! One very nice aspect of this is that Goattracker's .sng-files easily can be converted to SidWizard .swm-files (With Hermit's sng2swm-tool).

According to this thread on Github, the dude mentions he would need a little bit of help with some of the 6510-assembly bits. Anybody here who perhaps would like to point him towards the right direction? In that case leave a comment and more details can be added. Have a look at this thread: https://github.com/2bt/fakesid/issues/1#issuecomment-822011536

Personally I love the idea of punching in a few melodies or beats on my phone whilst being on the bus, and then move the fragments over to the breadbox when at home :) Also the gui on the previous/earlier android installment (FakeSID) is really sweet. Screenshots/apk are available at Github link above or at Play where it has gotten some pretty great ratings: https://play.google.com/store/apps/details?id=com.twobit.fakesid
2021-05-23 01:14
Splunkh!

Registered: Apr 2021
Posts: 31
I just briefly wanted to bring to your attention that the awesome topic above is going to interesting places at this github page: https://github.com/2bt/fakesid/issues/1 (But it would rock to hear some noise here too :D).
2021-05-23 12:16
Jammer

Registered: Nov 2002
Posts: 1335
If it's going to be 100% compatible, I'm really looking forward! :)
2021-05-25 00:48
wil

Registered: Jan 2019
Posts: 62
Me too! I like Splunkh!'s vision of working on some tunes while waiting for the bus. If the timing is right we might get this when bus traveling becomes normal again.
2021-05-28 06:30
Splunkh!

Registered: Apr 2021
Posts: 31
Howdy Jammer & Wil !

Thank you for chipping in on this thread.

No, it from what i can read, will not be *100%* compatible, but still not bad to my own limited understanding.

Since the time you commented here the coder of the app, 2bt, wrote this on github:

Quote:
Thank you all for the feedback, this is very helpful. Let me share with you some more of my thoughts.

I wanted to get a better understanding of which features in GoatTracker would be most essential and which features are rarely used. I was curious how typical SNG files look like and see what's typical and what effects are less common. So I wrote a tool 
( https://github.com/2bt/sid2sng )
to convert SID files back to SNG. Having looked at a few files, I think I have a better idea now.

Case in point is the song order list which allows for lots of flexibility like repeating patterns and transposition, all independent for each channel. That is useful if you care a lot for space efficiency but I would like to forego this and instead just have a simple table not unlike how Fakesid currently does it. As it turns out, all the files I looked at have a very regular structure where simultaneously playing patterns always have the same length. That's perfect.

So, I do not want to support everything that GoatTracker can do, for example all the song order list stuff or the channel tempo command. That's why some SNG files will cause issues when importing but in such a case I should be able to print out a warning/error describing the issue. 
Original source: https://github.com/2bt/fakesid/issues/1#issuecomment-847870922



Would you perhaps find that good enough to consider write some sweet beats and melodies on it whilst waiting for the bus?
:)
2021-05-28 13:42
Slajerek

Registered: May 2015
Posts: 63
I suggest to let him dig into Goattracker2 source code. It is quite simple C and frankly speaking including *all* features is not a big deal, in fact I think that gathering information may take longer time than reviewing code and implementing it in the Android environment (even considering that it does not have to be re-written, but can be easily ported via JNI and let Android GUI act via wrapper to the existing code and data structures).
2021-06-02 07:42
Splunkh!

Registered: Apr 2021
Posts: 31
Thanks for this interesting input Slajerek ! I forwarded that info to 2bt. Did perhaps anybody here check out the SID to GoatTracker sng conversion tool at github ?
2021-10-16 12:49
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: Thanks for this interesting input Slajerek ! I forwarded that info to 2bt. Did perhaps anybody here check out the SID to GoatTracker sng conversion tool at github ?

i checked it out but couldnt get it to compile sadly
2021-10-17 18:38
Splunkh!

Registered: Apr 2021
Posts: 31
Quote: i checked it out but couldnt get it to compile sadly

Hmmm, too bad. I saw you added a issue on GitHub and that there was one person previously who had some problems. If anybody would manage to produce a working binary that would be really cool.
2021-10-17 18:55
spider-j

Registered: Oct 2004
Posts: 498
Compiling worked fine here on Linux.

Awesome tool. I'm glad you found it. I started writing a sid2sng tool myself a couple of weeks ago – but guess I can throw that to /dev/null now :-)
2021-10-17 20:10
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: Hmmm, too bad. I saw you added a issue on GitHub and that there was one person previously who had some problems. If anybody would manage to produce a working binary that would be really cool.

yeah. I even asked for the creator to add a release!
2021-10-17 20:12
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: Compiling worked fine here on Linux.

Awesome tool. I'm glad you found it. I started writing a sid2sng tool myself a couple of weeks ago – but guess I can throw that to /dev/null now :-)


lol im a windows user so that means its a linux program?
2021-10-17 22:45
spider-j

Registered: Oct 2004
Posts: 498
Quote: lol im a windows user so that means its a linux program?

It's a super simple C++ program. I guess it will run fine on Windows. But the add_compile_options params in CMakeList.txt look GCC specific to me. Maybe try building it with GCC from Cygwin on Windows instead of Visual Studio.
2021-10-18 05:26
Splunkh!

Registered: Apr 2021
Posts: 31
Whohoo!!

All is now solved thanks to Spider Jerusalem & hedning in this thread sid2sng Windows builds

The CSDB entry and the compiled (Win x32/x64) binary is here: sid2sng 1.0

I tried it and it works wonders! But not every single Goat-SID works and sometimes you need to add some parameter to get an output .sng

usage: sid2sng [options...] sid-file [sng-file]
 -nopulse
 -nofilter
 -noinstrvib
 -fixedparams
 -nowavedelay

I converted sng to swn and am now enjoying analyzing the Goat-SIDs in Sidwizard 1.8 on native C64! :)
2021-10-18 07:45
DeMOSic

Registered: Aug 2021
Posts: 126
Quote: Whohoo!!

All is now solved thanks to Spider Jerusalem & hedning in this thread sid2sng Windows builds

The CSDB entry and the compiled (Win x32/x64) binary is here: sid2sng 1.0

I tried it and it works wonders! But not every single Goat-SID works and sometimes you need to add some parameter to get an output .sng

usage: sid2sng [options...] sid-file [sng-file]
 -nopulse
 -nofilter
 -noinstrvib
 -fixedparams
 -nowavedelay

I converted sng to swn and am now enjoying analyzing the Goat-SIDs in Sidwizard 1.8 on native C64! :)


Awesome!
2024-11-19 15:15
2bt

Registered: Jun 2021
Posts: 17
After a long silence, I finally found the drive to pick up the project again and have made good progress. The goal is an android app that is basically GoatTracker with a different GUI (and some limitations). The curious may check out the source at https://github.com/2bt/GTMobile. The project is not finished but almost usable and maybe close to a test release.

I would like to explain some differences to GoatTracker regarding tables because I could really benefit from feedback at this point. Maybe my idea is bad and that would be good to know.

Let's ignore the speed table for now. Each instrument is presented with its own three tables for wave, pulse, and filter. Under the hood, there are still the global tables but there won't be a way to see or edit the global tables directly. The user won't see jump commands but there's an implicit jump command at the bottom of every (local) table. You can select a table row and make it loop from there. Not being able to jump around is restrictive in theory but perhaps not so bad in practice.

The biggest consequence of not having global tables apply to table pointer commands. Since these commands reference rows in the global tables, this is a bit of a problem. One way to avoid the problem is to just not support table pointer commands. That's not acceptable.

I have another idea. I will change table pointer commands so that they don't reference rows of the global tables, but instead reference INSTRUMENTS, which in turn reference table rows. This means, whenever you want to use a new table pointer command, you first set up an instrument. Setting up such instruments happens automatically during song loading for songs that don't have these instruments set up already. When a song is saved, instrument numbers get converted back to table rows. There is a chance of running out of instrument slots but that might not be a big problem in practice.

So yea, that's the situation right now. The approach seems a but sluggish but maybe that's ok. And perhaps some of you have been able to make sense of this text and have opinion to share, thx.
2024-11-19 17:13
Jetboy

Registered: Jul 2006
Posts: 337
Why not.making it compatible? What is the point of doing crippled solution?
2024-11-20 16:00
RS-232

Registered: Oct 2024
Posts: 2
I think as long as the files generated are still loadable in GT2 it should be fine.

Is the reason for not using the global tables due to screen real estate on the android, or some other reason?
2024-11-20 18:58
spider-j

Registered: Oct 2004
Posts: 498
Quoting Jetboy
Why not.making it compatible? What is the point of doing crippled solution?

It's not that far fetched. NinjaTracker uses the same method and if you prepare your tunes in GoatTracker and throw them on gt2nt pattern fx will converted in that way automagically.

I wouldn't be surprised if the GT2 routine did the same or something similar when exporting to PRG / SID, depending on what features were used. Cadaver has a lot of stuff heavily optimized to save RAM and rastertime.
2024-11-21 09:57
2bt

Registered: Jun 2021
Posts: 17
I initially had global tables in the app but found working with it cumbersome. There isn't a lot of space on a phone screen as RS-232 pointed out. But I also wanted to make the app a bit more intuitive than the original tracker, which might help new users not familiar with it.

A global table has practical advantages. All addresses, including start addresses, can be stored as a single byte. Instruments can share table data with the goal of minimizing memory usage. This happens when two instruments have the same initial table position. The android app supports this. But data could in theory be shared more creatively. For example, instrument A may execute a few initial rows after jumping right into the local table of instrument B. With only local tables shown in the app, you won't be able to do this kind of data sharing. Having looked at a bunch of songs in the wild, I can tell you that this is not very common. Instead, what's common is that wait commands in wave tables are underutilized and space could be saved but isn't. So the app's limitations in this regard should not a big loss.
2024-11-28 11:58
2bt

Registered: Jun 2021
Posts: 17
I managed to build a web version which you can try out in the browser (on a PC).

https://2bt.github.io/gtmobile/index.html

Not as responsive as the real android app and no way file import/export. But I think it's fine for the purpose of getting some initial feedback regarding UI. Please try it out and let me know what you think. And tell all your friends about it. Constructive feedback will help make the final app better.
2024-11-28 17:32
Hein

Registered: Apr 2004
Posts: 954
I've tried it, looks great so far. I think it'd be good to make some space for the 'advanced' tables. By combining the project tab with the settings menu, you'd have space for a tables tab with all the expert mode / table stuff. The solution you have come up with by embedding instrument table data directly in the instruments seems useful. I guess that's where it belongs to prevent it from getting too detached. I do wonder about the instruments that are created on the fly to accommodate command tables, I think they're confusing. But I'd have to try it more to see if it'd work well when creating new tunes.

I've used FL Studio Mobile on a small Android phone and SidTracker64 on iPad, they're probably both good sources of inspiration. Especially a piano roll works surprisingly well on a small device. Maybe the data input in your GT Mobile is too tiny and a bit cumbersome, thinking about novice users. If you can find other ways to enter data values (preferably not having to remember all the commands and exact hexadecimal values), it'd be more appealing to new users that don't know GT so well. After all, the base for creating SIDs are the sequencer, patterns and the instruments. The table pointers really seem advanced features on a mobile device, which you'd rather not deal with too much when having fun on such a small screen.

Really nice to see the progress nevertheless, looking forward to the updates.
2024-11-28 17:59
2bt

Registered: Jun 2021
Posts: 17
Thanks for the feedback, Hein. Yea, a Piano roll might be very useful. Fake SID had something similar. I will think about it for a bit, it could be an alternative way of adding notes.

Regarding pattern commands, I was first thinking about having an icon for each command type, but couldn't come up with something I liked. I was also worried that experienced composers would miss the hex digits. When you want to put in a command, select a cell where you want it, then click the pencil on the right which opens up a dialog.

Btw, you can mark regions of the order and pattern table by holding down on a cell for a bit and then drag. There will be different buttons on the right. You can then copy that region and paste it elsewhere. For pattern data, there are also buttons with the following functions: transpose, set overwrite instrument, delete notes, set/delete commands.

I want to also add a kind of instrument manager where you can load instrument presets. I might need some help to come up with a good set of presets though.
2024-11-28 18:20
Hein

Registered: Apr 2004
Posts: 954
Quoting 2bt

Regarding pattern commands, I was first thinking about having an icon for each command type, but couldn't come up with something I liked. I was also worried that experienced composers would miss the hex digits. When you want to put in a command, select a cell where you want it, then click the pencil on the right which opens up a dialog.


Ah, right.. I tried it at work quickly, but now noticed it's usable for both novice and advanced users this way, cool.
2024-11-29 01:40
acrouzet

Registered: May 2020
Posts: 97
I personally think that SidTracker64 has a quite elegant solution for converting tables to a visually intuitive interface, although sacrificing hex values. Also, ST64 is for iPad only and screen real estate is an issue for phone tracking.

This interface looks good so far for a phone tracker, though. Could also work quite well on desktop with a few tweaks. Reminds me of GTUltra.
2024-11-29 16:40
2bt

Registered: Jun 2021
Posts: 17
I just added loading and saving instruments. Just tap the instrument tab twice.
2024-12-04 13:46
2bt

Registered: Jun 2021
Posts: 17
Here is the debug APK:
https://drive.google.com/file/d/1B_LMvW3vUbYGw5DYRs7wx34yW9SLj_..
2024-12-14 02:58
2bt

Registered: Jun 2021
Posts: 17
I just uploaded another update. The APK can be found with the same link as above. At this point I feel like the release on the Google play store is imminent.
2024-12-14 08:21
Hein

Registered: Apr 2004
Posts: 954
Quoting 2bt
I just uploaded another update. The APK can be found with the same link as above. At this point I feel like the release on the Google play store is imminent.

Tried installing, but I get a 'App not installed as package appears to be invalid.' message.
2024-12-14 13:23
2bt

Registered: Jun 2021
Posts: 17
Thanks for the feedback. I mixed something up when uploading. Please try again, it is fixed now.
2024-12-14 14:32
Hein

Registered: Apr 2004
Posts: 954
Quote: Thanks for the feedback. I mixed something up when uploading. Please try again, it is fixed now.

Works now. Will try it out when I'm having X-mas holidays and I only bring my Android phone.
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
csabanw
Bitbreaker/Performers
Chesser/Blazon
Sychamis
Isildur/Samar
Holy Moses/Role
Steffan/BOOM!
AArt1256/MoonShine
Guests online: 104
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 No Listen  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top NTSC-Fixers
1 Pudwerx  (10)
2 Booze  (9.7)
3 Stormbringer  (9.7)
4 Fungus  (9.6)
5 Grim Reaper  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.064 sec.