Author Topic: uTracker, a noob's toy tracker project  (Read 1417 times)

Offline immortalx

  • Shy artist
  • Posts: 5
uTracker, a noob's toy tracker project
« on: August 05, 2019, 16:52:13 »
Hey everyone!

A bit of background: Long time OpenMPT/Modplug user here, not a tracker-junkie but I've been familiar with trackers since the Amiga era. I'm not entirely new to programming as I've used almost every 8-bit BASIC flavor in my youth and some VB6.0 later on, but have done nothing serious, never learned proper programming, and never moved to a more standard/advanced programming language.
My son is now at the uni learning computer-science and has convinced me to try and learn some C++. I was VERY scared at first, but it seems I'm slowly getting somewhere. I've made an attempt in the past to write a very simple tracker in VB6 and failed miserably. And not because of the language, but because I've never programmed for prolonged periods and whenever I had the "itch", I had to go back and re-learn the basics.
Now I'm trying to write this in C++ and I'm already 2 months in, so that's progress for my standards  ;D

Anyway, this is a very-very basic tracker-like program which is mostly featureless, but at least it's being able to play-back some notes. Many things are not implemented yet and I just have placeholders for them. Most basic of the missing features is, sadly, no effect commands which I don't know if and how I'm going to make them work. There's a very crude file format that allows you to save/load your work, but it doesn't contain the samples and they are just referenced as absolute paths. It's also very CPU intensive (esp on play) and should crash a lot  ;D

Finally it's windows only, sadly, because I'm too new to even start thinking about cross-platform.
My deepest appreciation to the developers of our beloved OpenMPT, which has managed to stay alive and kicking, and I cannot begin to imagine the amount of work that was put into it!

Download it here:

Offline Gerirish

  • Shy artist
  • Posts: 9
Re: uTracker, a noob's toy tracker project
« Reply #1 on: August 05, 2019, 18:25:55 »
Creating a new tracker is like reinventing the wheel.

A different approach is to ask SagaMusix and/or manx (see below) if there are coding tasks for your level of knowledge where you can help with.

Means you would start to understand the architecture of a bigger C++ project (= OpenMPT) with the possibility to contribute to an already established and well-known tracker.


Offline Saga Musix

  • OpenMPT Developers
  • *****
  • Posts: 6,833
  • aka Jojo
    • Download music, samples, VST plugins: Saga Musix Website
  • Operating System: Windows 10 x64
Re: uTracker, a noob's toy tracker project
« Reply #2 on: August 05, 2019, 18:45:34 »
I think that's a bit of a harsh reply. There are many reasons for creating a new tracker, including:

1. For the learning effect. A new tracker brings many valuable insights to the implementer, even if it doesn't grow beyond the alpha stage. In particular, implementing your own tracker teaches you how a mixer works, how sample interpolation is done, file (de)serialization and many other things. If you just look at someone else's (my) code, the learning effect will be much lower, in particular if there is no need for rewriting that code. OpenMPT is a complex piece of software and getting your feet wet in C++ with the OpenMPT code might really not be the best way to learn the language or learn about trackers in general. For someone who's new to the matter or the language, OpenMPT's code will most likely be even more overwhelming now than it was for me eleven years ago.

2. For realizing something that cannot be done (or would be complicated to do) with other trackers. There are many interesting features that even I would like to see but OpenMPT's concept locks us into a very specific corner which prevents certain things from being implemented, or at least makes it incredibly hard and would make the code unreasonably complex.

3. Or simply because you want a challenge.

In the end, it's their spare time, let them spend it the way they want. Often new trackers can bring a fresh breeze of new ideas without the existing trackers couldn't evolve. As an OpenMPT developer and contributor to Schism and MilkyTracker, I certainly do not want us to drift into a tracker monopoly.
ยป No support, bug reports, feature requests via private messages - they will not be answered. Use the forums and the issue tracker so that everyone can benefit from your post.

Offline Gerirish

  • Shy artist
  • Posts: 9
Re: uTracker, a noob's toy tracker project
« Reply #3 on: August 05, 2019, 18:53:23 »
Sorry, if my reply came across as harsh.

You are right with everything in your reply.

Only speaking for and knowing myself, it wouldn't give me a purpose to write a big piece of software such as a tracker. Instead I would start out by joining an already existing project by working on small fixes, improvements.....

Offline immortalx

  • Shy artist
  • Posts: 5
Re: uTracker, a noob's toy tracker project
« Reply #4 on: August 05, 2019, 19:11:56 »
@Gerisish You are right in that this is re-inventing the wheel, in fact a very not round wheel in my case  ;)
But, believe it or not, it is very satisfactory for an old guy like me to have a little learn-by-mistake coding project, instead of watching programming tutorial videos.
My intention is not to make a tracker as a replacement for other trackers, of course. That would be very rude of me to even think about! And regarding your suggestion about contributing to the OpenMpt codebase, I'll just say that my level of knowledge is very close to zero  :P

@Saga Musix, thank you very much for the reply! Your points make absolute sense, because indeed I mostly wanted to toy around with ideas, and in the process try to learn about the language .

Offline TheRealByteraver

  • Inspired artist
  • **
  • Posts: 57
  • Operating System: Windows 7 Pro 64 bit
Re: uTracker, a noob's toy tracker project
« Reply #5 on: November 17, 2019, 09:21:45 »
Hi! Just wanted to say I like the aesthetic of your tracker so far :). It seems you got pretty far for somebody that is only two months into C++, that is quite impressive, since Windows programming is not necessarily easy, especially in C(++). For anything graphical I personally use Chili's directX framework ( Chili built a community for aspiring c++ game programmers, with youtube video's, a forum, discord channel etc. The video's are really good and fun to watch, I wholeheartedly recommend them.

While rebuilding your own ModPlug Tracker equivalent is indeed daunting and not really useful, you should be able to create a fun little tracker for .mod files only for example. As .mod files do not implement instruments, this should be an achievable goal even for you. Simplicity has its own appeal, and a small tracker that does that one task (.mod tracking) very well could be a nifty tool indeed. And there is always the satisfaction of using your own tools :D

Do not be intimidated by the effects, start with implementing one, and before you know it you'll get half of them working. The documentation of ModPlug Tracker is a great reference, and if you're really stuck there is always the forum(s).

Offline phanoo

  • Inspired artist
  • **
  • Posts: 55
Re: uTracker, a noob's toy tracker project
« Reply #6 on: January 19, 2020, 22:38:05 »
I like a lot your interface ! It has a very modern look.
Useful reasons to create a tracker from scratch are multiple, it's never useless since you'll learn a lot and there will be probably people using it because they like the interface or the features more than what's available elsewhere.

I started creating FM Composer for fun which is a tracker with a built-in FM synthesizer, it ended up being used by quite a few musicians, some of them creating entire albums with it...