LMMS needs coders

Anything that doesn't fit into other topics goes here!
64 posts
I am wondering thinking, if I could help, and how much time this would take me.

Read something about the devs, needing more code reviewers than actual coders.

I doubt serious I could code new stuff, but code reviewing maybe?

Were do I start ? C++ for dummies ?

I have done some coding in BASIC many years ago, but never anything in C.

10 PRINT "the computer is mad"
20 GOTO 10

run

For x is 1 to 200 next X or something like that . :P
C++ is quite different and strongly typecasted, compared to simpler interpreted languages like Python and Basic. While I cannot help you with C++ courses, I am warning you of this.
If you have a lot of time, then maybe consider getting used to learning (or even reading) a slightly more intuitive strongly typecast compiled language like Java before trying to write in C++. There is a lot of syntax, and an unusual way of handling things compared to basic. It could make your transition less daunting. However, with the right resources, you may not need this.

Personally for me, the best approach works when I learn basic operations like printing, input, and mathematical operations, then embark on my own personal project (like a Calculator) and look to the internet for help whenever needed (this is where, in Java, I learnt about character input, methods, and usage of next instead of nextLine, etc).
I have found this isn't a very conventional way of working, but this means I have no genuine clue about what resources are good for learning. It seems different sites present some information more clearly when I need it.

However, looking at my most used java resources alongside what they teach us in school, the following are the corresponding C++ resources, if available.
1. https://www.w3schools.com/cpp/default.asp I've felt that, in the corresponding java course, a few of concepts were not really necessary, or were broken-down to simplify to the point learning wasn't actually becoming simpler. But it seems like a very useful and very well-structured resource to learn. This simplification could also be useful in a lot of cases, at least with my style of learning.
2. https://www.programiz.com/cpp-programming In the corresponding java course, it feels too much like a course structured for me to go through in order and learn it from the start, and I get this feeling that, with my spontaneous preferred method of learning, I would have a lot of trouble understanding some of the language here, unlike previous one where I could randomly move to method because I suddenly had to use it, and still understand. I also feel like it generalizes a bit too much, by presenting what something's actually supposed to be, then explaining it in great detail, instead of presenting the most common case, then explaining what it means and how others can be used. I prefer the other way around, as useful as the former is. This might need you to, if you're learning, be more careful and ensure you've either read the previous chapters, or know what the new and unusual words mean.
3. Last but not the least, there will be a C++ subreddit. It probably has a wiki. Take a look through the wiki. Maybe do it after you learn the concept? Or while you learn it? It's a useful set of info presented concisely. Maybe check the help/tutorials/questions part of the wiki, because there you could find some concisely presented info on how to avoid easily possible errors, etc. In java, it helped me solve a weird and easily replicable problem, and presented my answer very cleanly.

All the best, GPS. Do keep us in the loop about the resources you pick!
As far as I know, LMMS is wrtitten in C.
Sounds to me that learning yet another programming language will only confuse me ?

Already need to forget about basic, there are no line numbers in C.

Not sure about downloading the source code yet, I am worried it will overwhelm me.
Gps wrote:
Thu Mar 17, 2022 2:50 am
As far as I know, LMMS is wrtitten in C.
Sounds to me that learning yet another programming language will only confuse me ?

Already need to forget about basic, there are no line numbers in C.

Not sure about downloading the source code yet, I am worried it will overwhelm me.
*C++. LMMS is mostly written in C++.
Don't learn java then. C++ directly will work! Just be careful of syntax, and you should be fine.
The source code will probably overwhelm you. I suggest you sift through a few resources first, learning basic C++. Then go to the lmms github and look at simple fixes by other people, analyse them and understand what they did, what the problem was, and what the syntax means. That seems like a sensible approach.
Take a look around the github, too. "Good first issue" tag means that the issue is a simple fix and idea for new coders to the program.
https://github.com/LMMS/lmms
(Then maybe you should figure out compiling LMMS from source... Then try to create the fix you want, and learn your way around github a bit, and add a pull request.) But all of this is after you learn and understand.
Already tried to compile LMMS myself a few time. I remember once successful and once failing.

Talked to the devs, but they did not understand why it failed either.

The program I wrote in basic, calculated a two stoke exhaust pipe.
Formulas from a motor magazine article by Frits Overmars.
I don't think I can help you beyond that, since I myself know very little about programming. However, I can direct you to the LMMS Discord, which is where the devs usually are- they're not on the forums, you'll have noticed. There, you can ask for help compiling, request resources for learning C++, etc. They can definitely help you a lot more. And there, you can also discuss more easily and directly.
Good luck, GPS, one needs lots of it with programming languages :]
Gps wrote:
Thu Mar 17, 2022 2:50 am
As far as I know, LMMS is wrtitten in C.
Its c++17, but with a UI-middlelayer named qT.
qT is a daunting beast on it own..
But lets get to the core.. of this!
Monospace' resources are just fine, but from a time where books was the way we learned stuff -so is no more ..!
Learning c/c++ the fastest and absolutely easiest way is (tadaaaaaaa! YOUTUBE
There are 100'ts if not 1000'td of online teacher-video for c/c++
The number of channels are ridiculous!
So is c++ 'hard'
No, it is dumb!
The stuff you are going to wrestle most with, are idiotica ! Stupid stupid bAAAAAAd descissions some of witch has been phased out, others just persist
Example
* asterix is used in 3 different meanings ONLY depending on placement adjacent to next or previous whitespace, it has made grown harried stonecold programmers CRY.
The without doubt worst scenario, is old existing code, where noone has cared for the rules...
Yesssssssssss
You guessed it ..
LMMS' is that worst scenario.
A dogs breakfast
Messy- and not in the great argentine way..
One thing that really put peeps to either a test or the funnyfarm, is the cpp-environment
Cpp needs to be compiled to machine-code
Linux comes with an internal cpp-compiler, but that mean that you need to run through cmd -eg CLI, it is something that just need to be learned, then it is not such a big deal.
The last thing that should be remembered is
ITS LOADS OF FUN!
Getting LMMS to do something new is FUN!
Less 'fun' when the board-of-directors declines the new stuff
But jump into it!
Hit youtube and search for beginner-in-c++
The respond is as said overwhelming

Finally for anyone that would like to use windows..
For LMMS -you cant -The complexity is ...Absurd!
But learning or just playing with c++ you cán, and this tool will let you completely of the hook, when it comes to that pesty environment:
https://www.onlinegdb.com/
Is a complete c++ online ready to go environment with a sexy code-editor including syntax-highligt and several other smart tools.
VERY useful for the beginner! ALSO for linux, if the build-in cpp-compiler turns you off

Want to see a piece of code?
This is what i work on right now. It strum notes

Code: Select all

void PianoRoll::strumNotesUp() //top/|down
//Method for chord-strumming.
//The strum-distance is the chosen Q-value

{
  if( !  hasValidMidiClip() )
    {
        return;
    }
  int notesInChord = 0; //initializations
  int index = 0;
  m_midiClip->addJournalCheckPoint();
  NoteVector notes = getSelectedNotes();//selected notes only
  notesInChord = notes.count();//how many notes are in this chord
  index = m_quantizeModel.value(); //uses UserSet Q-Value in combobox
                                       //This value is position, so it need to be qualified
                                       //to real piano/roll values
  int strumSz = returnStrum(index); //size of note movement;
  int strum = strumSz;//keep orr. value of selected strumming
  bool firstDone = false;//first note should not be moved
 
  for( Note* n : notes ) //for each selected
  {
  if( firstDone ){
    n->setPos( n->pos() + strumSz );
    strumSz += strum;
    if (index >= notesInChord) continue;}  
  firstDone = true;
  }
   
    qDebug() << "notes UP" << notes.count();
    m_midiClip->rearrangeAllNotes();
m_midiClip->updateLength();
m_midiClip->dataChanged();
    update();//Project is changed. Update
    gui->songEditor()->update();
    Engine::getSong()->setModified();
   
}
Thank you so C++ tutorials here I come.

Looking at that piece of code, reminds me of something bothering me.

The code is not that complicated, but coming up with the idea, and how to achieve it, probably is. :P

But baby steps first, learn C++.

Been talking with LMMS devs before, and I know about the, dogs breakfast.

Like he called it, a lot of stuff in LMMS is written to just work, ignoring any expand-ability or coding standards.

That's something I am thinking about, fix old stuff, change it to the LMMS standard.
(Then loose hours, in figuring out why it stopped working :P )

This reminds me of a topic on the Linux musicians forum.
I asked why they did not change ALSA, improve it, but instead keep adding layers on top of it. Pulse audio, Jack, Pipewire.
The answer I got, was shockingly simple.
Nobody really understand all ALSA code, which is poorly documenting both inside and outside the code. (no comments)
So everybody is basically re inventing the wheel over and over to first figure out alsa.

For those wondering ALSA?
Advanced Linux Sound Architecture. The sound producing part of Linux.
A web software service is an internet application that provides functionality to numerous applications. A typical web software service is a collection of APIs that allow you to send data from one system to another. Web services use SOAP over HTTP protocol to enable communication. They are implemented using low-cost internet. A web provider creates and makes a standardized, customizable, and scalable web application available to clients. A client is an application that requests the function of a specific server. The client is a "requestor" and the broker provides access to UDDI, which allows the client application to find and invoke a web service https://mlsdev.com/services/custom-software-development.
mikeoser wrote:
Fri Mar 18, 2022 1:11 pm
Thanks for this interesting information!
+
Gps wrote: Thank you so C++ tutorials here I come.
Found this:
Good place to start.
64 posts