What language would you recommend me to start diving into?

Programming applications for making music on Linux.

Moderators: MattKingUSA, khz

Post Reply
User avatar
maghoxfr
Established Member
Posts: 103
Joined: Mon May 10, 2010 7:37 pm
Location: Uruguay

What language would you recommend me to start diving into?

Post by maghoxfr »

I have a question, but first I'll give a brief intro.

I've been using linux (Ubuntu) for about a year and a half and it completely changed my way of aproaching software. Open source philosophy is great and I would love to contribute something other than my opinion on software from a point of view of an average user.

I really don't know much about development but I would love to get some basics to (who knows...) do something useful in a future.

My question is, what language do you recomend to start with? Or what language would allow me to get the most out of most music apps on linux?

Those questions might not make much sense, but it just shows how lost I am.

Thanks
User avatar
MattKingUSA
Moderation Services Senior Administrator
Posts: 795
Joined: Fri Mar 21, 2008 4:01 pm
Location: United States
Has thanked: 52 times
Been thanked: 38 times
Contact:

Re: What language would you recommend me to start diving into?

Post by MattKingUSA »

QT seems to be popular. ??

-Matt :D

brummer

Re: What language would you recommend me to start diving into?

Post by brummer »

QT isn't a language, it's a GUI ToolKit :)
Most audio app's are written in C or C/C++ some are written in python.
If you relay like to dive into the Audio Application Development and write or edit jack audio applications, I guess you cant do it without learning C/C++. jack itself is written in C, were jackdmp is written in C++.
Additional you need to choose a Gui Tool Kit when you would give your app a face.
I prefer GTK+ /gtkmm over QT, but indeed most ppl seems to prefer QT.
User avatar
maghoxfr
Established Member
Posts: 103
Joined: Mon May 10, 2010 7:37 pm
Location: Uruguay

Re: What language would you recommend me to start diving into?

Post by maghoxfr »

brummer wrote:QT isn't a language, it's a GUI ToolKit :)
Most audio app's are written in C or C/C++ some are written in python.
If you relay like to dive into the Audio Application Development and write or edit jack audio applications, I guess you cant do it without learning C/C++. jack itself is written in C, were jackdmp is written in C++.
Additional you need to choose a Gui Tool Kit when you would give your app a face.
I prefer GTK+ /gtkmm over QT, but indeed most ppl seems to prefer QT.
Thanks man!

I know it's too much to ask, but I'd like to learn the language that allows me to do the widest range of things possible, if that exists. Audio apps, but multiplatform apps too, etc.? I think your advice is sensible. I'll see what I can do.
TraumFlug
Established Member
Posts: 16
Joined: Sat Dec 26, 2009 2:07 am

Re: What language would you recommend me to start diving into?

Post by TraumFlug »

yep, look into c/c++. long way to go for a selftaught, but possible. performance (critical for realtime audio) is unmatched, when you know what you're doing. well, only by assembly-language, coded by someone who _really_ knows what he's doing.

but, if you are very new to programming, maybe try to work with python, first. is a bit like c, but said to be easier to code, more forgiving on errors, and better for testing stuff (no compiling, it's "interpreted" live). then, when you think you know some tricks, jump on to c/c++ with its strictnesses (it's just a bit nearer to how the cpu works, but you have to "obey" that to be able to use it).

when you're keen about cross-platforming, take care what libraries you use in your projects. the base languages (c(++) and python) will probably work on any machine, but depending on the operating system etc you need to watch out that the libs are available for any system you want the program to run on. there's also some handy libs that make out an unique interface for whatever subsystem (one example: "SDL" serves for graphics, input, sound ... access for game-style applications for win,mac,linux. one code, runs on any platform) to wrap up os-specific stuff, so the same code will run on, say, win, mac and linux. only other choice is sometimes to make different versions of parts of your program, each serving some special os/machine. and yes, you'll definately want to use libraries and not do everything at your own, it's near to impossible, expecially for unexperienced people.

also, who wants to write must learn to read first; the opensource-world is like a huge repository of programs ready to study programming...i.e. I've learnt c that way, first go through some tutorial explaining the basics (with their silly example-programms), then read through some programs in that language and try to understand them, how they work and such. that way you'll learn about code design/structuring tricks, and different coding philosphies from the start up! no free tutorial, and even most books I've seen yet would teach you such.

good luck!
User avatar
maghoxfr
Established Member
Posts: 103
Joined: Mon May 10, 2010 7:37 pm
Location: Uruguay

Re: What language would you recommend me to start diving into?

Post by maghoxfr »

@TraumFlug

Thanks a lot for the great insight!
dewdrop_world
Established Member
Posts: 36
Joined: Mon Aug 09, 2010 10:17 pm
Location: Guangzhou, China
Contact:

Re: What language would you recommend me to start diving into?

Post by dewdrop_world »

Another way to get your feet wet is SuperCollider. In SC, you can learn about programming methodologies without simultaneously having to learn how to calculate sample-by-sample DSP. Neither is especially easy, and if you try to do both at the same time, it may be a lot to expect.

Say, if you want to make a sample player, SC would let you reconfigure the synthesis interactively and work out, by experimenting, what's the best way to control pitch, envelopes, filtering, effects etc. Then, once the design is right, you could translate the design into C++ and I think that would be easier than trying to work out the design and the low-level implementation at the same time.

One drawback is that it means learning another language. But the advantage is still that it's a lot easier to write DSP in SC than to write the same in C++.

Or, if your application will be GPL, you could use scsynth for the DSP and write a front-end in whatever language you choose. See, for example, Eisenkraut (an audio file editor written in Java, which uses scsynth for audio).

FAUST is another way: you write a high-level description of DSP and compile it into C++ code for a variety of plug-in formats, including IIRC standalone Jack apps. It does support some user-interface widgets.

James
Post Reply