won't properly import transient data from WAV file exported by Reaper (and unrelated questions/suggestions)

Official support for: tx16wx.com
Post Reply New Topic
RELATED
PRODUCTS

Post

Since Reaper 6, the ability to save transient info into WAV files when rendering items was added. From the official What's New in Reaper 6 PDF:
11 Embed Transient Information in WAV and AIFF Files
The Render to File Dialog now also includes the option Embed stretch markers/transient guides.
WAV and AIFF files both support embedded information about the file tempo and transients: WAV does this by
adding acid chunks: chunk is a term of art, rather like an extension for an audio file.
AIFF does this using apple loops chunks.
Previously, REAPER would identify wav/acid tempo information on import and give you the File contains
tempo information dialog (with the option to adjust), and also supported embedding the project tempo as an
acid chunk when rendering WAV.
Significant improvements are:
 Now reaper calculates that tempo more correctly on export as the average tempo of the entire rendered
media.
 Now reaper also supports embedding tempo (as beat length, which amounts to the same thing) in AIF
files, via the apple loops chunk
 Now when importing a WAV or AIFF file that has transient information embedded, reaper will recognize
the information and prompt if you would like to either import the file as beat slices (exactly like rex
files), or as a single item with transient markers, or just as plain media.
And from the 3.5.0 changelog of TX16Wx:
FLAC import now recognizes and reads WAV smpl/inst/cue/acid etc chunks if preserved.
FLAC save now generates smpl/inst/cue/acid etc chunks in addition to native TX16Wx metadata.
So what I did was render an item with transient data using Reaper by using Reaper's own transient detection to add transient markers and just checking the appropriate box on render. I thought this worked at first as if I import the rendered file back into a track on Reaper, it properly prompts what to do with the transient info in the WAV file. If I import this into TX16Wx, it does absolutely nothing but load it as an ordinary WAV file. You can see the file I'm talking about here.
The reason I'm doing this to begin with is that TX16Wx's own transient detection seems to be really janky and fails to detect transients, detects transients where they seemingly don't exist, and offsets the slices far before or even far after transients, causing previous slices to play parts of the next transient even if it's blatantly obvious the transient detection is wrong just from looking at the peaks. I've tried playing around with the beat slicer's parameters but all these problems are still present and I'd have to tediously manually clean up almost every single slice made by it as well as creating and deleting slices which causes the midi export when dragging a group out to always put notes out of order (which is to say, normally it creates a nice staircase of notes but any manually added slices will be added to the highest key available, causing the notes to be scattered between the top of the piano roll and their proper places).

As for the unrelated questions/suggestions, is it possible to batch edit certain tabular data instead of going through each item in the table one by one to do so? If not, it would be really handy for a lot of cases.
Lastly, how do you go about making parameter modulation in the modulation table bipolar instead of just positive/negative? An example is using a parameter to change the pitch of the sound. If I set it to a positive number, Param 000 being at its lowest value will play the sound at base pitch and only go up from there. I want it to be so that Param 000 at its middle value will play the sound at base pitch so I can pitch it similarly to a pitch wheel (and use both the pitch wheel and Param 000 in tandem with Param 000 working mostly as the base pitch parameter and the pitch wheel working as dynamic pitch in midi editing).

Anyway, thanks for creating and maintaining this great piece of software! I bought the Pro version at 60 USD and it's pretty damn cheap for how much functionality it has. :) I wish more people would make stuff for it but I guess it's too obscure to warrant being used over sfz and other formats...

EDIT: As the moderator of this subforum, you can see my link, right? Since this is my first ever post on KVR it's restricting my ability to place links.

Post

Acid chunks contain only info on meter, tempo and root (overlapping sample chunk). Cue chunks contain cue points, but without an agreement on what a cue represents, it cannot really be translated into anything useful. TX reads cue points, and if they happen to be named "tx:start" and "tx:end", they are assumed to be wave start/end pos. Similarly with loops.
Point is that none of these chunks have info with standardized meaning - it is wholly application dependent.

I guess TX could add support for whatever labels reaper uses and try to parse info from it, but lacking a spec it seems hairy.

As for slicer, for me it usually does a splendid job. If you have waves that don't work well, feel free to post them, and maybe at least I can suggest a different parameter setting. Most times, it comes down to setting the frequency cutoff properly.

All table data can be batched. Select N rows, then press and hold the cell you want to edit on one row (don't click/release mouse). It will open an editor, and you can write/drag the value. It will update all selected rows.

For modulation polar and whatnot, change your modulation curves for source to dest values. You can make almost any wacky mapping curve.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

For the batch changing tabular data thing, I didn't know you had to hold it that long! I just kept trying again and again but I guess I kept accidentally moving my mouse... I'm glad it's a feature.

For an example for of what I mean by transient detection problems, the one linked in my first post is the one I'm talking about (which the second reason I linked it). You can see many situations like this: Image

That's the most common one I've seen occurring besides it also doing the opposite (where instead of ending beyond the start of the next transient, it starts far before instead.

And I just found out what fits my needs with the curve. Pretty nifty feature!

Image

EDIT: I forgot that you didn't address the reordering thing for slices. This is how what I was describing looks like: Image

Is there any way to fix the ordering so it's properly laid out on export when you manually make new slices? Some transients (like in the one uploaded in the first post) are too subtle and hard to detect even for other software that I've tried so my only solution is to make new slices myself but... It results in that which is kinda tedious to fix (and I've tried fixing it manually by reordering the regions but for some reason I just can't get it right).

Post

What is that wave supposed to be? It is not slices, that I can tell you. Looks like digital noise.
Fair point about slice ordering (and also implementing loop reordering). Will look into as an enhancement.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

elcallio wrote: Wed Feb 16, 2022 8:25 am What is that wave supposed to be? It is not slices, that I can tell you. Looks like digital noise.
Lol I guess posting the link in the word "here" in a giant wall of text post was a really bad idea. Here's the link again in case you missed it:
https://drive.google.com/file/d/1CRop79 ... sp=sharing
This file contains both the markers that Reaper creates for transient information and is the file where all the problematic transient detection stuff I'm experiencing in demonstrably visible. I zoomed in WAY too much so it looks weird in the picture.

Here's some more specific examples from that file (also zoomed in but not enough to look ridiculous) along with some example parameters used and the slice number so you can reproduce it exactly the way I did yourself.
Here, the selected slice cuts into the next transient, creating an obvious weird noise at the end due to ending too late:
Image
Here, 4 transients in a row start way too early:
Image
Another example of one ending too late:
Image

I did make a successful result but with a LOT of editing. I made it less sensitive to transients but there were a lot of very small transients that wouldn't get caught. If I made it sensitive enough to get them it would have a lot of false positives instead. Overall, I spent a good 15-20 minutes properly aligning all the slices one by one and adding new loops (which are kinda tedious to turn into slices because there's no new slice button so I have to edit their tabular data. This was before you told me how to batch edit them) which eventually resulted in an even more messy result than the pianoroll screenshot I posted earlier. Eventually, I kinda gave up and just settled with not being able to separate about an eighth of the transients without extra tedium.

Due to this, I was actually thinking... Would it be possible to implement a similar midi export for a pre-sliced wave? Basically, if you use the slices to waves feature or just import a whole bunch of individual waves that are properly named and ordered and lay them out on the region interface and then export a midi file from the group, it won't result in... anything. Maybe make it so that it automatically exports a midi file based on the length of each wave ordered one after the other as if it was a single big wave with slices? A similar way to accomplish this would be to implement a "waves to slices" feature which basically does the reverse of slices to waves. Select multiple waves to combine them in order according to certain factors (either how they are sorted in the waves table or maybe their names) into a single wave with pre-made slices according to what they were as individual waves which'll allow the use of "layout slices" and proper midi export.

Post

Someone64 wrote: Wed Feb 16, 2022 5:13 pm I did make a successful result but with a LOT of editing. I made it less sensitive to transients but there were a lot of very small transients that wouldn't get caught. If I made it sensitive enough to get them it would have a lot of false positives instead. Overall, I spent a good 15-20 minutes properly aligning all the slices one by one and adding new loops (which are kinda tedious to turn into slices because there's no new slice button so I have to edit their tabular data. This was before you told me how to batch edit them) which eventually resulted in an even more messy result than the pianoroll screenshot I posted earlier. Eventually, I kinda gave up and just settled with not being able to separate about an eighth of the transients without extra tedium.
Amen break. How retro. But this slices pretty well. Yes, it is a bit gritty, but by just setting the peak filter to zero I get pretty good slices (1.5, 30%, 0). Yes, a few parts will have slices at what to the human eye looks like "not transient". However, these _are_ actually the transients (as defined mathematically). Which might not help one at all times of course.
There is a slight inexactness to the process of course, since the transients are limited to the FFT window boundaries. Could do multipass (offseted) slicing to find a potentially better default, but that costs CPU time. Could lead to hangs...

But I can just slide like five slice start/ends and get a more or less perfect cut-up, so I don't know if I'd call it that "problematic".
Someone64 wrote: Wed Feb 16, 2022 5:13 pm Due to this, I was actually thinking... Would it be possible to implement a similar midi export for a pre-sliced wave? Basically, if you use the slices to waves feature or just import a whole bunch of individual waves that are properly named and ordered and lay them out on the region interface and then export a midi file from the group, it won't result in... anything. Maybe make it so that it automatically exports a midi file based on the length of each wave ordered one after the other as if it was a single big wave with slices? A similar way to accomplish this would be to implement a "waves to slices" feature which basically does the reverse of slices to waves. Select multiple waves to combine them in order according to certain factors (either how they are sorted in the waves table or maybe their names) into a single wave with pre-made slices according to what they were as individual waves which'll allow the use of "layout slices" and proper midi export.
Why not save your sliced waves as REX files instead? These contain slices natively. Btw, there are no cue points in the wav posted, though I will check out REAPERs export later and see if there is a workable pattern to it slicing.
TX16Wx Software Sampler:
http://www.tx16wx.com/

Post

The WAV posted IS a REAPER export. When I download it and import it into REAPER, it asks about how I want to treat the transient info (also, I just realized how badly I set the parameters for transient detection as a lot of the slices are false). REAPER does report its own exported file as having ACID chunks as seen here:
Image
I'm downloading ACID to check if it actually loads properly there as well. Would be kinda weird that they'd say it exports files with ACID chunks that... only work with REAPER and not ACID.
EDIT: ACID does in fact NOT properly load the wav as an ACIDized wav. Welp.

As for the REX thing... Well, I don't have Propellerhead ReCycle and REAPER definitely doesn't export these. Probably illegal if it could.

Post Reply

Return to “CWITEC”