[Tool]Pokitto Music Tracker

Nice, I think i figured out how the tracker is intended to be used, but I believe the tracker is still a little buggy and not usable at the moment or maybe I am doing something wrong?

  • After selecting the binary from the loader the tracker starts with an empty pattern screen and the “pause icon” appears in the upper left corner.

  • Going into Play Mode © and pressing A (Play) seems to crash the machine, ever after inserting some note information.

  • Going into “More settings” and choosing save song seems to write something to the SD Card.

  • Choosing “Load Song” after that seems to crash the machine.

  • Loading the binary after a reset automatically loads some garbled pattern, not that this would be bad ;-), but trying to play that pattern again crashes the machine.

However, the song.rbs from jonne posted above seems to work fine. Can’t wait to test the tracker out further, let me know if I can be of help.

Hi and welcome to the board @gho !

The best way you can help at the moment is to try out things and report problems, as you have done.

If you find ways of crashing the program, that info is especially valuable.

Ok, while I am at it, it seems that on my device I am getting a bit of interference between the screen and the sound circuitry. On the tracking screen I hear a bit of inconspicious background noise, probably from the amps, but also a high frequency pulse signal. This pulsing becomes more pronounced in the instrument and saving screen. Is this normal? Not complaining here, just want to check that the device is working as intended. Am getting similar sounds in the Mode 13 demo.

The instrument preview feature with the envelope and all is pretty nice by the way.

Have you charged the device yet? There is some interference yes, but it should be less when the battery has more charge

Yes, the battery was low and I did not connect the screen properly, now it is much better! Did not expect the Berlin Philharmonics! :smiley:

I think I managed to produce a workable init.rbs. However, the instruments are not saved in it. Here is how it somehow works for me, just in case someone is having similar problems and wants to start tracking.

  • Load the attached init.rbs, it contains a few notes for instrument 1 in Track 1. Instrument 1 is empty, so you have to create one.
  • Go to the instrument screen, select patch 1, set Wave to square, Arp Mode to M Slow, ADSR to 1, Attack to 100, Decay to 100, Volume to max. 255 (careful!), press A and enjoy.
  • Go to the tracker screen, enter Play Mode © and press Play (A). You should hear a series of C Major Arps.
  • From here it is pretty much straight forward, create some instruments and start tracking.

Saving the patterns seems to work, but the instruments are not saved with it. Surely not a complicated fix.
Some other observations:

  • When the tracker reaches line 63 it does not jump back to line 1 correctly, but the playback is ok. It is just a display thing.
  • When the tracker is playing, there is still this acoustic click feedback for moving the cursor.
  • I find the autoloading on startup a bit confusing, I would prefer if it started with an empty track.
  • The B button for delete and Travel mode is maybe not the best choice, because leaving edit mode can result in deleting the note that one has just entered.

Otherwise it is pretty fine, once the saving of the instruments is fixed it is quite workable.

INIT.rbs (42.3 KB)

2 Likes

I will fix those bugs tomorrow. EDIT: I also was thinking maybe its not necessary to load the previous song automatically

Incidentally, did you know @gho that there is a PC tracker that can be used to make .rbs songs?

oops! I’ve forgotten to release it. Source will come up to github tomorrow.

1 Like

I have been waiting for this!

Ah, yes, nice to see that there is a PC tracker available, but for now I am prefering the Pokitto, because I am after that hardware sound.

Right now I have connected it to a mixer and am listening on monitors. The signal is quite strong. I have some nice square bass going here and the interaction between two instruments on the same step produces some nice crunchy timbres. Sounds very LoFi in a good way so to speak. Definately some material for sampling there too.

I also had a look around the github repository, specifically the tracker code. At least I understand a tiny little bit. Maybe the scrolling bug can be fixed somewhere between line 558 and 590 in Tracker.cpp? I guess that the screen pointer is not reset to zero after the first iteration through the pattern or something similar.

Am thinking about a little project to learn coding right now, will post more in another thread.

You Sir, talk my kind of language. You got the idea. If I had wanted clean sounds (aka “beep”) I would have stuck with square waves like Arduboy and Gamebuino. But I find the “crunchiness” of desperate attempts at saw & triangle waves more interesting.

Edit: one thing we will add eventually is sine waves and samples

Edit: and ring modulation

But lets get this thing mostly functional first

Edit : and midi support

2 Likes

Right on! It is a good strategy to get a solid foundation first and then work on the many possible improvements.

By the way, MIDI is nice, but it would be also nice and maybe simpler to allow for sync to an external analog pulse signal via GPIO, if possible. One has to make sure that one does not fry the Pokitto with too high voltages though.

1 Like

Thats what the GPIO is for. There are several analog ins

Hey @gho , @NullMember , @Hanski and others.

Here is a much improved version of the tracker

  • choice of new/load previous at startup
  • sustain fixed
  • ‘A’ toggles editmode / travel mode
  • saving instruments fixed
  • playback of empty pattern fixed, no more crash

Code updated on github

Binary

tracker.bin (89.9 KB)

3 Likes

Lo and behold! There were some bugs in the envelope & mixing functions!

We now have proper sustain and real bass

watch your ears!!

6 Likes

new binary

tracker.bin (89.9 KB)

(explanation) mixing routines were originally done with uint8_t values. Some of those still remained and although I migrated them to int32_t’s and such, the mixing routines were still written to use 8-bit values. Fixing those made envelope and pitch bend output alot better

3 Likes

I absolutely love the fact that i can just relax on my couch and try to put something together that sounds like music. I tried the tracker a few days ago but the few bugs made it kind of unusable. So far this version has been working wonderful. Hopefully I can put something together that is worth sharing. :grin:

4 Likes

If you have ideas on how to improve the UI, please share them.

Meanwhile, I will put together some routines for transforming the songs to header files and playing back the songs from inside a game

3 Likes

Great! The saving of the song now seems to work, this is a big leap for tracking on the go! However, I could not figure out how to chain Song Positions together. So far I understood that there are 30 blocks with 64 steps each and it is possible to configure which blocks are played on which track for each song position.

To be a bit more specific:
At SngPos 0, setting T1Blck = 0; T2Blck=1; T2Blck=2 would play Block 0 on Track 1, Block 1 on Track 2 and Block 2 on Track 3.
At SngPos 1, setting T1Blck=3 would play Block 3 on Track 1, etc…, this is a nice way of putting a song together.

Now I would expect that setting LoopTo to 1 would play SngPos 0 to 1 in a loop. However, this does not seem to work. It simply cycles through SngPos0. Starting on SngPos 1 would just jump to SngPos 0 and stay there in a cycle.

It is also a bit unclear to me what “Pattrn” is used for, because sequencing would basically be just assigning blocks to tracks at specific song positions which are cycled through according to LoopTo.
One could also use LoopTo per SngPosition to sepecify which SngPosition is played next, also a possibility.

The UI so far is quite nice, I especially like the A and B button feature for setting the envelope numbers and the instument preview. The muting feature is also very nice. An important next feature could be the possibility to set the block lengths. For instance, when one wanted to compose something in a 3/4 metric one would rather consider 48 steps per block or something similar.

There are some other things that could be improved but I think it is pretty neat so far.

EDIT: Maybe I am overlooking something, will try it out a bit more.

I have just tried this version and I have found another bug I think:
When the song is playing and “A” is pressed, the song should be paused but only the screen is paused, the song keeps on playing…

1 Like

Its a bug. If you Save->Load cycle, it works

1 Like

Ah, now I think I get it: Pattrn is the length of the song and LoopTo is the song position it jumps to once the song has been traversed once.
Now, if I know I need 4 Patterns (SongPos 0-3) I simply:

  • set Pattrn to 3
  • set LoopTo to 0 (will make it jump back to 0)
  • save the song and reload the song

This is indeed workable! However, reloading directly after saving does not work on my device, but I simply reset the Pokitto and reload the previous song.

With this little workaround it should be really usable also for songs with more than 1 bar.

I am not sure if a tutorial for the tracker is needed? I am feeling that I want to contribute a little bit.

2 Likes