Slashdot Mirror


What Is The State Of MIDI Support Under Linux?

CodeShark asks: "I am 99% ready to completely wipe all Windows software from my machines, but the last 1% I need to do so is an effective MIDI system that includes: a multitrack midi sequencer, a sound librarian, and notation software (outputting the midi tracks to sheet music). I've tried searching via the Web with little luck, and am wondering what is out there/in development. I'd even be willing to pick up and/or start an Open Source project in this area myself, but I don't have a lot of knowledge of where to start. Suggestions anyone?" I'm hoping that with all the newfound popularity, someone has already started exploring with Linux in music production.

7 of 163 comments (clear)

  1. Eep. Unclear on the concept? by Chris+Johnson · · Score: 4
    It seems like most of the responses to this article are talking about soundcards or audio samples or notation. What? It hardly seems surprising that MIDI support is not well established if the sense of what's needed is that confused. Uh, MIDI is not a MOD, nor is it a Sound Blaster... (except in a degenerate sense)

    Airwindows (my domain name) started as the name for my studio, and that is still very important to me. The studio is largely MIDI based, with synthesizers ranging from Kawai to Proteus to an Alesis drum module to an old Yamaha FM module for basses and weird FM noises ;) It all runs off an old Mac performa 410 (a very weak pizza-box Mac from the 68030 days).

    There's a variety of interesting and peculiar programs to do odd MIDI things: a delay unit for MIDI messages, a chaotic-algorithm toy for generating multichannel weird 'space music', a wild but buggy 'do everything' tool called Megalomania that will cheerfully take particular keyboard ranges and echo them upwards in major thirds recursively through different instruments if asked (if it doesn't just freeze up first! ;) ). There's also a program I myself wrote (in REALbasic) that produces sysex messages to program the very weird and twisted Yamaha FB-01, for which there is no programmer except one for DOS and a couple of flaky, sub-Linux-polish, and very expensive 'professional tools'. But above all else, there is Musicshop. This is, I think, a little brother of the 'Vision' v.1 that somebody else mentioned. I'll take a minute to explain what this does- then I'll explain what it doesn't do, and what I'd give my eyeteeth for in a MIDI sequencer.

    First and foremost, Musicshop is solid. I'm not talking 'interface feel' at all, I mean musically. It is capable of playing dense MIDI sequences on an 8 mhz 68000-based Mac Plus. It does _not_ hesitate, or drop notes- the rhythm does not lurch no matter what, even while you interact with it. It does this by taking over the Mac entirely, and placing note timing above all other things, including screen refresh. You'll often see it redrawing the screen poorly or not at all while it's busy playing the notes. On a faster machine it still lags in screen redraw or interface responsiveness due to this intentional decision to put Notes Uber Alles. I won't willingly settle for anything less from a sequencer if it's going to be driving synthesizers that I have to play music on, and play along with. It's damned unprofessional for a sequencer to make the music sound slightly drunken or fumbling, and this has always been a problem with underpowered Windows PCs running MIDI sequencing. Not Musicshop! MIDI _is_ hard realtime stuff and this must be understood first (unless the idea is to compose sequences and then get a mac plus for playing them solidly because it can do hard realtime by starving the OS of cycles completely?)

    Tracks can be shown in musical notation, but I and I suspect many other synthesizer-tamers go for the music roll display, in which you're looking at basically colored lozenges showing the pitch, channel, on and off of each note. There is a trick Musicshop does to handle very short notes or notes that would extend less than three pixels on the screen at the current zoom level- it draws the note as an X, not a lozenge. This takes on great importance when using the Alesis's trigger inputs as a drum kit- the notes this produces are just about infinitely short at most zoom rates, and without code to draw them properly they will vanish and be impossible to manipulate.

    Notes can be manipulated by the mouse in three distinct ways- pitch change, attack and note length. Clicking on a note sounds it and sets up one of these changes- on the middle of the note you get to slide it up and down in pitch (each new frequency sounds the note again), at the front of the note you get to change the start time, at the back of the note you can stretch it out for longer or shrink it down to make it more staccato, without affecting pitch or when the note was struck.

    It's important to point out that this is not necessarily quantized, as MOD sequences are. Musicshop counts 480 units in a quarter note, or 1920 for a whole note. The note triggers can vary by as little as one unit, 'quantizing' the basically infinite-resolution timing of a live performance down to these 'units'. At 120bpm this is just barely perceptible- for instance, a seriously grooving performance on drum triggers will be faintly unfocused when reduced to 'units'. Sometimes I've run the sequencer at double or quadruple time to get more unit density- this works pretty well, actually.

    This also means that you can program in sequences, such as a drum sequence, as quantized (to start out with a machinelike rigidity), copy or repeat them (another feature that's quite handy) and then go in and select all notes sounded by a particular drum (click on the border of the note field and you can select a horizontal line through the entire performance) and carefully move all the notes forward or backward in time in unit resolution- not note resolution. The reason to do this is to get _real_ 'live feel' rather than some dumb random inaccuracy feature. To make a hihat groove harder, sequence it with dynamic information (if size of dot is volume, you might have it like this: O...o..oO...o..oO...o..oO...o..o) and then take the soft hits and move them back in time just a touch, so they hesitate. Do the same with soft bassdrum hits, and take the snare backbeat and move it back until it feels like someone's arm swinging down to hit a drum- snare backbeat _needs_ to be shifted back in time from the quantized position in order to sound more relaxed and grooving, otherwise it doesn't even feel like a drum, it feels like a MOD. Once this is all done, nothing _feels_ 'hesitated'- instead, the bassdrum and hat feel like they are coming in with extra force and authority on top of the beat. (You also need to do this with bass and any other instruments being sequenced.) The reason not to push things _forward_ is because in Musicshop you get to compose music using multiple parts and it will happily let you sequence these live or sequenced parts as if it _was_ a MOD: you write a chorus, and then just stick it in each time you need one, saving time. If you need it all in one performance, export to standard MIDI and re-import. When you are using multiple parts it's a problem to move an attack _earlier_ than time zero of the sequence, so as a result you have to take all non-'pushed' notes and pull them back instead, to get a human feel. This also means the aggressively hit notes are mechanically perfect, making the overall groove more easy to sense.

    Now, I've barely scratched the surface there- haven't touched on using the repeat paste to compose polyrhythms, or the spiffy little tuple algorithm they have, or various interface tweaks, or even the strip chart which I wanted to mention (alter durations or velocities etc. _graphically_). I'd love to go into more detail for anyone trying to make a serious Linux MIDI program, if anybody is, which I wonder. I wrote a REALbasic program to give sysex events but I am _so_ not qualified to write a sequencer in C, much less realtime kernel patches to make it actually useful. But I can explain what's needed for design and will spend any amount of effort to help such a project because I write free software too (GPLed, to be exact, and hindered by my inability to write actual C code).

    One major feature that I really, really wish Musicshop had was more interesting ways of affecting selections of notes. For all I know recent versions of Vision have this, but Gibson bought out Opcode and basically dismantled it for no good reason, so Vision is pretty dead now through corporate idiocy, many programmers laid off. At any rate, I'd like to be able to sequence a bunch of notes, such as a snare drum fill- imagine a steady bass drum happening, then a 'chemical brothers' sort of fast snaredrum roll leading into the bass drum again. I'd like to be able to select all the snare hits and fade them in (something I can already do in Musicshop with the strip chart, easily), and then select them again and timeshift them only on one end of the selection, the alterations blending smoothly into the original timings like a gradient. By this I mean that I should be able to take a machinelike snare roll and with a few easy adjustments be able to make it go zzzZZZZWIP! into the bass drum, starting late but the notes happening faster so that it's like they accelerate into the bass drum. This is a _very_ common effect from live drummers with a sense of drama- it's the difference between a Steve Gadd and a Chad Wackerman, the sense of elastic time that dramatizes the steadiness of the underlying beat. Alternately I'd like to take a sequenced, robotic fill and stretch it _out_ so that it started out sounding totally offtempo, and then as you picked out a regularity it would converge on the existing beat. It takes a Bill Bruford to pull off something that weird on real drums, but it's an amazing effect. Currently the only way I can do it in Musicshop is by digging out the ol' calculator and writing it all out on paper in units- which is such a pain that some of these things I've never even attempted. I'd like to see a Linux MIDI sequencer that does _more_ than cakewalk-and-a-soundcard, that dares a little more- even one which relies only on some weird programming language, if necessary. The important thing is that it would need to actually understand what music is, and concepts like this elastic time concept that's so important to sequencing appealing, interesting, exciting music. The other important thing is that it would have to be realtime if it had any pretenses of being a professional tool.

  2. What I've found by adubey · · Score: 4

    From the GNOME and KDE homepages, I managed to find sequencer apps... actually from what I saw they were hoping to be whole "music suites." (I think the KDE one was hoping to be a re-write of Cubasis). Of course, like productivity software, the Windows/Mac versions have in some times a decades long development head start, and this shows (although it seems some OSS projects seems to catch up very quickly).

    Sound librarians are far behind... there is a port of CSOUND to Linux (the top patch synthesizer), but this only synthesizes patches, I don't think it has a wave editor, nor do I think it can download patches from a keyboard.

    Music notation software is even further behind. The Rosegarden project (now part of Gnome) had a notation part, but the whole thing is being rewritten from sratch for GNOME (hmpf - it needed to be rewritten, I understand, but what ever happened to platform idependence?)

    Hope this helps, it was a while ago that I looked, so sorry for the lack of URLs... but maybe there's enough here that you can do a search.

  3. GNUstep/MusicKit, ALSA by Art+Tatum · · Score: 5
    OK, I'm a musician who is also deeply into Free Software and Linux. I greatly suggest that you take a look at ALSA, the Advanced Linux Sound Architecture (see http://www.alsa-project.org for details). ALSA is on its way to replacing OSS/Free in the Linux kernel, and they are working on top-flight patch management and MIDI sequencing support.

    Secondly, if you are familiar with NeXTSTEP and their fabulous MusicKit/SoundKit combo, I am (as soon as this term is over!) planning on porting it to GNUstep/Linux. So, all the powerful NeXT music and sound apps (like SynthBuilder) should be easily portable to Linux. See http://ccrma-www.stanford.edu/CCRMA/Software/Music Kit/MusicKit.html#bg for background on all this.

    I'm still wading through low-level MusicKit code (in addition to trying to keep my grades up!) and would appreciate some help, so write me at my email address!

  4. midi have you looked at... by josepha48 · · Score: 5
    Have a look at this web site. http://www.xdt.com/ar/linux-snd/digit al.shtml

    For notation I use Rosegarden, then to listen there is timidity, kmidi, kmid, and I am sure are more. There is plugger as a plugin for midi and several other resources. So far I have not seen anything as grand as cakewalk, but I have not used cakewalk either so I do not know.

    There is also jazz which recently became open source. Try http://www.jazzware.com/cgi-bin/Zope.cgi/jazzware/ for jazz and see if it suites your needs. Between Rosegarden and Jazz I think you will find a good package.

    send flames > /dev/null

    --

    Only 'flamers' flame!

  5. Sound & MIDI Software For Linux by woogie · · Score: 5

    Check out the Sound & MIDI Software For Linux page at http://www.bright.net/~dlphilp/linuxsoun d/ Woogie

  6. GNU LilyPond, notation and sound by jcn · · Score: 5
    When people say `music', they usually mean `sound' as in mp3 or MIDI. However, because you look for notation software as well, you should check out LilyPond, the GNU music typesetter: www.cs.uu.nl/people/hanwen/lilypond (or www.lilypond.org).

    LilyPond also features MIDI output and comes with a separate program (midi2ly) for converting MIDI to LilyPond's input language. However, trying to convert MIDI to sheet music is a rather useless undertaking, IME. Rich MIDI lacks lots of notation features, such as accents, ties (as opposed to a note of double length), chords vs. voices, clefs, grouping into staffs (two voices on one staff, or each on its own), voices that switch staffs, beaming, arpeggios (vs quickly played notes) grace notes and ornaments in general, flageolets, fingering, enharmonics. So, if you want a real nice score, you'll have to edit the resulting score by hand, anyway. It is this editing that takes most of the time, not the entry of plain notes (that is, if you can touch type).

    As a separate project, work is underway to build a GUI (GTK+) frontend to LilyPond. Check out Denemo: denemo.sourceforge.net. Still in its early stages, but already usable.

    RoseGarden is basically an orphaned project. To quote Elliot Lee: "It isn't going anywhere any time soon." The last post on the Rosegarden mailing list is dated december, 6 1999. There are 2 branches. The first one is the X11 program, and hasn't changed much since the time Han-Wen named LilyPond as a pun on Rosegarden three years ago. They are also doing a complete ground-up rewrite of the package (slated to be 3.0), using Client/Server architecture, CORBA, GUILE, C++ and GTK. This all means that noone is working on the usable 2.x sources, and 3.x doesn't even compile. 2.x doesn't have any LilyPond support, but it is planned for 3.x

    Jan.

    --
    Jan Nieuwenhuizen | GNU LilyPond - The music typesetter
    www.xs4all.nl/~jantien | www.lilypond.org

  7. Brahms by Pope+Pius+IX · · Score: 5
    Have a look at Brahms. This project was previously known as Koobase, but changed name so as to sound a bit less derivative.

    As the old name suggests, it is a MIDI sequencer in the style of Cubase.

    It is looking very promising, but at the time I last used it (a few months ago - so I may be out of date) it wasn't ready to replace Cubase.