Qtractorqtractor
Total Page:16
File Type:pdf, Size:1020Kb
LAC2015@JGU-MainzLAC2015@JGU-Mainz TenTen YearsYears ofof Qstuff*Qstuff* IsIs itit goodgood enoughenough alreadyalready ?? RuiRui NunoNuno CapelaCapela rncbc.orgrncbc.org AprilApril 20152015 TenTen YearsYears ofof Qstuff*Qstuff* (1)(1) GoodGood SoftwareSoftware TakesTakes TenTen Years.Years. GetGet UsedUsed ToTo it.it. –– JoelJoel Spolsky,Spolsky, 20012001 http://www.joelonsoftware.com TenTen YearsYears ofof Qstuff*Qstuff* (2)(2) writingwriting goodgood applicationsapplications isis hardhard.. writingwriting goodgood graphicalgraphical applicationsapplications isis harderharder.. writingwriting goodgood graphicalgraphical audioaudio applicationsapplications isis harderharder stillstill.. writingwriting goodgood graphicalgraphical audioaudio && MIDIMIDI applicationsapplications isis anan exerciseexercise inin masochismmasochism.. –– PaulPaul Davis,Davis, 20032003 “Some Things You May Not Have Thought About When Writing an Audio Application” LADC2003@ZKM-Karlsruhe 2003-20042003-2004 TheThe DawnDawn ofof Qstuff*Qstuff* ● QjackCtlQjackCtl qjackctl.sourceforge.netqjackctl.sourceforge.net jackaudio.orgjackaudio.org ● QsynthQsynth qsynth.sourceforge.netqsynth.sourceforge.net fluidsynth.orgfluidsynth.org ● QsamplerQsampler qsampler.sourceforge.netqsampler.sourceforge.net linuxsampler.orglinuxsampler.org Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 4 2005-20072005-2007 EnterEnter QtractorQtractor OfficiallyOfficially presentedpresented toto thethe massesmasses onon LAC2007@TU-BerlinLAC2007@TU-Berlin Techno-boyTechno-boy bedroombedroom studiostudio,, anyoneanyone ?? (still(still afterafter aa decadedecade ?? :-)):-)) NotableNotable milestones:milestones: 20082008 DSSI,DSSI, nativenative VST,VST, Tempo-mapTempo-map 20092009 LV2LV2 20112011 TYOQATYOQA Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 5 2008-20112008-2011 SideworksSideworks ● QXGEditQXGEdit qxgedit.sourceforget.netqxgedit.sourceforget.net ● QmidiCtlQmidiCtl qmidictl.sourceforge.netqmidictl.sourceforge.net ● QmidiNetQmidiNet qmidinet.sourceforge.netqmidinet.sourceforge.net Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 6 2012-20152012-2015 Proto-toysProto-toys a.k.a.a.k.a. TheThe Vee-OneVee-Oness ● synthv1synthv1 synthv1.sourceforge.netsynthv1.sourceforge.net ● samplv1samplv1 samplv1.sourceforge.netsamplv1.sourceforge.net ● drumkv1drumkv1 drumkv1.sourceforge.netdrumkv1.sourceforge.net Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 7 WhoWho isis behindbehind Qstuff*Qstuff* ?? HobbyHobby workwork ofof oneone lone-wolflone-wolf developerdeveloper me,me, rncbcrncbc a.k.a.a.k.a. RuiRui NunoNuno CapelaCapela aa giftgift economyeconomy playerplayer ;-);-) Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 8 ButBut whywhy ?? JustJust forfor funfun TheThe motivemotive .. .. .. LongLong timetime enthusiasmenthusiasm onon electronicelectronic musicmusic TheThe skillskill .. .. .. AA half-lifehalf-life onon programmingprogramming (20y+)(20y+) TheThe momentmoment .. .. .. AnAn extraordinaryextraordinary alignmentalignment eventevent occurredoccurred inin thethe wholewhole UniverseUniverse .. .. .. So,So, thatthat waswas itit !! (and(and stillstill isis ;-));-)) Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 9 BackBack toto Qtractor...Qtractor... qtractor.sourceforge.netqtractor.sourceforge.net BetaBeta already!already! FullyFully functionalfunctional (no(no not-implemented-yetsnot-implemented-yets)) WhatWhat YouYou SeeSee IsIs WhatWhat IsIs WorkingWorking StillStill W.I.P.W.I.P. …… justjust notnot thatthat hardhard anymoreanymore ;);) OpenOpen forfor BusinessBusiness (no(no moneymoney involved)involved) users,users, developers,developers, players,players, nurturersnurturers .. .. .. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 10 FeaturitisFeaturitis (1)(1) Multi-trackMulti-track audioaudio andand MIDIMIDI sequencingsequencing andand recording.recording. DevelopedDeveloped onon purepure Qt4Qt4 C++C++ applicationapplication frameworkframework (Qt5(Qt5 ready!).ready!). UsesUses JACKJACK forfor audioaudio andand ALSAALSA sequencersequencer forfor MIDI,MIDI, asas multimediamultimedia infrastructures.infrastructures. TraditionalTraditional multi-trackmulti-track tapetape recorderrecorder controlcontrol paradigm.paradigm. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 11 FeaturitisFeaturitis (2)(2) AudioAudio filefile formatsformats support:support: OGGOGG (libvorbis),(libvorbis), MP3MP3 (libmad,(libmad, playbackplayback only),only), WAV,WAV, FLAC,FLAC, AIFFAIFF andand many,many, manymany moremore (libsndfile).(libsndfile). StandardStandard MIDIMIDI filesfiles supportsupport (format(format 00 andand 1).1). Non-destructive,Non-destructive, non-linearnon-linear editing.editing. UnlimitedUnlimited numbernumber ofof trackstracks perper session/project.session/project. UnlimitedUnlimited numbernumber ofof overlappingoverlapping clipsclips perper track.track. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 12 FeaturitisFeaturitis (3)(3) XMLXML encodedencoded sessionsession // projectproject descriptiondescription filesfiles (SDI).(SDI). Point-and-click,Point-and-click, multi-select,multi-select, drag-and-dropdrag-and-drop interactioninteraction (drag,(drag, move,move, drop,drop, cut,cut, copy,copy, paste,paste, paste-repeat,paste-repeat, delete,delete, split,split, merge).merge). UnlimitedUnlimited undoundo // redo.redo. Built-inBuilt-in mixermixer andand monitormonitor controls.controls. Built-inBuilt-in connectionconnection patch-baypatch-bay controlcontrol andand persistencepersistence ((a-laa-la QjackCtlQjackCtl ;)).;)). Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 13 FeaturitisFeaturitis (4)(4) LADSPA,LADSPA, DSSI,DSSI, nativenative VSTVST andand LV2LV2 plug-insplug-ins support.support. UnlimitedUnlimited numbernumber ofof plug-insplug-ins perper tracktrack oror bus.bus. Plug-inPlug-in presets,presets, programsprograms andand chunkchunk // configurationsconfigurations support.support. UnlimitedUnlimited audioaudio effecteffect sendsend // returnreturn insertsinserts perper tracktrack oror bus.bus. Loop-recordingLoop-recording // takes.takes. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 14 FeaturitisFeaturitis (5)(5) AudioAudio // MIDIMIDI clipclip fade-in/outfade-in/out (linear,(linear, quadratic,quadratic, cubic).cubic). AudioAudio // MIDIMIDI clipclip gaingain // volume,volume, normalize,normalize, export.export. AudioAudio // MIDIMIDI tracktrack andand pluginplugin parameterparameter automationautomation (dynamic(dynamic curves,curves, sample&hold,sample&hold, linearlinear andand splinespline modes).modes). AudioAudio clipclip time-stretchingtime-stretching (WSOLA-like,(WSOLA-like, librubberband).librubberband). AudioAudio clipclip pitch-shiftingpitch-shifting (librubberband).(librubberband). Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 15 FeaturitisFeaturitis (6)(6) AudioAudio clipclip seamlessseamless sample-ratesample-rate conversionconversion (libsamplerate).(libsamplerate). AudioAudio // MIDIMIDI tracktrack exportexport (mix-down,(mix-down, merge).merge). AudioAudio // MIDIMIDI metronomemetronome barbar // beatbeat clicks.clicks. UnlimitedUnlimited tempotempo // time-signaturetime-signature map.map. UnlimitedUnlimited locationlocation // barbar markers.markers. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 16 FeaturitisFeaturitis (7)(7) MIDIMIDI clipclip editoreditor (matrix(matrix // pianopiano roll).roll). MIDIMIDI instrumentinstrument definitionsdefinitions ((a-laa-la Cakewalk(tm)Cakewalk(tm) (*.ins)),(*.ins)), SoundFontSoundFont (*.sf2)(*.sf2) andand MIDIMIDI NamesNames XMLXML (*.midnam)(*.midnam) filesfiles alsoalso supported.supported. MIDIMIDI controllercontroller mappingmapping // learnlearn // assignmentassignment (mixer(mixer andand plug-inplug-in parameters).parameters). MIDIMIDI systemsystem exclusiveexclusive (SysEx)(SysEx) setups.setups. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 17 FeaturitisFeaturitis (8)(8) JACKJACK transporttransport syncsync mastermaster // slave.slave. JACKJACK sessionsession support.support. NSMNSM (Non(Non SessionSession Management)Management) support.support. MMCMMC controlcontrol surfacesurface enabled.enabled. MIDIMIDI SongSong PositionPosition cueingcueing support.support. ConfigurableConfigurable keyboardkeyboard shortcuts.shortcuts. Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 18 ScreenshotScreenshot !! Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 19 EvilEvil FlowFlow DiagramDiagram (1)(1) Input Output in monitor out Bus Bus monitor Track R Clips M S monitor = Volume / Pan Track Plug-ins R Clips M S R = Record ... M = Mute monitor S = Solo Track R Clips M S ... Input Output in monitor out Bus Bus monitor Track R Clips M S Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 20 EvilEvil FlowFlow DiagramDiagram (2)(2) Audio strip vol pan plug-ins Audio in Audio out meter Plug-ins Audio fx Audio fx Audio fx Audio fx Audio in Audio out Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 21 EvilEvil FlowFlow DiagramDiagram (3)(3) MIDI strip vol pan MIDI out MIDI in plug-ins Audio out meter plug-ins MIDI fx MIDI Audio fx Audio fx instrument MIDI in Audio out Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org April 2015 22 Ten Years of Qstuff* - LAC2015@JGU-Mainz - rncbc.org Years Ten Send /Inserts Return Send Send /Inserts Return Send in