Go Back   Cockos Incorporated Forums > REAPER Forums > REAPER Q&A, Tips, Tricks and Howto

Reply
 
Thread Tools Display Modes
Old 03-25-2019, 08:58 AM   #1
Mordi
Human being with feelings
 
Mordi's Avatar
 
Join Date: May 2014
Location: Norway
Posts: 982
Default Ways to get around this small issue with exporting sound effects

I'm making sound effects for a game, and now I want to export them. My first inclination was to use regions. However, there is a slight problem.

In the reference video, the player is not pausing between actions. This leads to a slight overlap in the sounds.


- If I were to use regions, there would be some bleed from each sound to the other.
- Muting the items and using the render queue avoids this problem, but introduces a new one: There is no way to save the render queue for easy exporting later, after revisions.
- I could duplicate the tracks which have overlapping sounds, but this would lead to a cluttered project, and problems with keeping things synchronized between duplicated tracks.
- I could split the video to create pauses in between actions using ripple editing, and then use regions to export. This would take a lot of work upfront but would be a permanent solution.

Has anyone encountered this before? How would you solve it?

Edit: The image above turned out to be the only case of overlap in the entire project, so I simple inserted some empty space in between them and this project was fixed.

Last edited by Mordi; 03-25-2019 at 09:14 AM.
Mordi is offline   Reply With Quote
Old 03-25-2019, 11:38 AM   #2
divedive
Human being with feelings
 
Join Date: Feb 2012
Location: New York
Posts: 230
Default

Hi Mordi,
Im a fellow game sound designer.
Im not sure i follow all of the issues you're running into, but i mostly keep my sessions organized by, and export via, regions.

I really love reapers region functionality. I make and use scripts that extend region functionality much further, and for me, the region feature set is a major selling point over other DAWs. With that said, there are a lot of sound designers that like using Sub-Projects. If you haven't checked out that workflow, you should. It's also excellent and may be relevant to your questions. (I have not adopted the subproject workflow because it differs from the region workflow in ways im not willing to trade and generally i feel is slower).

To answer your question, I also:
1) take time to split the video, and or duplicate a video clip item down the timeline. for me this time is negligible - and even scriptable in some cases. (generate regions via script and automatically snap video clips to them.)

2) create additional tracks/track-folders, when necessary like when a sound event needs multiple concurrent layers.

divedive
divedive is offline   Reply With Quote
Old 03-26-2019, 02:25 PM   #3
Mordi
Human being with feelings
 
Mordi's Avatar
 
Join Date: May 2014
Location: Norway
Posts: 982
Default

Thanks for the tips divedive! I think the regions workflow is best as well. I only ran into one case where I had overlapping regions on the same tracks, so this was a quick-fix it turned out.

By the way, I made a couple of scripts to make the region workflow really fast for exporting. Maybe someone will find them useful.

They are written in Lua.

- - - - - -

Create single region from selected items (get name and color from folder track)


Code:
SCRIPT_NAME = "Create single region from selected items (get name and color from folder track)"

reaper.ClearConsole()

function Msg(variable)
  reaper.ShowConsoleMsg(tostring(variable).."\n")
end

selectedItemNum = reaper.CountSelectedMediaItems()

-- Abort if no items are selected
if selectedItemNum == 0 then
  return
end

-- Begin undo-block
reaper.Undo_BeginBlock2(0)

-- Get total span of items
regionPos = 0
regionEnd = 0
topTrackIndex = 0
for i = 0, selectedItemNum-1 do
  -- Get item
  item = reaper.GetSelectedMediaItem(0, i)
  
  -- Get item position
  itemPos = reaper.GetMediaItemInfo_Value(item, "D_POSITION")
  
  -- Get item length
  itemLength = reaper.GetMediaItemInfo_Value(item, "D_LENGTH")
  
  -- Get track from item
  itemTrack = reaper.GetMediaItem_Track(item)
  
  -- Get track index from item track
  itemTrackIndex = reaper.GetMediaTrackInfo_Value(itemTrack, "IP_TRACKNUMBER")
  
  -- Use first item as initial start and end
  if i == 0 then
    regionPos = itemPos
    regionEnd = itemPos + itemLength
    topTrackIndex = itemTrackIndex
  end
  
  -- Check start
  if regionPos > itemPos then
    regionPos = itemPos
  end
  
  -- Check end
  if regionEnd < itemPos + itemLength then
    regionEnd = itemPos + itemLength
  end
  
  -- Check track index
  if itemTrackIndex < topTrackIndex then
    topTrackIndex = itemTrackIndex
  end
  
end

-- Get track from track index
track = reaper.GetTrack(0, topTrackIndex-1)

-- Get parent of topmost track
parent = reaper.GetParentTrack(track)

-- If it has no parent, use the topmost track instead
if parent == nil then
  parent = track
end

-- Get color of track
color = reaper.GetTrackColor(parent)

-- Get name of track
retval, name = reaper.GetTrackName(parent, "")

-- Create region
reaper.AddProjectMarker2(0, true, regionPos, regionEnd, name, -1, color)

-- End undo-block
reaper.Undo_EndBlock2(0,SCRIPT_NAME,-1)
- - - - - -

Set render matrix by comparing track names and region names


Code:
SCRIPT_NAME = "Set render matrix by comparing track names and region names"

reaper.ClearConsole()

function Msg(variable)
  reaper.ShowConsoleMsg(tostring(variable).."\n")
end

-- Begin undo-block
reaper.Undo_BeginBlock2(0)

-- Get number of regions
retval, num_markers, num_regions = reaper.CountProjectMarkers(0)

-- Get number of tracks
num_tracks = reaper.CountTracks(0)

-- Loop through all markers and regions
for i = 0, num_regions+num_markers-1 do
  retval, isrgn, pos, rgnend, rgnName, rgnIndex = reaper.EnumProjectMarkers(i)
  
  -- Check if this marker is a region
  if isrgn then
  
    -- Loop through all tracks
    for n=0, num_tracks-1 do
    
      -- Get track
      track = reaper.GetTrack(0, n)
      
      -- Get name of track
      retval, trackName = reaper.GetTrackName(track, "")
      
      -- Check if names match
      if rgnName == trackName then
        
        -- Tick the corresponding box in the region render matrix
        reaper.SetRegionRenderMatrix(0, rgnIndex, track, 1)
      end
      
    end
  end
end

-- End undo-block
reaper.Undo_EndBlock2(0,SCRIPT_NAME,-1)
- - - - -

Final step is to export using this as the filename:
$region $namecount
Mordi is offline   Reply With Quote
Old 03-26-2019, 04:18 PM   #4
divedive
Human being with feelings
 
Join Date: Feb 2012
Location: New York
Posts: 230
Default

Cool scripts! and beautifully organized session!

There's a couple features I'd love to see added to this, but what you're doing there is as good as it gets, as far as I can tell.

A lot of times I like to check my files after export, so I usually toggle that render settings option to 'reimport after render'. My only issue is it creates a new track every time I render. (I wish it I could specify the track to reimport to instead.) I also wish I could overwrite file references that are in the existing session, having those media items be updated. IE if you have 10 media items that are all referencing a single source file, you can render to overwrite that file (and all 10 media items reference this new render.) Reaper currently does not allow overwriting files in the open session, which is unfortunate. This would help work with sounds with variations and layers, as you could put copies of rendered items under your variation regions and update them as you need to. The problem is, if you Render a file and use the final filename - and re-import it, you have to make sure you delete all references to it from your session before you can re-render it.

Also - great idea putting a color palette on the toolbar! I never thought of that! Must help keep your sessions organized.
divedive is offline   Reply With Quote
Old 03-26-2019, 10:40 PM   #5
Mordi
Human being with feelings
 
Mordi's Avatar
 
Join Date: May 2014
Location: Norway
Posts: 982
Default

Quote:
Originally Posted by divedive View Post
I also wish I could overwrite file references that are in the existing session, having those media items be updated. IE if you have 10 media items that are all referencing a single source file, you can render to overwrite that file (and all 10 media items reference this new render.) Reaper currently does not allow overwriting files in the open session
I think that if you set the media items as offline, you can overwrite their source files.



Maybe just make a toolbar button that sets all items offline, and then after rendering making everything online again?
Mordi is offline   Reply With Quote
Old 03-27-2019, 11:24 AM   #6
divedive
Human being with feelings
 
Join Date: Feb 2012
Location: New York
Posts: 230
Default

good idea.
thanks!
divedive is offline   Reply With Quote
Old 03-27-2019, 11:26 AM   #7
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

yo! wuz uuup with ~select all items+batch convert~?
Bri1 is offline   Reply With Quote
Old 03-29-2019, 02:07 AM   #8
Mordi
Human being with feelings
 
Mordi's Avatar
 
Join Date: May 2014
Location: Norway
Posts: 982
Default

Yes, the batch file converter is currently the best option for sending all the rendered files through an FX chain. The downside is that this must be done manually for each revision.

I made a feature request which would solve that.

Last edited by Mordi; 03-29-2019 at 04:41 AM.
Mordi is offline   Reply With Quote
Old 04-02-2019, 11:15 AM   #9
hopi
Human being with feelings
 
hopi's Avatar
 
Join Date: Oct 2008
Location: Right Hear
Posts: 15,618
Default

never mind I must have copied the text badly user error

thanks for the scripts! these really make this super easy!!!!
__________________
...should be fixed for the next build... http://tinyurl.com/cr7o7yl
https://soundcloud.com/hopikiva

Last edited by hopi; 04-02-2019 at 11:49 AM.
hopi is offline   Reply With Quote
Old 05-03-2019, 11:12 AM   #10
Mordi
Human being with feelings
 
Mordi's Avatar
 
Join Date: May 2014
Location: Norway
Posts: 982
Default

Both scripts are now available via ReaPack.

They've been refined somewhat. The "Set render matrix" script will tell you if any regions are not tagged for exporting. I would sometimes change a track name and forget to update the region.
Mordi is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:04 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.