Old 11-25-2022, 01:05 PM   #1
guonaudio
Human being with feelings
 
guonaudio's Avatar
 
Join Date: Mar 2022
Location: UK
Posts: 7
Default GUtilities: Audio Editing Tools

Hello all! I started learning C++ in earnest about a year ago, and decided to focus my efforts of making a plugin for Reaper. Specifically, I've made a set of tools that evolved from my work as an audio editor. I don't do tremendous amounts of editing anymore, but I hope that some of these tools will come in handy for those of you that do! I've still got plenty more ideas, so this plugin will hopefully grow further. Alas, a heads-up - it is only currently available for Windows x64.

Here's what I've got so far:

GU: Source validator



Allows you to quickly view key information about your audio at a glance. The validation settings allow for visually flagging files against some criteria - to assist in spotting any issues. For example, you can check if any files are only pretending to be multi-channel (and are in fact mono), or if a batch of files have inconsistent sample rates/bit depths, etc.

Note:
  • Supports exporting to csv and copying to clipboard!
  • This is a "Source" validator, not an "Item" validator. Items that share a source won't be shown duplicately.
  • "Set Target" toggles should be set based on what you expect as a final result. Anything that doesn't fit this spec will be highlighted. The color of tagged Items can be changed in Settings → Validator Color.
  • Less obvious headers have tooltips when hovered.

GU: Batch importer



This tool works well with Source Validator. It allows you to select a folder and recursively import all audio within. It will also mimic the folder structure on disc, so exporting the same structure back out should be simple.

GU: Item offset adjuster



A simple tool for adjusting Item length relative to snap offset.

Note:
  • Helpful for adding consistent breathing room across samples when lining up transients with snap offsets.

GU: Item fader



Apply fades in real time to batches of Items. Fades are applied as a percentage of Item length.

Note:
  • Helpful for getting decent sounding fades when dealing with samples that vary wildly in length relative to pitch (like piano sustains).

GU: Item renamer



Batch rename Items using wildcards similar to those featured in the Render dialog. Hover over entries in the Wildcards menu to find out more about each of the wildcards.

Note:
  • Wildcards from the menu are entered at the end of the string. It isn't currently possible to insert text at the mouse cursor position.
  • Keep an eye out for wildcards that support mouse wheel scroll. Scrolling while hovering over these will quickly flick between valid permutations.

GU: Config menu

Most tools will have their own setting within them, but for any tools which don't have a consistent GUI, or for settings shared across several GUI's, you'll be able to find them in this menu.

Note:
  • You can adjust the font size here.

Installation...

To install this extension, paste the following link into ReaPack → Import repositories. Installation of new extensions will require restarting Reaper.
Code:
https://raw.githubusercontent.com/gu-on/GUtilities/main/index.xml
GUtilities relies on ReaImGui, which is also installed via ReaPack. Ensure that ReaTeam Extensions/ReaImGui is installed before attempting to use GUtilities.

Note:

If you don't see "GUtilities" in the Extensions toolbar or Actions list after following the above, you may need to install the latest vc redistributables https://learn.microsoft.com/en-us/cp...?view=msvc-170
__________________
Linktree | Donation
guonaudio is offline   Reply With Quote
Old 11-25-2022, 07:04 PM   #2
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,033
Default

Thanks for sharing. Compiling for win32 would be useful as well, not excluding win32 users if not too difficult.
TonE is offline   Reply With Quote
Old 11-25-2022, 07:14 PM   #3
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,959
Default

What a first post !!


And reaimgui via C++ ? interesting
X-Raym is offline   Reply With Quote
Old 11-25-2022, 07:19 PM   #4
fmL
Human being with feelings
 
Join Date: Aug 2022
Posts: 218
Default

nice. is mac on the agenda?
__________________
❑❑❑
fmL is offline   Reply With Quote
Old 11-26-2022, 01:07 AM   #5
sockmonkey72
Human being with feelings
 
sockmonkey72's Avatar
 
Join Date: Sep 2021
Location: Berlin
Posts: 1,996
Default

Quote:
Originally Posted by fmL View Post
nice. is mac on the agenda?
macOS would be great. I volunteer to help with porting, if the OP doesn't have access to a macOS system.
__________________
ReaPack Repository: right-click and copy index URL
sockmonkey72 is offline   Reply With Quote
Old 11-26-2022, 01:14 AM   #6
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 13,338
Default

Great tool set!
Maybe it is possible to convert to lua?
vitalker is offline   Reply With Quote
Old 11-26-2022, 03:31 AM   #7
guonaudio
Human being with feelings
 
guonaudio's Avatar
 
Join Date: Mar 2022
Location: UK
Posts: 7
Default

Quote:
Originally Posted by TonE View Post
Thanks for sharing. Compiling for win32 would be useful as well, not excluding win32 users if not too difficult.
I ran a test this morning, and it does seem like it will be easy enough, so I will try to get that out in the next update.

Quote:
Originally Posted by fmL View Post
nice. is mac on the agenda?
I would like to build for macOs as well, but that's currently TBD. I don't have a machine on hand, but I've asked around and I may have sourced one. I've been mindful to use libraries that aren't Windows exclusive, so hopefully it will port across nicely.

Quote:
Originally Posted by vitalker View Post
Great tool set!
Maybe it is possible to convert to lua?
Unfortunately not! The Batch Importer uses file system access that I believe was either too difficult, or simply not possible with Lua. Similar thing with the DSP I've implemented for the Source Validator. There are definitely some Actions that can be ported, but part of doing it in C++ was for the practice. That, and I find it's much easier to maintain C++ code.
__________________
Linktree | Donation
guonaudio is offline   Reply With Quote
Old 11-26-2022, 04:20 AM   #8
X-Raym
Human being with feelings
 
X-Raym's Avatar
 
Join Date: Apr 2013
Location: France
Posts: 9,959
Default

@guonaudio
For ref, file System functions from Lua Reascript are accessible via either ReaScript API, Lua native functions, JS_ReaScript API, and ExecProcess, so it is relatively large.


But C++ practice is good, we need REAPER extensions dev, and testing ReaImGui from C++ is a premiere (I think) :P
X-Raym is offline   Reply With Quote
Old 11-26-2022, 04:22 AM   #9
Vagelis
Human being with feelings
 
Vagelis's Avatar
 
Join Date: Oct 2017
Location: Larisa, Greece
Posts: 3,868
Default

Nice!
Vagelis is offline   Reply With Quote
Old 11-26-2022, 04:34 AM   #10
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 13,338
Default

Quote:
Originally Posted by X-Raym View Post
.
But C++ practice is good
The only bad thing as you have to have a source to compile it and you have to compile it.
vitalker is offline   Reply With Quote
Old 11-26-2022, 07:23 AM   #11
nofish
Human being with feelings
 
nofish's Avatar
 
Join Date: Oct 2007
Location: home is where the heart is
Posts: 12,143
Default

Quote:
Originally Posted by guonaudio View Post
I would like to build for macOs as well, but that's currently TBD. I don't have a machine on hand, but I've asked around and I may have sourced one. I've been mindful to use libraries that aren't Windows exclusive, so hopefully it will port across nicely.
You could also consider auto-building e.g. via GitHub actions.
Here's a template for a Reaper extension which has cross-platform (Win/Mac/Linux) auto-build already set up (see post #30.

https://forum.cockos.com/showthread.php?t=247023

(edit: GitHub provides free unlimited auto-builds only for open source projects though.)

Last edited by nofish; 11-26-2022 at 08:09 AM.
nofish is offline   Reply With Quote
Old 11-26-2022, 07:44 AM   #12
akademie
Human being with feelings
 
Join Date: Mar 2007
Posts: 4,101
Default

Wow, it's an amazing toolset guonaudio. Thanks.

I also would vote for win32 build, please.
And what about Linux ?? As I am switching completely to Linux from Windows
akademie is online now   Reply With Quote
Old 11-26-2022, 04:11 PM   #13
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,033
Default

Quote:
Originally Posted by nofish View Post
You could also consider auto-building e.g. via GitHub actions.
Here's a template for a Reaper extension which has cross-platform (Win/Mac/Linux) auto-build already set up (see post #30.

https://forum.cockos.com/showthread.php?t=247023

(edit: GitHub provides free unlimited auto-builds only for open source projects though.)
ReaLearn could do same, afaik there is no win32 build as well.
TonE is offline   Reply With Quote
Old 11-26-2022, 04:14 PM   #14
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,033
Default

Quote:
Originally Posted by guonaudio View Post
I ran a test this morning, and it does seem like it will be easy enough, so I will try to get that out in the next update.
Wow, sounds great, thanks friend. And lots of respects for sharing your work here, friend!
TonE is offline   Reply With Quote
Old 11-27-2022, 11:22 AM   #15
guonaudio
Human being with feelings
 
guonaudio's Avatar
 
Join Date: Mar 2022
Location: UK
Posts: 7
Default

Thanks for the feedback and info everyone! Seems like early consensus is for support of the other major platforms, so I'm going to set my focus on that next.
__________________
Linktree | Donation
guonaudio is offline   Reply With Quote
Old 11-27-2022, 12:34 PM   #16
vitalker
Human being with feelings
 
vitalker's Avatar
 
Join Date: Dec 2012
Posts: 13,338
Default

Quote:
Originally Posted by guonaudio View Post
Thanks for the feedback and info everyone! Seems like early consensus is for support of the other major platforms, so I'm going to set my focus on that next.
Perhaps we could help you converting it to lua? You won't need to compile many builds anymore.
vitalker is offline   Reply With Quote
Old 12-08-2022, 04:19 PM   #17
dahya
Human being with feelings
 
Join Date: Oct 2019
Posts: 239
Default

Wow ! Just wanted to say thanks and that this is just fantastic ! Just the "Item Fade" alone is amazing and of so much use !
dahya is offline   Reply With Quote
Old 01-06-2023, 10:47 AM   #18
WarrenG
Human being with feelings
 
WarrenG's Avatar
 
Join Date: Jan 2020
Location: In the studio at my desk
Posts: 367
Default

It would appear as the ReaIMGui update to Ver 0.8.2 throws a mismatch error since
GUtilities was built on ReaIMGui Ver 0.8.1

None of the menu tools will open and all will display the above error.

Hope it helps you resolve the issue.

Warren
And now that ReaIMGui Ver 0.8.3 is about to come on line.....
I am not a programmer AT ALL but maybe Vitalker is right about going to lua with regards to script dependencies.
W

Last edited by WarrenG; 01-11-2023 at 11:21 AM.
WarrenG is offline   Reply With Quote
Old 01-11-2023, 11:23 AM   #19
WarrenG
Human being with feelings
 
WarrenG's Avatar
 
Join Date: Jan 2020
Location: In the studio at my desk
Posts: 367
Default

Bump
WarrenG is offline   Reply With Quote
Old 01-11-2023, 12:09 PM   #20
cfillion
Human being with feelings
 
cfillion's Avatar
 
Join Date: May 2015
Location: Québec, Canada
Posts: 5,053
Default

Ideally C++ plugins should use feature detection (check that the currently installed ReaImGui version provides all the functions it needs).

This extension appears to be currently requiring an exact version match instead. Until a new version is released, you could hack your copy using a hex or binary-safe text editor (search and replace the string 0.8.1 only if the length doesn't change).

cfillion is offline   Reply With Quote
Old 01-11-2023, 01:27 PM   #21
WarrenG
Human being with feelings
 
WarrenG's Avatar
 
Join Date: Jan 2020
Location: In the studio at my desk
Posts: 367
Default

Quote:
Originally Posted by cfillion View Post
Ideally C++ plugins should use feature detection (check that the currently installed ReaImGui version provides all the functions it needs).

This extension appears to be currently requiring an exact version match instead. Until a new version is released, you could hack your copy using a hex or binary-safe text editor (search and replace the string 0.8.1 only if the length doesn't change).

Thanks Cfillion
As for me , like I stated not a programmer AT ALL.
Not my wheel house soooo.
If I messed with it, the whole universe might just go poooof.
Warren
WarrenG is offline   Reply With Quote
Old 01-14-2023, 08:54 AM   #22
WarrenG
Human being with feelings
 
WarrenG's Avatar
 
Join Date: Jan 2020
Location: In the studio at my desk
Posts: 367
Default

THANK YOU
For your update and repair via reapack.
Works great again.
Will the repair be consistent with ReaImGui updates as Cfillion suggested?
At any rate thanks.

W
WarrenG is offline   Reply With Quote
Old 01-15-2023, 04:48 AM   #23
guonaudio
Human being with feelings
 
guonaudio's Avatar
 
Join Date: Mar 2022
Location: UK
Posts: 7
Default

Hi all, you're absolutely right. I tried to do it so it supports versions up to the existing one, but there was a big change between (I think) ReaImGui 0.8 and 0.8.1. The current approach is my stopgap solution to prevent the plugin from just crashing Reaper, since I'm only building for one particular verison.

I'm sure there are better temp solutions for this, but my current plan is to rework all the code so that the frontend is handled in Lua and the backend in C++ (this will also allow scripters to use parts of my API directly). However, this will take a bit of time. I'm trying my best to stay on top of ReaImGui updates in the meantime. Apologies that it may take a few days in some cases.

The project should realistically have been marked as 0.x rather than 1.x as there's still a lot of things to sort out... But thanks for bearing with me!
__________________
Linktree | Donation
guonaudio is offline   Reply With Quote
Old 01-15-2023, 10:53 AM   #24
WarrenG
Human being with feelings
 
WarrenG's Avatar
 
Join Date: Jan 2020
Location: In the studio at my desk
Posts: 367
Default

Quote:
Originally Posted by guonaudio View Post
Hi all, you're absolutely right. I tried to do it so it supports versions up to the existing one, but there was a big change between (I think) ReaImGui 0.8 and 0.8.1. The current approach is my stopgap solution to prevent the plugin from just crashing Reaper, since I'm only building for one particular verison.

I'm sure there are better temp solutions for this, but my current plan is to rework all the code so that the frontend is handled in Lua and the backend in C++ (this will also allow scripters to use parts of my API directly). However, this will take a bit of time. I'm trying my best to stay on top of ReaImGui updates in the meantime. Apologies that it may take a few days in some cases.

The project should realistically have been marked as 0.x rather than 1.x as there's still a lot of things to sort out... But thanks for bearing with me!
Thank you, I will certainly refrain from bugging you further.
Insight is power.
Thanks again!

Warren
WarrenG 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 10:21 PM.


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