You are here

The Frantic Dame

Season greetings. As (almost) everybody knows already, or ought to, Qtractor is an Audio/MIDI multi-track sequencer application, written in C++ on the Qt4 framework and Linux is about its native platform. Thus, JACK and ALSA are the main infrastructures that fit to purpose, respectively for audio and MIDI.

Also a known fact is that this is nothing more than my pet, hobby, spare-time-burner, whatever project, but... it's actually my own dogfood where digital music making and (re)creation matters. Yep. I still have this sublime hope to make it evolve as a fairly featured Desktop Audio/MIDI Workstation, one special and dedicated to the personal home­studio. As joked many times before, it's perfectly tagged for the techno-boy bedroom home-studio, but techno-girls can also apply ;). You tell me.

Qtractor 0.1.2 (frantic dame) is out!

As obvious as in any respectable easter egg ;)

This time, some important fixes have sneaked in and other are surely popping and will be lurking out. Main ones go down like this:

  • You can finally create new clips from scratch.
  • Track record monitoring with audio effects applied.
  • New Track/View menu items, all shortcut configurable.
  • Overlapped clips rendering hopefully fixed.
  • Improved MIDI editor selection.
  • New clip-split command.
  • VST plug-in parameters are now undo/redo-able (mostly).

You can grab the new stuff from the usual project site:

http://qtractor.sourceforge.net
http://sourceforge.net/projects/qtractor

Direct download links:

qtractor-0.1.2.tar.gz
qtractor-0.1.2-user-manual.pdf

Now the plain change-log follows, since she was just a futile duchess:

  • Session length fixed (yet again) while extend recording; also improved follow-playhead switching while playback/recording.
  • Whitespace sanitization gets leaner for all recorded filenames.
  • Run-time SSE optimization detection has been improved while on configure; additionally, IEEE 32bit float specific optimizations have also sneaked in.
  • SSE optimization is now featured over all audio monitoring, and most specially on audio bus buffering, lowering the CPU burden a bit while doing track and bus gain, pan, metering and mix-down.
  • Fixed MIDI clip move into new track, preserving the original channel, bank and program whenever possible.
  • Fixed session cursor seeking, specially regarding overlapped clips, once gain.
  • The MIDI editor gets new menu access to current MIDI clip track (see File/Track/Inputs, Outputs, Properties); selection of MIDI events has also been improved, specially regarding overlapped note events.
  • Clip split command enters the stage (see Edit/Clip/Split) about splitting the current (selected) clip at the current playhead position (red cursor line).
  • Creating new clips from scratch is now finally permitted (see Edit/Clip/New...); additionally, the clip properties dialog is now also allowing for changing the filename (and track/channel as special to MIDI clips).
  • Record armed tracks are now properly monitored and fed through their own output audio bus on mix-down, which includes plug-in effects processing.
  • The files widget get alternating coloured rows.
  • VST plug-in preset values are now being restored properly; individual parameter changes are now being queued for the also convenient undo/redo command pattern.
  • Some audio clip buffer-sync tweaks have sneaked in, improving and fixing the rendering of full-overlapped, integrally cached and/or offset clips altogether.
  • Stuffed one primordial shot on XInitThreads() at the main head, and let native VST plug-ins start behaving as they should, or not; this might be in fact problematic and dangerous for people who won't ever try the JUCE based plugins as from JUCETICE (http://www.anticore.org/jucetice), due to some broken locking mechanism in xcb; thanks anyway to mighty kRAkEn/gORe@JUCETICE for this precious hint and from who knows best.
  • True deterministic session length update has due fixed.
  • Track menu has new accessible actions:
    • Track/Inputs - show current track input bus connections;
    • Track/Outputs - show current track output bus connections;
    • Track/State/Record - arm current track for recording;
    • Track/State/Mute - mute current track;
    • Track/State/Solo - solo current track;
    • Track/Navigate/First - make current the first track;
    • Track/Navigate/Previous - make current the previous track;
    • Track/Navigate/Next - make current the next track;
    • Track/Navigate/Last - make current the last track;
    • Track/Move/Top - move current track to top;
    • Track/Move/Up - move current track up;
    • Track/Move/Down - move current track down;
    • Track/Move/Bottom - move current track to bottom;
  • View menus have new accessible actions:
    • View/Zoom/In - horizontal and vertical zoom-in (Ctrl +);
    • View/Zoom/Out - horizontal and vertical zoom-out (Ctrl -);
    • View/Zoom/Reset - reset both zoom levels to default;
    • View/Snap - select current snap-per-beat setting;
  • Plug-in forms don't auto-open on session reload anymore.
  • Keyboard shortcuts icon item (Help/Shortcuts...) sneaks in.

That's all folks. For the time being... :)

Cheers && Enjoy
--
rncbc aka Rui Nuno Capela

Comments

Hi Rui,
Congratulations on the v0.1.2 release! Just did get a chance to cvs it. Very nice. You are certainly a very dedicated (and excellent) programmer. :)

So what is next on the todo list? Aux Buses and/or Clip plugins would sure be really nice. ;) Then again, I can also think of.....oh, never mind :D

Lexridge

rncbc's picture

Thanks lexridge. I thinks it is time to have a little spring-cleaning first... eheh.

OK. I still have DSSI/VSTi MIDI instruments in the drawer, but not sure it will be ready for the next minor dot release. OTOH clip plugins is one good candidate, as it's fairly easy to get it integrated. Not sure about the aux buses.

One thing that I'm considering is audio pitch-shifting support, by adding yet another (optional) dependency: Chris Cannam's Rubber Band Audio Time Stretcher. This one should be integrated in addition to the current time-stretcher, which is pretty faster but artifact prone. The main feature addition is indeed pitch-shifting at the audio clip (buffer) level, being this a basics one for loop-based music making :)

But I still have many things to do... and so little time ;)

Cheers
--
rncbc aka Rui Nuno Capela

This library looks very intriguing. It would certainly be a welcome addition to Qtractor.

Lexridge

Lexridge...NEVER dubit of the RUI capacity becuse Rui is one King developer!
You just ask some nice features and then after some night.....surprise...the feature is available on the CVS and ready to testing!
Rui have impressed me the last ( and ONLY ONE) night ,HOW fast have upgrade my Qranger to version 0.1.2 too!

Anyway, about the next features:
Pitch shift is the most important feature, this because we use TON of the Loopmasters library and just some instruments loops are recorded in "C" chords. If you start a new session song, then you have to use the same wav tonality for the whole session.

Second: IF ( I say IF...) in the audio winget loader OPEN, you add the key PLAY for listen first the wav file to load, where much better, because right now, untill the audio file will not imported on the Qtractor, you can never Pre listen it. I load sometime 30-100 wav files on Qranger, then Preliten on qranger and select just some nice. the work then is to DELETE the all audio files not used. One Prelisten key on the audio loader will help a lot. ( we can survive without..don't worry..lol)

My last dream is the giga files instruments loader...but I can wait....

again.. Rui you are the best!

cheers
Domenik

rncbc's picture

Many thanks domenik

I'm not that sure I deserve all the praise, I'm doing it on the shoulders of giants. ;)

About your second suggestion, regarding the open file dialog having a playback pre-listening/preview function. I confess it was my first thought when implementing the pre-listening feature you find in the Files widget. However I stared in schock when Qt4 dropped the preview extendability in the QFileDialog::getOpenFileName() method, which now maps to the native file-open dialog where available. I'm sure it was an option on the older Qt3 framework, but now it's gone. Pity.

I guess one has to build his own custom file-open dialog for that now; unfortunately I find the task way too distracting and far from (my) core business ;) let's just hope someone out there has already been there and done that and willing to pass the source... let's google around ;)

Byee
--
rncbc aka Rui Nuno Capela

What a great version, works very well here on Mandriva 2008.0. Thank you very much.
I'm really drawn by the midi tools menu; one question: If I just wanted to randomize the pitches of a midi file
or 'explode' the pitch element of the file can this be done leaving other elements in place? It would be good if
the percentage of pitch randomness could be adjusted. Except for the old 'jazz' sequencer I can't think what else
randomizes in this way. Anyway, well done! :)
Nev.

rncbc's picture

The Randomize tool in the MIDI clip editor does not have this option to affect the pitch of the selected MIDI note events.

As you can verify from the Tools\Randomize dialog tab, you can only randomize the onset (time), duration and velocity (value) of the selected events, being that randomization expressed in a certain percentage amount from their current value.

There's no note (pitch) randomize option, that's a fact. Truth is, I didn't have the need for it, until now :) Is it really a must have one? Sure it should be easy to implement but, how useful would it be?

Cheers and thanks for the compliments.
--
rncbc aka Rui Nuno Capela

I think it would be very much appreciated by a lot of people. Dave Phillips, for example, is still having to use Sequencer Plus (Dos)
because we're looking for the facilities that Cubase (for Atari!) midi provided. Midi composition on Linux is not a very sophisticated
affair. As a composer, both using sound and midi files, I'd like to see a lot more similar implementation. ;-)

Cheers,
Nev

rncbc's picture

And what are those facilities you're missing, besides of course note/pitch randomization?

Notice that there are just a few in the plan: swing/groove quantize and scale transpose. Another facility that should address the issue is scripting, but that is not in the sandbox yet but rather in the long-term plan :(

Please, let me know which actual MIDI tools are you missing the most, and please do detail how each one is supposed to work, because what's probably obvious to you might not be to me (eg. i never used cubase:)

Cheers
--
rncbc aka Rui Nuno Capela

why then not value to use in the mixer plugins the midi plugins too?
Maybe there will be more easy develope midi tools plugins for the realtime editing.

1) Midi Velocity/compressor: will automatically increase/decrease in % the whole midi track midi note velocity, instead to edit under the midi clip.
2) Midi transpose: will transpose the whole midi tracks in semitone scale.
3) Midi randomize: can make the features request before.
4) Midi swing/groove
5) Midi CC filters: here you can filter in realtime CC controllers
6) Midi Note filter: here you can filter the desidered notes

and how much more you want, without broken the qtractor code.
can be more interesting?
cheers

rncbc's picture

There's a chance in having MIDI plugin support indeed: VST MIDI effects. However this is only going to happen after the already long overdue DSSI/VSTi support gets done. In the meanwhile, one must live with the offline MIDI tools that are currently available.

Cheers
--
rncbc aka Rui Nuno Capela

QTractor supports Linux native VSTs, so there's the pizmidi collection of MIDI processing plugins:

http://www.kvraudio.com/forum/viewtopic.php?t=192282&start=0

Unfortunately those are realtime processors. What Nev and I want are things like these to be applied to a track(s) or any segment of a track in deferred time:

Track merge - Merge two or more tracks together
Note splits - Split notes from a track ccording to pitch, velocity, duration, modulus, etc.
Pitch randomization - Randomize according to specified key/mode (or not)
Track rebar
Transpose/Invert
Harmonic transposition/inversion
Retrograde - whole selection or only note-ons
Compex velocity/duration/etc.
Velocity scale/shift
MIDI CC map/scale/shift
Tempo transforms - accelerando/scale/shift/tap-tempo

It wouldn't hurt my feelings if these were all realtime operations as well. ;)

These transforms are only some of what I use in Sequencer Plus Gold. I'll be happy to list more, along with new ones I'd like to see. :)

Best,

dp

rncbc's picture

Hi Dave,

really happy to have you around,

I'm in awe with that MIDI processor listing :) any chance you pick up the details about the most used ones? I'm afraid I could only understand the need or use for the first three, track merge, note splits and the already discussed pitch randomization (not quite sure about the usefulness of this later one, though:). The remaining needs some word or two about their function, because what is forming inside my mind cloud is not necessarily what you may be assuming ;)

It is my natural stance, that all that and more, will be addressed in the scripting portion of the TODO plan. In fact, that's the main purpose of scripting, to have access to custom (non-)realtime edits and transformations. The main theme is when, not how, if you know what I mean ;)

Anyway, if any or all of those would get pretty specified, maybe, who knows, it might just get implemented sooner than later. And whom is better a person to make it happen than you, Dave? I'm meaning the specification, of course.

eh eh

Cheers
--
rncbc aka Rui Nuno Capela

Rui Nuno Capela wrote: ... 'and the already discussed pitch randomization (not quite sure about the usefulness of this later one, though:)'

it's a very useful compositional technique to generate ideas, for example, the famous/infamous (take your pick) John Adams has used
this technique for a number of years with midi, and the majority of the modernist composers in the 20th century have used various ways to introduce random elements in their works. Randomness can introduce multilayered complexity - so can working with quarter tones, but that's another question...?

rncbc's picture

No sweat :)

I will make Tool/Randomize/Note as as a new option, soon. As said, is not that difficult, in fact is dead easy ;) The way it will work is more like shuffling the selected note events, pitch wise that is.

Now I'll take the chance in asking for some help, now that all you are way more fluent in this theoretical things ;) Questions are about the consensual forms in implementing these ones:

- Groove/Swing Quantize
- Scale Quantize
- Scale Transpose
- Scale Randomize

Any pointers you might find pertinent?

Please?
--
rncbc aka Rui Nuno Capela

rncbc's picture

This one week-end CVS commit log entry says it all:
- A new MIDI editor tool is available: note/pitch randomize.

(qtractor 0.1.2.907+)

Byee
--
rncbc aka Rui Nuno Capela

I've downloaded cvs version to try qtractor 0.1.2.907+ version but cannot find a compile or make file.
Is there a qmake command I should use, please help.
Nev

sorry, just figured it out, sorry no problem,
Nev

just tried the new midi tool. Thanks so much Rui Nuno Capela :-)
Now if we could only address some of DP's requests we'd really be moving Linux midi forward.
Best Regards,
Nev

Just tried the new midi tool. Thank you very much Rui Nuno Capela :))
Now if we could only address some of DP's proposals we'd, at last, begin to move linux midi forward.
Cheers again,
Nev.

Hi Rui,

I've placed a page on-line in hope that Linux audio/MIDI developers may be inspired to do some embracing and extending of their own wrt Linux sound and music software:

SPG Xforms

The descriptive texts have been quoted verbatim from the Sequencer Plus status display. They are short and sweet, but please let me know if there's a transform that needs further clarification.

HTH,

dp

rncbc's picture

Thanks for the list Dave. I'm glad that the most common are implemented in qtractor already, only with different names and modality. And that brings me back again to the most pending ones, which I believe are in need for a good detailed specification, that being:

  • Groove/Swing Quantize - maybe partly called Super-Quantize in SPG, but needs an extensive clarification of what actually this might do, deterministically at least.
  • Scale Quantize - adjust selected note events to fit into a given key and scale pattern (maj, min, 7th, etc.)
  • Scale Transpose - transpose selection up or down a few semi-tones according to a given scale (maj, min, 7th, etc.)
  • Scale Randomize - move selected notes up or down in random number of semi-tones but fit to a given scale pattern (maj, min, 7th, etc.)

Any thoughts?
--
rncbc aka Rui Nuno Capela

Hi Rui,

The Scale stuff is perhaps easier to deal with, so I'll start there.

It seems that they'll all require an analysis stage to determine which notes will need changed to fit into the new scale template. However, what if the scale is not a conventional major/minor scale or one of its derived modes ? I think the best solution might include both preset scale templates *and* the facility for the user to enter his own scale form. Perhaps the best way to do this would be to allow the user to define an interval series and a transposition level. Thus, unusual and exotic scales could be easily implemented (e.g. pentatonic scales, two-octave compound scales, symmetrical scales, 12-tone rows, etc.), without the need for hard-coding their definitions. Maybe these user-defined template files could be saved and re-used ?

You can see that the coders at Voyetra kept the choices simple, including only the standard modal derivations from the Western classical major scale. When I was a beta-tester for them I asked Bruce Frazer if they'd implement something like a 12-tone matrix generator, but he dismissed the idea as probably being of interest only to me. Rather short-sighted, in my opinion.

The Groove/Quantize stuff is maybe better researched by looking at the implementations in Hydrogen and other sequencers. The general notion is that this transform provides a way to "naturalize" the rhythmic feel of an otherwise too-rigid MIDI track. In a strictly MIDI scenario this can be achieved by minutely (or not so minutely) shifting random and/or selected beats forward or backwards in time. The classic model is the jazz drummer: Each limb is playing slightly out of phase with the others, creating a more multi-dimensional sense of the beat. Craig Anderton covered this aspect in an article about what he called the Tutt-Guerin Effect. He simply recorded some drummers with MIDI sensors, then he looked at how their various beats aligned with the sequencer beats and bar lines. The width of temporal separation creates what we call a groove, and since there are multiple beat lines (i.e. the drummer is playing four rhythmic lines at once) the separation can be quite variable. Thus, we can expect notable differences between the representations of a soul drummer, a rocker, and a jazz player, indicated by varying "widths" away from the beat/bar strictures.

Normal rhythmic quantization tends to be too mechanical because it's applied equally throughout a track. One dodge is to split out each instrument in a drum set to their own tracks, then shift the tracks slightly forward or backwards in time. However, again the effect becomes too mechanical too quickly. Voyetra's Super Quantize addresses more factors than start-times and durations, with considerably more random variables.

Groove templates are another cool idea. You simply select a rhythmic format (blues, country, rock, jazz, etc.) and tell the sequencer to apply that groove to a piece or selection.

Newer methods include analyzing an audio track for its groove factors and creating a rhythm template that can then be applied to other audio/MIDI tracks. I've not worked with this method and can say no more about it, other than that it seems to me to be a great way to import new grooves and feels into the music. I have no idea how difficult it might be to program such a method.

Btw, see the Wikipedia entry for "Groove", it's quite informative.

Here's Cakewalk's explanation:

"Groove Quantize allows you to change the "feel" of an existing performance. This is especially handy for spicing up step-entered MIDI data or performances that need tight, groovin' timing. The best way to learn how to use Groove Quantize is by experimentation. Other than the Groove Source itself, the settings that will effect Groove Quantize the most are the Resolution, Strength Duration, Strength Time, and Strength Velocity."

Here's another definition for Groove Quantize from the Babylon dictionary:

"A sequencing quantization method that uses a performance template instead of an absolute value to alter the rhythmic characteristics of a sequence. Usually involves preset grooves (i.e. funk, swing, etc.) or uses one rhythmic sequence as a model for quantizing another sequence."

I hope that helps a bit, Rui, but again please let me know if anything needs further clarification. IMO the transforms implemented in Sequencer Plus Gold ought to be considered the *minimum* set for all subsequent MIDI sequencers. Alas, it seems that Linux audio devels are not so attentive to MIDI, but it is still of the utmost importance to many composers.

Btw, for my work-style Sequencer Plus Gold has another advantage: It's entirely keyboard-controlled, ergo *much* faster to use than a mouse-based sequencer. How much of QTractor's MIDI editor can be worked with the keyboard now ? I'd like to end my use of Sequencer Plus, it has file-size limitations that bother me, and it's non-FOSS. I'm not a zealot these days, I believe in hybrid systems, but I still prefer to support FSF-defined free software over the proprietary stuff whenever possible.

And what about handling sys-ex messages in QTractor ? ;)

You may yet regret me being here, Rui. :)

Best always,

dp

rncbc's picture

As of todays cvs (qtractor 0.1.2.911+) audio pitch-shifting makes its first appearance with the optional help from Chris Cannam's RubberBand library.

Pitch-shifting applies to audio clips only and its setting is accessible through the audio clip properties dialog (Edit/Clip/Edit...). Please note that this is very experimental stuff and shall have a better user interface in the future, at least for changing the pitch of an audio-clip in some intuitive way, just don't know what atm. :)

As the rubberband library also does time-stretching, one might want to keep use of the old internal WSOLA like algorithm borrowed and refactored from Olli Parviainen's SoundTouch library, which is 10-fold faster and quite effective for small time stretchings. That's why there's this new global configuration option (View/Options/Audio/WSOLA time stretching) which implies just that.

Cheers && Enjoy.
--
rncbc aka Rui Nuno Capela

P.S. this is NOT an April-fools prank.

Ciao Rui
We all saw that you are to much fast to include a lot of amazing features in really so short time..
Do you have MAYBE valued also to include this?
http://mscore.sourceforge.net/en/idx.php

I don't need it now for my styles developement, BUT maybe for the next future, this will be really one amazing features ( like have rosengarden...)
Just value it, don't worry, I will not stress you for this.
cheers and compliment again for your last new features!!
Domenik

rncbc's picture

Nope.

Sorry. Truth is, I don't have plans nor the knowledge to do a score viewer/editor in Qtractor. To be honest, I'm not interested either. And if I were it would distract me under some maintenance hell that I just don't even care or have the guts to. Simply put: I don't read score nor I plan to learn in the (rest of) my lifetime :o)

But that's not the real issue. MuseScore reads standard MIDI files and uses MusicXML as its interchange format, and also is a dedicated kind of sequencer. So why would one bolt it in qtractor when it already does things right although standalone?

And to throw more gasoline into the fire: Werner Schweer is also the original author of MusE sequencer, a pretty serious competitor and way ahead of qtractor in many features. Why did he took the score typesetter out of it (or at least is not maintained in there anymore) and forked to MuseScore ?

I guess you better ask Werner et al. for those features in MuseScore you're really missing, if any.

Sorry again for the rants but this time it's not just a question of time. It's my own pure avoidance, which also rhymes with ignorance. eheh, so I am score challenged, so what?

No hard feelings, I hope.

Ciao
--
rncbc aka Rui Nuno Capela

No hard feelings at all!
I told before that was just a idea and I agree with you, because I don't need at all right now too.
Midi clips editor is now complete for my stuff.
Is missing only one old loader feature...but I will try to stress Chr......n for help me :).
Ciao
domenik

I agree with Rui. It seems to me that Werner made a well-deliberated decision to chop the scoring out of MusE, I suggest following his lead. Let the available programs (MScore, NtEd, Canorus, etc.) do that work, they'll put more focused work into it. Scoring software requires a deep background in the details of music manuscript, and Rui freely admits that the scoring domain is not his musical focus.

I'll be pleased to see QTractor develop further capabilities in the MIDI and audio domains. :)

Best,

dp

Look in your donation qtractor page..
P.S. this is NOT an April-fools prank.
LOL

Rui, great updates., and thanks for your continued contribution to my musical enjoyment. Qtractor is my goto quick drafter, and it's excellent, being fast, and erm, fast.
I've just got to the latest cvs after spending a lot of time recording, and deep inside Muse Score, learning what the mighty Werner has done. I'm impressed with the range of tools we have in Qtractor now, and respectfully ask you to consider adding shortcuts for all the actions, as i'm a qwerty kinda guy, hehe, and don't like using a mouse. (Still seems unnatural, after all these years.)

I add my positive vibes in particular to your introduction of the option to add a blank clip in a track. Seems simple, but is essential for us midiheads.

I also add my vote for you to NOT include notation editing in qtractor. Too many have tried and discovered it can be highly problematic. Qtractor is light, powerful, stable, and growing ever more mature, even from its current highly useable state.
Personally, I think Werner did the right thing forking notation away from Muse, as both programmes have benefited in terms of performance, and stability. (Imho) And with the recent advent of midi channel and port out in MuseScore, we can now route the midi anywhere, including into Linuxsampler for example, and Qtractor.

Well done Rui, and thanks again for a fine release. It's much appreciated.

Hehe, i have one request at this stage. Is it possible to change the colour of the meter signals? That sickly lime green does nothing for me at all. I appreciate others will disagree, so if you can point a linux new user in the right direction, i'll have a go at doing this myself.

Regards,

Alex.

Pages

Add new comment