LMMS needs coders

Anything that doesn't fit into other topics goes here!
69 posts
amaretosdefractor wrote:
Thu May 12, 2022 8:28 pm
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)...
viewtopic.php?t=35311#p78649
I shouldn't make posts long enough to copy off, should I?
This is yet another spam bot.
Monospace wrote:
Fri May 13, 2022 2:57 am
This is yet another spam bot.
Looks like it, but just report the post. User will have to prove ID now -Warned.
musikbear wrote:
Fri May 13, 2022 3:50 pm
Looks like it, but just report the post. User will have to prove ID now -Warned.
So sorry! Will do. Thanks.
Okay, so I know this topic kind of went in a different direction (technical specifics of coding under linux and such) and is a little old, but I thought I might be able to share some personal experiences. I'm speaking as a hobby programmer with experience in many BASIC dialects, as well as 2 years in Python and VisualBasic (and a little bit of batch and Assembler on the side). Not trying to brag about it, that's just the basis for my ... "predictions" and such.
Gps wrote:
Wed Mar 16, 2022 10:18 pm
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 only know C and such on a very basic level, but from what I understand it's of course one of the more widespread and powerful languages out there, but one that also comes with a steep learning curve. Just learning the concepts of programming and the specifics of their application in a language isn't everything though, there is a lot that comes from experience. An experienced programmer might be able to understand code at a glance, that a novice might take a nocitcably longer time to comprehend despite a complete theoretical and practical understanding. I learned Python in a out a week, but it took a month until I had the capabilities to work on some of the projects I was aiming for.

Coming back to the aspect of time: I would say nothing less than a year. That might sound like quite a lot, but as I said, I learned the basics of Python in a week and got to grips with it in a month but learning all the iintricacies of the tools I needed, developing methods for certain things and generally gaining experience took a lot longer. One can start coding fairly quickly but it takes time before one gets a good hold of their tools. And considering we're talking about code reviewing here: Reading someone elses code is something quite different from coding yourself. When you code, you just have to translate your intent into code. When you read someone elses code, you have to derive their intent and the apporach they took towards it to understand it. I was comfortable with writing programs from day one, but my chanches of understanding someone elses source code were slim to none. Even after that year, I wasn't a fluent reader of other peoples work.
Gps wrote:
Wed Mar 16, 2022 10:18 pm
I doubt serious I could code new stuff, but code reviewing maybe?
Assuming this would not just be a simple spellcheck (most compilers and IDEs do that kind of stuff already automatically) this would require an understanding of a programs operation. So you'd need the knowledge of a C++ programmer to be a C++ reviewer.
Gps wrote:
Wed Mar 16, 2022 10:18 pm
Were do I start ? C++ for dummies ?
I've had good experienes with literally these books actually. Of course there's always tutorials for everything online and there have been plenty of ressources shared in this thread already. If you want a dummies book, I can only give glowing recommendations for them in general as a starting-off point, but I can't speak for their C++ one in particular.
Gps wrote:
Wed Mar 16, 2022 10:18 pm
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
As already discussed in the thread, C++ is quite different from BASIC. Line numbers were never very convenient, because they lead to "spaghetti-code": GOTO instructions everywhere without any sense of easily understood structure (just like a pile of stringy noodles - that's where the name comes from). Many programming languages base their structure on loops and conditions rather than numbers. Infact, most variants of BASIC like QuickBasic or TI-BASIC do this as well, it's really only the Commodore era BASIC, that is solely reliant on line numbers.

How you want to go on your programming journey would of course mainly be determined by the end goal. If you just want to get into it first and are comfortable with BASIC, there are, as mentioned, improved variants of it with better capabilities. If your end goal is C++ you could of course start with it immediately - or slowly ease your way towards it by first learning other languages. I for example grew up with Scratch (a really easy, educational, point-and-click programming tool), moved to Commodore-BASIC, then QuickBasic 4.5, Microsoft VisualBasic, Python and only then started aiming for something a lot more challenging, in my case x86 Assembler. Which I can't recommend (it's cool but not very practical) and is definitely harder to work with than C++ of course.

Again, I'm not trying to brag (I was never too clever or brilliant with any of that stuff and it was a lot of banging my head against a wall until I understodd it), I've never coded in any professional capacity, but if you've got any questions I'd be happy to answer them to the best of my abilities.
I tried many times, all failed, I know the source code used qt and c++, when I trans it to codeblocks project by cmake, faild, I don't know how to get into a project UI in IDE. Anyone can tell me?
xk_music wrote:
Tue May 21, 2024 4:34 pm
I tried many times, all failed, I know the source code used qt and c++, when I trans it to codeblocks project by cmake, faild, I don't know how to get into a project UI in IDE. Anyone can tell me?
Doubt codeblocks will work.
MSVS community-ED is the only one i have hear4d of being able to work in windows, but it is tricky.
Rossmaxx has done it successfully, i have not been able to.
I have had success with a virtual box inside win10 with linux Mint, and i have posted my cMake for that
IF you want to use a VB DO as in absolutely DO make it at LEAST 100 gig! Do NOT believe the claim that you can "extend the size as needed" -You CANT, and the VB destroys itself after a while
cMake:
Hi,

I don’t know what Codeblock is but I know what C++ is. Fact I’d describe C++ as an “overly featured language”. To the point that a lot of C++ projects limit themselves to use only a subset of the language, just by convention, in order to avoid an awful mess.

While not a C++ developer I follow the development of LMMS for quite a long time now (nearly from the beginning actually). I use to build the master branch quite often, and the most useful role I have so far is reporting bugs, and I must say I’m very pleased to see a lot of them fixed rapidly. it seems the development is very active since a few years (I’d say 3 or 4) and that is fucking amazing. I’m astonished and greatly satisfied to see all the recent development, especially the native plugins (Compressor, Equalizer, Spectrogram, etc…). The work on automation curves, piano-roll, and all is fabulous.

About QT, for what I know, a lot of Qt-code has been ported to use lower level libs for efficiency. It looks like Qt has to be reserved to the UI part. As far as I understand a very hard work has been done to separate the sound processing part from the UI part, because it was kind of intricate originally.

OK, so that was my to cents.

I profit this post to leave here the Bash script I use to build LMMS from the Github master branch easily, maybe it can help getting, if not coders, more beta testers. It builds LMMS twice, once as "Release", and one as "Debug" (with symbols so it can be ran using gdb and provides helpful backtrace in case of bug spotted).
The script just does: update the source, configure, build, install (assuming the user running the script is permitted to run a `sudo make install`).
What it does not: installs the prerequisites.
It works at least on Debian 12 but should work on other distros too.

Code: Select all

 #!/bin/bash

# Steps
# - update source
# - configure Debug and Release
# - build Debug and Release
# - install Debug and Release
# - purge oldest build directories (purge builds older than two months)


declare -r src_dir='/usr/local/src/lmms'
declare -r release_build_dir="${src_dir}/build-release-${EPOCHSECONDS}"
declare -r debug_build_dir="${src_dir}/build-debug-${EPOCHSECONDS}"
declare -r release_install_dir='/usr/local'
declare -r debug_install_dir='/usr/local-debug'


init() {
    cd "${src_dir}"
}

update_source() {
    /usr/bin/git pull --recurse-submodules
}

configure() { # 1: type of build
    case "${1}" in
        debug)
            mkdir "${debug_build_dir}" 2>/dev/null
            cd "${debug_build_dir}"
            rm -fr *
            cmake -DCMAKE_INSTALL_PREFIX="${debug_install_dir}" -DCMAKE_BUILD_TYPE="Debug" ..
            ;;
        release)
            mkdir "${release_build_dir}" 2>/dev/null
            cd "${release_build_dir}"
            rm -fr *
            cmake -DCMAKE_INSTALL_PREFIX="${release_install_dir}" -DCMAKE_BUILD_TYPE="Release" ..
            ;;
        *) echo "Unknown type of build: ${1}" >&2 ; return 2
    esac
}

build() {
    case "${1}" in
        debug)
            cd "${debug_build_dir}"
            make -j13
            ;;
        release)
            cd "${release_build_dir}"
            make -j13
            ;;
        *) echo "Unknown type of build: ${1}" >&2; return 2
    esac
}

do_install() {
    case "${1}" in
        debug)
            cd "${debug_build_dir}"
            sudo make install &
            ;;
        release)
            cd "${release_build_dir}"
            sudo make install &
            ;;
        *) echo "Unknown type of build: ${1}" >&2; return 2
    esac
}

purge() { # 1: time limit (purge older than N days, 60 days if unspecified)
    find . -maxdepth 1 -type d -mtime +"${1:-60}" -regextype egrep -regex '^\.\/build-.*$' -exec rm -vfr {} \;
}

check_installation() {
    file "${release_install_dir}/bin/lmms"
    file "${debug_install_dir}/bin/lmms"
}

init
update_source && {
    configure debug &
    configure release &
    wait
} && {
    build debug &
    build release &
    wait
} && {
    do_install debug &
    do_install release &
    wait
}

purge 60
check_installation
Gps wrote:
Thu Mar 17, 2022 11:03 pm

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.
This is not "re-inventing the wheel" imo, this is following the Unix philosophy : having tools that do only one thing but do it well. ALSA speaks to the hardware, the upper part of audio which consist of managing the routing and such, may be handled by another tool (Jack, Jack2, Pulseaudio, Pipewire), this is not a problèm. Fact is ALSA can do a lot of routing and is very capable of handling multiple audio app at the same time, but: 1) it can’t do it dynamically (needs to reload, and so, stops rendering the sound), 2) It requires an absolutely cryptic configuration file to do such very obvious thing like, for example, to record the audio while it is playing it (!). A thing I was able to do quite easily, intuitively with Jack, but could have never figured how to do it by myself with ALSA only (I hopefully found a better skilled than me dude who had the good idea to write a clear explanation and configuration example. Thx to him (I’ll try to find the link if someone needs it but not tonight…).
I use LMMS with ALSA directly because I often use it as a “full featured standalone DAW” but I also use Jack from time to time for some other nice software, which are fun when combined, and for some others which do not talk directly to ALSA anyway, yes SooperLooper, I look at you !

The question I wanted to ask to you @Gps, if by any chance you read this: How Pipewire is going for you? Do you still use it?
I am on pipewire, and have to admit I am happy with it.

Most stuff just works, but am using a special repository for openSUSE these days.

Geekos Daw.

It does some audio fine tuning stuff, and has a fully working LMMS.

Also am using a focustite solo, which was kinda plug and play. 8-)
69 posts