|
|
|
03-25-2019, 08:58 AM
|
#1
|
Human being with feelings
Join Date: May 2014
Location: Norway
Posts: 982
|
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.
|
|
|
03-25-2019, 11:38 AM
|
#2
|
Human being with feelings
Join Date: Feb 2012
Location: New York
Posts: 230
|
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
|
|
|
03-26-2019, 02:25 PM
|
#3
|
Human being with feelings
Join Date: May 2014
Location: Norway
Posts: 982
|
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
|
|
|
03-26-2019, 04:18 PM
|
#4
|
Human being with feelings
Join Date: Feb 2012
Location: New York
Posts: 230
|
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.
|
|
|
03-26-2019, 10:40 PM
|
#5
|
Human being with feelings
Join Date: May 2014
Location: Norway
Posts: 982
|
Quote:
Originally Posted by divedive
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?
|
|
|
03-27-2019, 11:24 AM
|
#6
|
Human being with feelings
Join Date: Feb 2012
Location: New York
Posts: 230
|
good idea.
thanks!
|
|
|
03-27-2019, 11:26 AM
|
#7
|
Banned
Join Date: Dec 2016
Location: England
Posts: 2,432
|
yo! wuz uuup with ~select all items+batch convert~?
|
|
|
03-29-2019, 02:07 AM
|
#8
|
Human being with feelings
Join Date: May 2014
Location: Norway
Posts: 982
|
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.
|
|
|
04-02-2019, 11:15 AM
|
#9
|
Human being with feelings
Join Date: Oct 2008
Location: Right Hear
Posts: 15,618
|
never mind I must have copied the text badly user error
thanks for the scripts! these really make this super easy!!!!
Last edited by hopi; 04-02-2019 at 11:49 AM.
|
|
|
05-03-2019, 11:12 AM
|
#10
|
Human being with feelings
Join Date: May 2014
Location: Norway
Posts: 982
|
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.
|
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -7. The time now is 01:04 AM.
|