• Open related virtual instrument (REAPER)

    If you are like me, you have your MIDI tracks separated from your Kontakt instruments. This way you don't waste Konkakt instances.

    This script searches recursively for all instruments reachable through the sends of the current selected track and opens all of them.

    DEBUG = false
    ROUTE_CATEGORY = { Receive = -1, Send = 0, HardwareOutput = 1 }
    ROUTE_PARAM_NAME = {
        Mute = "B_MUTE",
        Phase = "B_PHASE",
        Mono = "B_MONO",
        Volume = "D_VOL",
        Pan = "D_PAN",
        PanLaw = "D_PANLAW",
        SendMode = "I_SENDMODE",
        AutoMode = "I_AUTOMODE",
        SourceChannel = "I_SRCCHAN",
        DestChannel = "I_DSTCHAN",
        MidiFlags = "I_MIDIFLAGS",
        SourceTrack = "P_SRCTRACK",
        DestTrack = "P_DESTTRACK",
        Envelope = "P_ENV",
    }
    TRACKFX_SHOW = { HideChain = 0, ShowChain = 1, HideFloating = 2, ShowFloating = 3 }
    function debug(msg)
        if (DEBUG) then
            reaper.ShowConsoleMsg(msg .. "\n")
        end
    end
    local function open_instrument(track, instrumentIndex)
        reaper.TrackFX_Show(track, instrumentIndex, TRACKFX_SHOW.ShowFloating)
    end
    local function search_instruments(track)
        local trackIndex = reaper.CSurf_TrackToID(track, false)
        local _, trackName = reaper.GetTrackName(track)
        local trackDesc = trackIndex .. ". " .. trackName
        debug("Searching track " .. trackDesc)
        local instrumentIndex = reaper.TrackFX_GetInstrument(track)
        if instrumentIndex ~= -1 then
            debug("Track " .. trackDesc .. " has instrument!")
            return { { Track = track, InstrumentIndex = instrumentIndex } }
        else
            debug("Track " .. trackDesc .. " has no instrument")
        end
        local trackSends = reaper.GetTrackNumSends(track, ROUTE_CATEGORY.Send)
        local midiSendFound = false
        local dependantInstruments = {}
        for sendIndex = 0, trackSends - 1, 1 do
            local midiFlags = reaper.GetTrackSendInfo_Value(track, ROUTE_CATEGORY.Send, sendIndex, ROUTE_PARAM_NAME.MidiFlags)
            if midiFlags then
                midiSendFound = true
                local target = reaper.GetTrackSendInfo_Value(track, ROUTE_CATEGORY.Send, sendIndex, ROUTE_PARAM_NAME.DestTrack)
                local dependantInstrumentsOfSend = search_instruments(target)
                for _, instrument in pairs(dependantInstrumentsOfSend) do
                    table.insert(dependantInstruments, instrument)
                end
            end
        end
        if not midiSendFound then
            debug("Track " .. trackDesc .. " does not have MIDI sends")
        end
        return dependantInstruments
    end
    local selectedTrack = reaper.GetSelectedTrack(0, 0)
    local instruments = search_instruments(selectedTrack)
    for _, instrument in pairs(instruments) do
        open_instrument(instrument.Track, instrument.InstrumentIndex)
    end
    

    Read more...

  • Recording studio diary #2

    Studying Reaper. Seems amazing, I might perfectly switch to it after +20 years with Cakewalk. I'm very seduced by the ridiculous amount of available customization.

    Read more...

  • Recording studio diary

    Just a quick note on the studio: I've been busy setting up the wires so that the room is not a complete mess.

    I've purchased a couple of SIGNUM to tidy up my wires and powerstrips.

    I've also did a couple of tests with the microphone and the flute. The mic is EXTREMELY sensitive, I can see the slightest sound in the VU meter, between -40dB and -60dB. I assume that this is normal and that by using gates, expanders or other filters in the DAW I will be able to clean up the signal.

    Read more...

  • My new home recording studio is ready

    This Monday I received the last item of my new home recording studio! I can't wait to start playing with it!

    Computer

    Software

    Audio gear

    Acoustic instruments

    Read more...

  • Installing Jekyll in Windows

    The best least failure-prone way I've found is by using RubyInstaller builds. Go to http://rubyinstaller.org/downloads/ to get the latest Ruby+Devkit (be careful to choose well your architecture).

    gem install jekyll bundler
    

    If you have to create a new Jekyll app:

    jekyll new appdir
    cd appdir
    

    Finally:

    bundle install
    bundle exec jekyll serve
    

    2020-04-24: Removed update of Gemfile to add wdm, jekyll new adds that already.

    Read more...