lkubuntu

A listing of random software, tips, tweaks, hacks, and tutorials I made for Ubuntu

How to set up WineASIO

Step 1: Install WineASIO

If you use ubuntu, run this in a terminal:

sudo apt-get install software-properties-common wget
sudo add-apt-repository ppa:kxstudio-debian/kxstudio
sudo apt-get update
sudo apt-get install kxstudio-repos
sudo apt-get update
sudo apt-get install wineasio

If you use arch linux (like real men do):

Add the Arch Audio repository, then run in a terminal:

sudo pacman -Sy wineasio

Step 2: Register WineASIO

If you have a 32-bit WINE prefix, or you have a 64-bit one, and you want to run a 32-bit ASIO application (e.g. a DAW), run this:

regsvr32 wineasio

If you have a 64-bit WINE prefix, and you want to run a 64-bit ASIO application:

wine64 regsvr32 wineasio

If everything went smoothly, you should see a message similar to:

Successfully registered DLL wineasio.dll

However, you may receive:

Failed to load DLL wineasio.dll

In my case, the reason why this message occurred, is that wineasio.dll was installed to the wrong location. I had 2 problems, actually. It was first installed to /usr/lib/wine, not /usr/local/lib/wine (I have a custom-built version of WINE), and second, even if it had been installed to /usr/local/lib/wine, it wouldn’t have worked, because, in my case, WINE loaded 64-bit libraries only from /usr/local/lib64/wine, and 32-bit libraries only from /usr/local/lib/wine. The package had installed the 32-bit version of wineasio to /usr/lib32/wine, and the 64-bit version to /usr/lib/wine.

Try moving the wineasio .so’s to these places:

  • 64-bit wineasio .so: /usr/lib64/wine
  • 32-bit wineasio .so: /usr/lib/wine

Then try again. If you still have problems, leave a comment below, and I’ll try my best to help =)

Step 3: Setup JACK

WineASIO uses JACK as the backend for the audio, so, not surprisingly, JACK has to be setup correctly for WineASIO to function correctly. I wrote an article a while back about how to do this.

Step 4: Profit!

It’s that simple! Now all you have to do is to load up the application you want, and set the ASIO driver to WineASIO =)

Creating an Orchestral track under Ubuntu REDUX – Part 1: Choosing a DAW

So, I originally thought this series was useless, and, well, since I didn’t cover some of the more important sections, it pretty much was =P

But one person asked me to finish it, which was the first time I saw that it was useful, to at least someone, so I decided maybe it’d be a better idea if I make a redux of it, because the first one had many issues (and I’ve learned a lot since then).

One of the issues was that it took LMMS as the base DAW (Digital Audio Workstation), which, as I have learned since, is definitely not the best DAW for orchestral music production (IMHO). Since I have tried a couple of DAWs, I’ll share my thoughts on each one =) Next part will focus on setting them up.

  • LMMS:
    • Pros:
      • It’s somewhat easy to install (you might need to compile it though)
      • Linux-native
      • Very intuitive at first, and good for beginners
    • Cons:
      • Very buggy (minor bugs, but still annoying)
      • I personally hate the automation
      • Multiple MIDI inputs for a VSTi is very hard (I haven’t managed to ever make it work)
      • VSTi’s take a loooong time to load (though this is most likely an issue with having a linux-native DAW using windows VSTi’s)… especially Kontakt, which is probably the most important VSTi you’ll need for orchestral music production
    • Conclusion: Good for beginners, not good for orchestral music production
  • QTractor:
    • Pros:
      • Simple
      • Minimalistic
      • Logical
      • Intuitive
      • Consistent
      • Fast (the program is fast)
    • Cons:
      • More work to install and setup than LMMS (especially with setting up windows VST support)
      • Buggy
      • Crashes a lot
      • Piano Roll is pretty bad (IMO)
      • Not as pretty as most others (though, tbh, that isn’t too important XD)
      • Though the workflow is very consistent and intuitive, the word “fast” would definitely not be the best to describe it
      • I have never been able to successfully load a windows VST on it yet (when I was actually able to _find_ the VST, it crashed while loading it)
    • Conclusion: I like this one a lot, but its cons make it only really useful at a conceptual stage (IMHO, at least)
  • I will skip a lot of other Linux-native DAWs, because I haven’t had enough time with them to give a somewhat decent Pro/Con list to. However, I find that OpenOctaveMidi – though it never worked for me – seems to be (from the features list) the most promising linux DAW so far (sadly, it hasn’t been updated in 2 years).
  • REAPER:
    • Pros:
      • Free (kinda … the trial never really ends)
      • Well maintained (updates pretty much every week or 2)
      • Works almost flawlessly under linux
      • Very customizable
      • Piano roll has a _really_ useful time-stretching feature (when multiple notes are selected, CTRL+Drag on the edge of any of the selected notes, and it will time stretch it)…. something I really miss with other DAWs
    • Cons:
      • It isn’t actually free… but you can keep on using it as long as you like for free (the trial isn’t enforced)
      • (I’ll have to update this later… I know I’m missing a few, but I haven’t used it for so long that I forget >.<)
      • It might have frozen a lot, that may be why I don’t use it anymore (as I said, I forget)
    • Conclusion: It’s great, but I forget what I didn’t like about it…  TODO: FIX THIS!!
  • Ableton Live:
    • Pros:
      • As its name suggests (“Live”, not “Ableton” =P), it’s great for live performances, due to its really neat session view (basically, you can put a lot of 1 bar patterns in it, then play them at different times)
      • Its macro feature is _really_ useful, as it basically (AFAICS, I’ve never used it, but I’ve seen people use it) an automation that automates multiple other automations. Though its use in orchestral music is not that prominent, it’s very useful in electronic music (and since my style usually has a mix of both electronic and orchestral, I would use this a lot, if I still used Live).
      • Automations are really well made
      • CTRL+Drag. Seriously, it’s probably one of my favourite features from it… so simple, but so powerful (while dragging moves a clip or note, CTRL+Drag will duplicate it and move the duplicate… very useful!!)
      • Close integration with Max, a tool that kind of lets you create your own synths or effects
    • Cons:
      • Midi CC automations are terrible, and sometimes don’t even work! This is the main reason why I don’t use it, as in orchestral music, Midi CC automations are pretty much one of the most important things you’ll use.
      • The display is very buggy under linux
      • The Midi editor needs work (it’s workflow is rather slow)
      • It doesn’t bridge VSTs. So if you’re using the 64-bit version, you can’t use 32-bit VSTs.
      • It crashes a lot
    • Conclusion: Though it’s really great for electronic music, it’s not so great for orchestral music
  • Studio One:
    • Pros:
      • Best DAW for Midi CC automation that I’ve used so far (it works both on clips, and on the timeline!)
      • Automation is pretty good (you can create square, triangle, and sine waves really easy on it)
      • Very intuitive (I picked it up really quickly, compared to nearly all other DAWs I’ve used so far)
      • Its plugin browser is also really neat (you can organize it by vendor, category, folder, or just flat)… best one I’ve seen so far
      • Close integration with Melodyne, an apparently really cool audio editor (I still haven’t figured it out though XD)
    • Cons:
      • The display is very buggy under linux (sometimes the timeline time vertical bar indicator [for lack of a better word] doesn’t even show! Also, the rectangle selection doesn’t show either)
      • It’s buggy all-around (I don’t think this is linux-related)
    • Conclusion: Best DAW I’ve used so far for orchestral music production, but it’s very buggy!

I would have included the setup part in this one, but I realized that it would have probably taken 2 more articles (plus this one), so I decided to just give a quicker article at first, to kick off the new tutorial “series” =)

Oh, and, if I may add… I’m working on my own DAW right now, which is fully modular, so if there is something that isn’t quite right, then it’s easy to change it =) It’s kind of a precursor to SythOS (same concept…. 3D virtual environment, network-enabled, fully modular, timelines, timeline branches, etc…), but it’s much simpler (since it’s only an audio workstation). I’m planning on releasing it sometime by the end of this year =)

In celebration of MLP Season 4 and Dr Who 50th ….

As you probably all know, today is the airing date of My Little Pony Season 4 opener, and the Doctor Who 50th anniversary special!!

So, I thought: Hey, why not create a track for it? Took me 3 weeks =P But I’m really happy with the result ^^ (and yes, I did create this using linux … and since I’m on vacations, I’m using my mother’s laptop, which uses ubuntu! So this isn’t _that_ off-topic, right? =P Okay, okay, yeah, it is very off-topic anyways =P).

Here is the track:

Quick note, I used Studio One (by PreSonus) to create it … it works pretty well under ubuntu! Some minor issues here and there, but nothing that prohibits you from doing any work =) I highly recommend it (over LMMS and Ableton Live, in fact!)

Some updates

I thought it might be fun/interesting/possibly useful/useless/whatever to create a post with updates on different projects I’m working on that are related to (or have been posted on) this blog.

Orchestral Tutorial Series

I haven’t posted anything in this tutorial for a really long time. Why? A couple of reasons. First, I needed a break, second, JACK stopped working (once I fix it, I’ll update the first part =P ), and third (also the main reason), is that there didn’t seem to be a great interest in the tutorial series (very few hits per day, if any). Which makes total sense (I’m definitely NOT the best person in this field at all).

So does anyone want me to finish it (the next part is going to be about how to, well, create a track using LMMS… like LMMS basics, that kind of stuff)? If anyone does, I’d be happy to do so. But if there isn’t really any interest (which I would totally understand XD), I probably won’t finish it.

Relinux

Relinux 0.4 was a disaster. I think that nearly everyone who used it can agree with that. So, instead of trying to fix all of the issues, and constantly fix the architecture, etc… , I’ll rewrite it! Again! This will be the 7th time I’m rewriting it (yes, I kept count =P)! I’m not kidding.

I’m kind of designing it off-and-on (my main priority is SythOS), but it’s definitely going to be better than 0.4!

Some quick notes: I’m debating on whether it’d be a good idea to call it something else, since I’m not really sure that any product is still to be considered the same product after its 7th rewrite… and because I’m not sure I’ll just want to support linux (I really want to make it work on BSD-based distros!).

I’m also not sure if I’m going to be using C, C++, or SyC (see the SythOS section). If I complete SyC before I start working on relinux, it’ll definitely use SyC, however, I’m not sure if I’m going to wait for that long. I know that if it uses C++, it’ll most probably use Qt.

SythOS

Since I wrote that post on SythOS, I’ve been constantly improving the concept. I’m not going to reveal too much (I’ve had enough of people stealing my ideas… and code), but it’s basically now a fully 3D environment, and everything is editable (without a separate “mode”… if you edit an object, you’ll edit it in real-time). I’ve already figured out how exactly one could create an audio track inside it, same for video, image editing, texturing, gaming (duh), and also, how using SythOS could be much more efficient than using, erm, “normal” solutions. I’ve also figured out most of the “how” of SythOS (i.e. how it’s going to be built, how everything is going to work, etc…).

SythOS is actually going to use a custom programming language, not because it’s impossible to create it using already existing languages (I was almost going to use C++ for it), but because it’d be much faster and easier to use a different language (that I’m designing right now).

The language (named SyC … SythOS C … okay, it’s not a brilliant name … neither is SythOS, for that matter XD) is, well, based on C, but is designed to be more consistent (I got really fed up by the minor inconsistencies with C, since I have OCD =P), and, if used correctly, faster. What? Faster? How? Well, it has an extremely powerful pre-processor… which is literally the language itself! Okay, let me rephrase: Preprocessor instructions are normal code. So it’s theoretically possible to run an entire software inside the preprocessor (why? good question!). But yeah, it’s extremely useful for optimizing code that could be run at compile-time. Also, because of this, it’s theoretically possible to extend the language itself (or even, write code in a separate language, which will compile to SyC) using the pre-processor!

Since it’s very possible that I might have confused you (I’m terrible at explaining things, if you haven’t already noticed =P), I’ll give a code example of what I mean (I haven’t finished designing SyC, so the syntax you see here may very well be changed once SyC is done):

@int foo = (@int var) { // Built-ins are namespaced using "@"
    @return = var + 10; // Return is no longer a keyword, it's a variable!
};

// If you use # in a variable name, it's now _forced_ to be used as a pre-processor instruction
@CODE #loop = (@int times, @CODE code) {
    @return = "";
    for (int i = 0; i < times; i++) {
        @return += code + ";"; // NOTE: The "+=" and "+" will probably NOT be used in SyC!
                           // This is just an example for the pre-processor, so please ignore that
    }
}

@char * #error = "ERROR"; // Think of it kind of like:
                          // #define error "ERROR"
                          // If you wanted #define error ERROR , you'd change @char* to be @CODE

@int main = () {
    @return = 0;
    @int var = 10; // NOTE: This'll probably have to be constant... SyC's design is not complete yet!
    @int var2 = foo(var); // This will compile normally... it'll do a function call
    @int var3 = #foo(var); // This will compile as: @int var3 = 20;
    loop(20, // Notice that it is not invoked as #loop ... this is because loop is already marked as a pre-processor instruction!
        var3++;
        var2 += var3;
    ); // This will compile as:
       // var3++;var2 += var3; var3++;var2 += var3; var3++;var2 += var3; etc...

    if (var3 > var2) { // Let's just say this is an error
        @return = 2;
    }
}

So, back to SythOS (instead of talking about SyC), I am not going to ask for people to help on this project (in contrast to what I did with CosmOS). Reason why, is that the last couple of times I did that, it turned out to be a complete disaster. So I won’t do that again! However, I’m definitely not closed to help. It’s just that I won’t be “requesting” help, persay (I would appreciate it though =P).

I haven’t done any code-work on SythOS, as I’m still trying to finalize the design (especially of SyC, as I’ll need to make a compiler for that before I can actually start working on SythOS itself)

This blog

To be honest, I’m not exactly sure what to do about this blog. I’m definitely not going to delete it, but since I’m not using ubuntu anymore, very few things I do on here relate to ubuntu anymore. Sure, I make some tutorials which talk about how to do stuff on linux, but nothing specific to ubuntu.

I’m not sure whether I should continue doing these kinds of posts here (which are not totally related to ubuntu), or not… Though I guess it isn’t too important of an issue, I’m just wondering, would people mind if I kept doing these (since it is promoted on planet ubuntu and other various ubuntu-related websites… and I definitely don’t want to lose them!)?

Creating an orchestral track under Ubuntu – Part 4: Designing the track

Part 5: Upcoming

This is by far the hardest/most time consuming part of creating, well, any kind of track (okay, almost any kind…). So without further ado, let’s dive into it! Oh yeah, quick note, I have next to no knowledge whatsoever in music theory, so if I use the wrong terms and such, please forgive me! The advice I’m giving here is mostly from my own observation of “epic” orchestral/soundtracky tracks I’ve listened to, so, well, don’t expect a perfect guide here :P

The first part you should always start with is to figure out the big picture of the track… or, if you want, the “outline”. The most common outlines (that I observed) would be:

  1. ABA – Two sections, A, and B. You should be able to tell where you run the sections from the name XD . This is the one I used in Muffin Factory (though the last A section was very short).
  2. Theme, slowly “crescendoing” to the climax? – Not sure how to call this, but AFAIK, this technique is probably the most used by Clint Mansell (the musician who made the Requiem for a Dream theme). Or rather, Mansell uses it in nearly all of his soundtracks lol. This technique, as you can probably tell, is very powerful when used well (and when you have the appropriate breaks, because if it simply crecendoes without any kind of break, it becomes extremely boring).
  3. AB – Two sections, A being the intro, and B being the actual track itself. This is probably the most standard one used

Okay, let’s assume we have an outline now. So now we have to get a musical seed/theme (though for some, it may be better to do this before figuring out the outline). Since this tutorial is for creating “epic” orchestral tracks (i.e. more like battle scene-type stuff than emotional or classical stuff), I will only focus on a couple. I know that my suggestions are not too helpful, but this is because seeds are the most subjective parts of creating a track. It’s very hard to create guidelines for seeds.

  1. Battle theme. The musical seed should be short, suspenseful, and should NOT be in major. This will repeat a lot, with variations, so make sure that it’s not ultra complex either (in “epic” orchestral music, simplicity is key). Remember that what makes a battle theme “epic” is almost always the percussion element, so the seed is less important than the percussion itself.
  2. Victory battle theme. This is NOT a victory theme, this is a victory battle theme. The difference, put in movie terms, is that a victory theme is AFTER the battle, and a victory battle theme is IN the battle, but the good guys are obviously going  to win (Listen to “I am the Doctor” to see what I mean). Okay, enough talk. Basically, this is usually in the major key (but can be in the minor key if you know what you’re doing), and short (but it doesn’t have to be as short as a pure battle theme). It doesn’t have to be too suspenseful either (for rather obvious reasons). Also, though percussion is still very important here, it’s much less of a key element than in a battle theme, so do spend more time making sure the theme is good.
  3. Theme song. This is my favourite, as you’re really not limited to anything! This can be almost literally whatever you want (FINE, I take that back, you’re NOT allowed to use a happy hardcore melody … geesh). So no guidelines here, just what you think is best for the theme you’re trying to make (e.g. don’t use a major key on a dark theme XD). Actually, I’ll take that back too… there is still one guideline: Don’t make it complex. Adding complexity to it will really degrade the quality of the theme itself, and will stop you from being able to further develop it throughout the track.

Bingo, we now have our musical seed! Or at least, we should have a seed. Now time to figure out the accompaniment! These are the basically the elements you may want to have for the accompaniment:

  • Driver. No idea what’s the correct term for this, but I like to call it a driver, because it drives the track forwards (and, of course, lets you plug in your graphics card as well!). This is usually done in percussion:But it can also be done harmonically (sorry, the sound isn’t too good on this one):
    When done in either (percussive or melodic), it can’t be too interesting or complex, but at the same time, it can’t be too repetitive or boring. Remember, the point is to drive the track forward, and not to direct attention to it (if it’s too interesting/complex, or repetitive/boring, it’ll drive attention to it, and away from the track itself)
  • Basslines. Seriously, this is not only for rock tracks! Use cellos, violas, and basses for this (octaves are very useful when you need to make it “bigger” too).
  • Counter melody. I haven’t really experimented myself in this section, but from what I noticed, it’s very useful for transitions or fillers. I generally shy away from it, due to it sometimes making the melodic part of the track more complicated than necessary (and trust me, you don’t want that in “epic” tracks, it pretty much removes everything that’s “epic” about the track), but it can be useful when used well.
  • Choir. You won’t always want to have this, but if you use it well, it can add a lot to the track. If you don’t use it well (like I did :( ), it’ll make the track sound cheesy. The creation of the choir part is similar to basslines, except that you specify it in chords, not in octaves or single notes (usually).
  • Percussion. Yes, I did talk about this under “Driver”, and it should usually stay there, but sometimes the need for percussion is elevated (e.g. a battle theme), and then percussion becomes as much (if not more) of a key element than the melodic seed itself. So then, it has to try to attract attention to it (as compared to it being a driver, where it tries to attract attention away).

Great! Now that we have all of that sorted out, it’s time to work on the track itself :D

Notice that I didn’t go into any kind of detailed explanation about how you must develop it. That’s for later, for now we just have to “design” the track, not implement it. Put in programming terms, what we’re doing is this: “I’ll make a calculator written in C++, using Qt, and will use standard menubars, and standard buttons for each of the mathematical operators”, NOT this: “I’ll have a file menu, with Save and Quit, an Edit menu containing Cut, Copy, Paste, and Preferences, (insert more talk about menus here), the buttons will be arranged in a grid layout (more talk about layouts), (etc…)”.

P.S. Sorry for posting this so late, I’ve had personal issues lately that kind of made it harder for me to write this.


Part 5: Upcoming

Creating an orchestral track under Ubuntu – Part 3: Setting up your orchestra


This part isn’t really hard, but it takes a lot of time to find good orchestral samples, so I’ll simply list some that I’ve used, or heard good reviews about (and good music from):

  • 3.5GB collection of orchestral soundfonts: Seriously, this is a must-have, even if you have better alternatives! Though it is only 3.5GB (unpacked), it contains a LOT of soundfonts. And I mean, a LOT. And not only orchestral soundfonts (though it is mostly orchestral), so if you need to integrate other types of instruments, it does have some interesting non-orchestral ones in there.
    • Pros:
      • Free!
      • Some of them are somewhat HQ, or at least sampled (Bellatrix, (S)GM, Gothic harp, Hades strings, to list a few… you can easily find which ones are sampled by looking at the filesize (and dividing it by the number of instruments available) )
      • Easy to setup, all you need is a soundfont player (except for Bellatrix, you’ll need to install an sfark extractor)
      • A LOT of soundfonts
      • It’s non-HQ-ness and lack of a rich sound actually makes it a really handy tool when you really don’t need a rich sound.
    • Cons:
      • Most (if not all) of them aren’t HQ
      • None of them have a very rich sound (seriously, though it may sound okay to you, after you use something that’s actually HQ, you’ll see the difference… big time)
      • A LOT of soundfonts … yeah, I copied that over. That’s because of the problem with having too much choice. That’s why I just check the filesize, and get the one with the biggest, since it’s much more likely to be better quality :P
  • ProjectSAM Orchestral Essentials: I don’t really know what to say… the sound quality is amazing, but it’s seriously overpriced. Look, you can barely customize which instruments you’ll use (they come in bundles, which is seriously annoying when you’re trying to have fine-grained control over your track), the settings/effects are not very powerful, and Kontakt (it’s a VST that is needed so that you can use it) takes hours to load under LMMS, plus, the demo version (of Orchestral Essentials) expires after 15 …. MINUTES. Of course, all you have to do is to reload the library from Kontakt (by removing it, then adding it back, which actually takes about 20-50 seconds), but really… I personally don’t find any appeal at all to this one.
    • Pros:
      • Amazing sound quality (probably the best I’ve ever heard)
    • Cons:
      • Totally overpriced
      • Kontakt takes a long time to load under LMMS
      • Demo only runs for 15 minutes before requiring you to manually reload the library
      • No good effects, and those that are included don’t work too well (from my experience)
      • Instruments are pretty much bundled up, no real way to get individual instruments and build a hand-picked “orchestra”
      • Not too many instruments are available either
  • EWQL Orchestra: Please understand that I have never tried this! This review is only from what I’ve heard, both reviews and, well, music XD The sound quality doesn’t seem to be as good as ProjectSAM’s quality (the richness of the tone seems to have been diminished a bit, though I could be wrong), but (I’m not sure if it’s only because of the artists I listened to though) it seems to be able to have more “emotion” to it. Reason why I say that, is that it seems to be able to have different styles of how the instruments are played… I wasn’t really able to get this from Orchestral Essentials, or, for that matter, anything else that I’ve tried. So it may be some kind of technique that I’m not aware of, but it seems to be good in that section. Also, it’s MUCH more reasonably priced than ProjectSAM (their smallest package costs $145, and is 11GB, compared to ProjectSAM’s Orchestral Essentials which costs ~$360, and is 6GB, AND you can customize each instrument individually).
    • Pros:
      • Great sound quality
      • Reasonable price
      • Possible different styles(?)
    • Cons:
      • Still costs a lot
      • The only way to get really good sound quality is to go for platinum (24-bit depth is actually noticeably better quality than 16-bit), which costs a lot
      • No idea if it works on WINE well or not (not a con exactly, but it could be :P)
  • Miroslav Philharmonik: This is the one I use. Why? The sound quality is perfectly decent (not as good as EWQL or ProjectSAM though), it’s rather small (7GB), it contains a complete orchestra (including coughing & sneezing sounds… I’m not kidding!), a decent choir, the VST takes anywhere from 2-5 seconds to load on LMMS (a HUGE turn on for me), and the VST itself is very powerful.
    • Pros:
      • Decent sound quality
      • Reasonable price (the demo’s timeout is not too short either)
      • Complete orchestra
      • Small
      • Decent choir
      • VST is very fast to load (and quite responsive too)
      • VST is very powerful (you can layer 16 different instruments, apply 4 effects per each instrument, and each effect, all 20 of them, work very well)
      • Easy to use
    • Cons:
      • Still costs money
      • The choir sounds like as if they just copied over soundfonts from that 3.5GB orchestral soundfont link I shared above. Seriously, they sound very similar, AND, sometimes, it seems like as if they’re just repeating the same choirs, but under different names (for example, FA and AH sound identical… I don’t hear the F at all)!
      • The sound quality could be improved
      • Some of the “solo” instruments are unavailable as an ensemble (e.g. the tuba… yeah, I know, I’m stupid for wanting a tuba ensemble :P)
      • Rather high CPU usage is constant, even when no sounds are being played

I hope this can help someone! I strongly encourage you to do your own research before buying any of these though.

If you use anything else, or have another pro/con for an existing product, let me know, I’d love to make this list more complete!


Creating an orchestral track under Ubuntu – Part 2: Setting up LMMS


First, to address the question: “Why LMMS?” I’m actually not a huge fan of it, but, IMHO, it’s the best way to start producing music under linux if you’re kind of new to it (music producing under linux).

So… what’s so hard about setting up LMMS? Isn’t it just a matter of going to the Ubuntu Software Center, typing in “LMMS” and installing it? Yes and no. Yes, because that does, in fact, install LMMS. No, because it doesn’t add VST/VSTi support (which you’ll really want later on, trust me), AND, it doesn’t set it up either.

Now for the simple way:

sudo apt-get remove lmms
sudo apt-add-repository ppa:ubuntu-wine/ppa
sudo apt-add-repository ppa:kxstudio-team/ppa
sudo apt-get update
sudo apt-get install wine
sudo apt-get install lmms

That should work just fine (and should have VST support). But what if it doesn’t? This is where it gets a bit harder.

First, we’ll have to download LMMS: https://sourceforge.net/projects/lmms/files/lmms/ . Get the .tar.bz2 archive. The next step is rather obvious: Extract it! Right…… so after you’re done that, in a terminal, cd to where it’s extracted, and run this:

sudo apt-get remove lmms # Make sure that LMMS is not installed
sudo apt-get install libqt4-dev qt4-dev-tools build-essential cmake libsndfile1-dev libasound2-dev libjack-jackd2-dev libsdl-sound1.2-dev libsdl1.2-dev libsdl-mixer1.2-dev libfluidsynth-dev libfftw3-dev libstk0-dev stk wine wine-dev libwine-dev libwine libsamplerate0-dev libvorbis-dev libvorbisfile3 libvorbisenc2 # Install the required libraries to build this
mkdir build
cd build
cmake .. -USE=vst # Make sure we have VST support!!
make # You can add -jN to it, where N is the number of threads running concurrently, if you want to speed it up (assuming you have at least N cores)
sudo make install

There! It should work now!

Now we have to setup LMMS. Simply open up LMMS, and a configuration window should appear if this is the first time you opened it. If it is not, then go to Edit->Settings. Lets go to “Paths” (the folder icon). The defaults should mostly be okay, except for the “VST-Plugin Directory” one. Change that to the directory where your VSTs are (create one if you don’t have one yet. This is important!):

lmms-settings-paths

Then let’s go to “Audio settings” (the speaker icon). Change the audio interface to JACK, and make sure there are 2 channels:

lmms-settings-audio

Once you’re finished with that, let’s test! Click on the top track (it should look kind of like a light blue/cyan clover, without the stem, or like 3 circles) to open up the “Triple Oscillator” settings window, and click on one of the piano keys. If you don’t hear anything, make sure JACK is setup and running, the audio is at 100% and not muted, then restart LMMS.


Creating an orchestral track under Ubuntu – Part 1: Setting up JACK

 

In my previous post, I was talking about (okay, fine, advertising) a track I made under linux, using LMMS, and I said I would write a tutorial on setting up an audio studio, and creating a track with it, so here it is! I’ll dividing this tutorial into multiple parts, so stay tuned (one way to do this is to subscribe … hint, hint ;) )!

This part, as the title says, is to setup JACK. This is probably the most frustrating step in setting up your studio, but it’s very important! Most people will try to make it work with a program named QjackCtl. If that works for you, awesome! But it never worked for me. So instead, I’ll show you how I made it working, well, without it (mostly).

Here is the command I run on my computer to start JACK. It’s probably not optimal, but it works for me:

killall jackd;killall pulseaudio;jackd -R -t 1000 -d alsa -P hw:0,0 -r 48000 -n2 -D

This will probably not work on your computer, but we’ll test it, using alsaplayer (install it if you don’t have it yet, and make sure that the volume levels are at 100%, and nothing is muted):

alsaplayer -o jack PATH/TO/AUDIO/FILE.mp3

And, of course, replace PATH/TO/AUDIO/FILE.mp3 to the path to an audio file (that you know works, and for your convenience, I’ve uploaded a working test audio file here: http://www.uploadmb.com/dw.php?id=1375942423). The test is simple: Click on the play button. Do you hear audio? If yes, then JACK works! If no, then, well, do I need to clarify this? :P

Anyways, if it doesn’t work, what you’ll have to do is to try EVERY. SINGLE. AUDIO DEVICE. (and subdevices). Sounds like a lot of repetitive work, right? It is! So to get the audio device list, open up QjackCtl (I said that we’d get it working mostly without it, not completely!), select “Setup”, and click on the arrow beside “Interfaces”:

qjackctl-interfaces

Now, if you look carefully, you might find a red circle around a certain area. That area contains the hardware ID (for lack of a better term) which we will be giving to JACK. So re-run this command, changing the part in bold with the ID you saw:

killall jackd;killall pulseaudio;jackd -R -t 1000 -d alsa -P hw:0,0 -r 48000 -n2 -D

And then re-test JACK (using the alsaplayer test I mentioned earlier). If it doesn’t work, keep on repeating the JACK step, changing the hardware ID each time, and, of course, test it. Once it works, package it up in a script, like this:

#!/bin/bash
killall jackd;killall pulseaudio;jackd -R -t 1000 -d alsa -P HARDWARE_ID_HERE -r 48000 -n2 -D & # The ampersand at the end is intentional, as it runs it in the background

Save it, and chmod +x it (set it as executable), then run it when you need JACK.


Bonus: Routing Pulseaudio to JACK

Don’t worry, this part is simple :D . Make sure JACK and pulseaudio are running (you can run pulseaudio by running this: pulseaudio &), then run this:

pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2;pacmd set-default-sink jack_out

You might have to re-run it, and restart applications using pulseaudio.


This is the full script I use to start JACK, and route pulseaudio to it:

#!/bin/bash

killall -KILL jackd
killall -KILL pulseaudio
jackd -R -t 1000 -d alsa -P hw:0,0 -r 48000 -n2 -D & # REMEMBER TO CHANGE hw:0,0
sleep 3
pulseaudio &
sleep 3
pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2;pacmd set-default-sink jack_out
pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2;pacmd set-default-sink jack_out

 

Muffin Factory – A track I made in LMMS

Heh, I’ve been going pretty well with my no-post streak! A bit more than 3 months!! Well, I haven’t exactly died, but I didn’t really find any reason to post on this blog, and even this post is not really a good reason to post here anyways XD . I will post tutorials here soon though (about game development under linux… not exactly ubuntu-specific, but close enough lol), once I finish my 2 projects (that are taking up nearly all of my free time).

In the meantime, I thought why not share a track I made purely using linux and, more specifically, LMMS. I used Miroslav Philharmonik (which works great under WINE) for most of the orchestral sounds. I will probably post a tutorial soonish about how to setup LMMS, and create an orchestral track with it (using the Philharmonik), plus maybe another one about to create cover art like that (not saying that you’d want to, but, you know, I learned a lot from tutorials that showed me how to do things that I didn’t care about :P). But for now, here’s the track itself:

Let me know what you think of it :3

SythOS – An experimental collaborative OS

A rather long time ago (around a year and a half), I wrote a post about a system I was making which was supposed to be a cloud-based OS, named CosmOS. I didn’t really develop it that much, as I had a rather vague sense of what I wanted to do with it, and I immediately had problems with implementing the most basic concepts. Most of the idea was actually quite boring, and had already been developed by others. But since I had gone through all the trouble of making a tool for creating it (relinux), I decided to try it anyways, and just radically changed the whole design. And I did. I also found that I couldn’t have used the same name, as CosmOS was already the name of at least two different OS’s, and it was also the name of a directory of linux OSs (among other unrelated usages), so I kind of got that I had to change the name.

The name is actually based on two words, Synergy and Lithosphere (I was going to call it LithOS, but it sounded like some kind of boring scientific and/or business-oriented OS, if you know what I mean). I know, kind of an odd combination, and the reasoning for it is a quite far-fetched, but heck, it’s an unused name, and it sounds cool! Lithosphere was used as a creative way to say “ground”, because it’s not cloud-based (unlike CosmOS, in fact), and it’s also designed to be “down to the ground” with you. Instead of you adapting to the OS, the OS adapts to you (will explain how this works later). Also, the Synergy part is because since it’s completely with you, it allows nearly everything to be done much easier and simpler, reducing the amount of time both the users AND the developers need to do nearly everything (except for the engine… :-/).

The OS itself is principally designed under the following goals:

  • Help the user to become more productive within it
  • Extremely intuitive
  • Extremely easy to collaborate on anything
  • Extremely customizable
  • Fun

There is only one software that I’m aware of that does this well: Minecraft (creative mode). Okay, forget the productive element, but still, anyone can pick up the pace on how to use minecraft extremely quickly. Also, if you’ve ever played it, you’ll know how easy it is to collaborate on building something. You don’t need to use a VCS like git or mercurial to build something. Just get someone else on your server, and build together!

That’s kind of my idea with SythOS. You are inside a 3D environment, windows are mapped to 3D surfaces (I had this idea from Wolfenstein Qt, but it appears to already have been implemented: http://www.youtube.com/watch?v=_FjuPn7MXMs), and the environment is modifiable, using a minecraft-like in-game “level editor”. Other people can connect to your computer (if you allow them, of course), and then you can work together on projects (such as coding, audio, video, or even games) at the same time! Of course, for this to be effective, you have to have somewhat compatible software (you can’t both work on the same window for rather obvious reasons), but even if the software you use isn’t “compatible”, taking turns, and being able to see what the other is doing real-time is still way easier than using some kind of VCS or worse, emailing files back and forth, right? Also, with the chat and mic/audio features that are planned, you can also make meetings and/or “calls” (kind of like skype does, except without the video) within it.

Here’s a list of features that are definite:

  • 3D virtual world
  • Windows mapped to the world
  • MMO-like online presence
  • World is Minecraft-like
  • Different tools and blocks (inspired by minecraft)
    • Hand tool: Allows you to do basic edits to windows (such as moving, resizing, and closing), and allows you to use windows, plus allows you to remove blocks
    • Kill tool: Allows you to kill processes, based on the windows you hit, and, of course, allows you to remove blocks
    • Various blocks, which allows you to place them, and remove other blocks, plus allows everything the hand tool allows you to do
    • Portal tool: Allows you to create portals to different rooms, so as to decrease the time needed to go between two different “workspaces”
  • Whitelist, Blacklist and “Asklist” for everything (great for multiple user computers, and/or online interaction)
  • Chat
  • Quake-like terminal with multiple tabs, but it can be used to place any kind of windows, not only terminals

Other features that are planned, but not definite would be:

  • Mic/Audio
  • Some kind of game engine, so you can create 3D objects that interact with the world (though it’s definitely not limited to games, it could even be used to create fancy movie creation software, or 3D modeling software)
  • Facial expression recognition, so your character’s face will match your expression. This is definitely not an important feature, and if it is ever implemented, it will probably be quite far-future.
  • Video… somehow… (no idea how to elegantly do this though)

Now for the point of this post (the reason why I’m writing it): Would you use something like this? If so, or if not, why? Any ideas and/or comments on this?

About the possibility of it being implemented, I know that it is possible, but I’m not sure how much time it’ll take me to do all of this (and I’m not sure if I’ll have the stamina needed to do this). I’m planning on releasing a prototype by the end of this summer (2013) though.

Follow

Get every new post delivered to your Inbox.

Join 150 other followers