I must tell you

Programming applications for making music on Linux.

Moderators: MattKingUSA, khz

Post Reply
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

I must tell you

Post by j_e_f_f_g »

Ok, I have to tell you about some software written by one of our own here: Vladimir Sadovnikov (sadko4u).

He made an app called "Timbre-mill" which I recently had occasion to use. I need to tell you about it because I don't hear anyone mention it, and consequently I think that few people either know it exists and/or what it does. And you should.

From a layman's perspective, this app mixes 2 audio (wave) files together to produce a third (new) wave file. "So what, I can do that with Audacity." you say? No, you can't.

This app doesn't mix 2 waveforms in the normal sense. It uses FFT analysis to extract the characteristics of the waves, and then "mixes" those characteristics (not the actual audio) to produce the new wave. The best way I can describe it is if the two waves could have sex and produce a baby. The baby is going to have some characteristics of both his parents.

How did I use it? I had a collection of tenor sax samples whose tone I liked. The problem was there were no growl samples in this set, and I wanted to include that articulation. I had a separate set of tenor sax growls from another sax whose tone I didn't like. I didn't want to use those unappealing growls with the better normal tones, That would just make it obvious how bad the growl samples were. I thought "Wouldn't it be great if I could take just the growl part and 'paste' it onto the good samples to create new growl samples?". Normally, I would try to EQ and "noise reduce" out the growl sound. But I remembered Dave announcing this app here awhile back. At the time, I thought it sounded interesting, and I bookmarked it for later possible use. Now I had an actual task to try it on.

I "imprinted" the growl waves upon the normal waves, and the result was very, very good. It literally saved me days slaving away with EQ and noise reduction (and probably ending up with worse results).

Well done, sadko4u. I haven't even seen an app like this for windows (although there may be one I don't know about). This guy is not only not "reinventing the wheel" on linux. He's not reinventing the wheel anywhere.

Want to know how a leaky faucet would sound if it could roar like a lion? Get samples of both, and imprint the roar on the faucet. And since this isn't normal audio mixing, if you switch the samples, you don't get the same results when they're mixed. For example, if you imprint the faucet on the lion, you don't get the same sound of a faucet imitating a lion. You get a lion imitating the sound of a faucet,

This tool has uses as a means of creating some synthesized sounds that you normally wouldn't get from most software synths (which you can then assemble into a sfz instrument). You could even take 2 sounds from a software synth, and combine them to get a sound that the synth itself can't make.

Now for the bad news. The app isn't a plugin. You can't run it inside your daw. In fact, it needs to be run from a terminal window. It doesn't have a gui. And it does have a rather complicated set of commands you need to set when running it. (It doesn't prompt, nor directly interact, with you. It simply takes some commands, and then goes off and does the work). And the documentation is rather terse and brief. I managed to figure out how to use it, but it took me awhile.

When I get some time, I'm gonna see about making a (of course ugly) GUI for it, and turn it into a plugin. It deserves that.

In the meantime, if you want to explore it yourself, you can find it at:
https://github.com/sadko4u/timbre-mill

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

User avatar
sunrat
Established Member
Posts: 926
Joined: Wed Jul 22, 2020 2:08 pm
Has thanked: 152 times
Been thanked: 247 times

Re: I must tell you

Post by sunrat »

It's not a new idea but I'm sure sadko4u would implement it well, as with all of his plugins.
SpectMorph is OSS software and been around for ages - https://spectmorph.org/

j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: I must tell you

Post by j_e_f_f_g »

I just used it again. I had this nice set of bass samples. But they were all at one, medium (mf) velocity level. They sounded good as an sfz instrument . But they would sound more realistic paired with a louder (ff) velocity set. I had such a set from a different bass, so I combined the two. Both sounded nice on their own, but when combined, you could clearly detect them as different basses. Not realistic.

Typically, what I'd do is try to create a new ff set from the mf set. I'd brighten each wave by adding some eq at 5k to 8k (actually 3k to 5k for a bass instrument). Then i'd hand-edit the shape of waveform to boost the transient attack at the start.

Instead i used timbre-mill to imprint the ff set on the mf set, and it produced a new ff set that blended seamlessly with the mf.

Brilliant.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: I must tell you

Post by j_e_f_f_g »

Considering how much trouble I had figuring out how to use timbre-mill's commands, I thought I'd give you all a quick tip on how to get it running with two wave files that you wish to "blend" into a third wave.

We're going to call those two files "mom.wav" and "dad.wav". They are the "parents". And we're going to call their baby (ie the new wave file) "baby.wav".

Mom is the more important parent to baby. (Sorry, dads. Thst's life.) So the baby is going to come out with more of the mom's chacteristics than his dad's. The dad is simply going to "imprint" on the mom.

When you run timbre-mill (in a terminal window), you need to supply the names of the parent waves, and tell timbre-mill what name to give the baby. Before the mom's name you specify the -mf flag like so:

Code: Select all

-mf mom.wav

Before dad, you specify -cf as so:

Code: Select all

-cf dad.wav

And before the baby's new name, you specify -f. Here we just call the little rugrat "baby"

Code: Select all

-f baby.wav

Put it all together and here's the full command (assuming the 2 parents are in the current directory):

Code: Select all

timbre-mill -mf ./mom.wav -cf ./dad.wav -f ./baby.wav

This will create baby.wav.

If dad and mom switch places, dad effectively becomes mom, and vice versa:

Code: Select all

timbre-mill -mf ./dad.wav -cf ./mom.wav -f ./baby.wav

Baby ends up sounding more like dad.

If the wave files are at different sample rates, maybe mom is 44.1K and dad is 48K, timbre-mill will still "blend" them, and baby will come out with mom's sample rate. But if you want to force a particular rate for baby, maybe 44100, then you can specify it after the -sr flag:

Code: Select all

timbre-mill -mf ./mom.wav -cf ./dad.wav -f ./baby.wav -sr 44100

There are lots more options you can specify to tweak baby's sound. But the above should at least get you started.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

User avatar
sadko4u
Established Member
Posts: 989
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 361 times

Re: I must tell you

Post by sadko4u »

Hi there! Thank you for the review.

The timbre-mill tool development was sponsored by @d.healey and without his sponsorship it probably wouldn't be born.

LSP (Linux Studio Plugins) Developer and Maintainer.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: I must tell you

Post by j_e_f_f_g »

sadko4u wrote: Sat Jul 08, 2023 10:20 am

without @d.healey, timbre-mill wouldn't be born.

Then dave is both a hero, as well as a prognosticator who can see into the future better than nostradamus.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

User avatar
d.healey
Established Member
Posts: 611
Joined: Fri Sep 22, 2017 8:33 pm
Has thanked: 279 times
Been thanked: 101 times

Re: I must tell you

Post by d.healey »

Yeah timbre-mill and the other tools @sadko4u has created for me have been incredibly useful for my sampling projects.

sunrat wrote: Fri Jul 07, 2023 12:58 pm

It's not a new idea but I'm sure sadko4u would implement it well, as with all of his plugins.
SpectMorph is OSS software and been around for ages - https://spectmorph.org/

I believe this uses resynthesis rather than fancy EQing like timbre-mill. Another tool you guys might be interested in is Loris (www.cerlsoundgroup.org/Loris/). I made a video about it a while back, and it's also incorporated into HISE now.

https://youtu.be/ldFOE6ZrldE

I should also say this idea wasn't original with me. It's been around for a long time. I used to create my IRs for this purpose using Voxengo Match EQ, you can also use MelMatch for this. However for batch jobs it's very tedious which is why I wanted a command-line tool so I could process hundreds of samples at once. timbre-mill also has a much better resolution than doing it with a matching EQ.

This technique was used back in 2008 (perhaps earlier) by sample modelling to create their muted instruments. I used the same thing for some of my Kontakt libraries, and more recently my Sordina mute emulator plugin. It's also been used by other developers for the same purpose.

I have also used it for creating phase locked dynamic layers. I was put onto the idea for this use case by Darius Alexander, unfortunately it seems he has taken down his webpage about it, but it's still there on the internet archive - https://web.archive.org/web/20161208055 ... onvolution

David Healey
YouTube - Free HISE scripting and sample library dev tutorials
Libre Wave - Freedom respecting instruments and effects.
User avatar
sadko4u
Established Member
Posts: 989
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 361 times

Re: I must tell you

Post by sadko4u »

j_e_f_f_g wrote: Fri Jul 07, 2023 5:28 am

Now for the bad news. The app isn't a plugin. You can't run it inside your daw. In fact, it needs to be run from a terminal window. It doesn't have a gui.

Maybe once I'll have a time to bring it into the new plugin. The DSP part is not too hard, we just need to compute an FFT profile and apply it to the input signal.

I've created new issue on GitHub:
https://github.com/sadko4u/lsp-plugins/issues/326

LSP (Linux Studio Plugins) Developer and Maintainer.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: I must tell you

Post by j_e_f_f_g »

sadko4u wrote:

I'll bring it into the new plugin.

Oh good. Because if you weren't going to do it, I was going to put it on my "to do" list. There are people who won't even try a program if it doesn't have a (flashy) gui, and/or can't be run inside their work environment (DAW of choice). They automatically conclude that anything that doesn't meet that criteria is "junk".

And I wasn't looking forward to doing it, because I suspect that it's going to be a bit of a task to get it into plugin format.

P.S. Where did you learn your english? It's not at all common for russians to speak english. In fact, you're one of the few I know. I can speak very little russian, just enough to get myself in trouble. I can't read it at all. Your alphabet looks like a bunch of RFID tags to me.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

User avatar
sadko4u
Established Member
Posts: 989
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 361 times

Re: I must tell you

Post by sadko4u »

j_e_f_f_g wrote: Sun Jul 09, 2023 12:52 am

P.S. Where did you learn your english? It's not at all common for russians to speak english.

I learned at school focused on deep learning of german language and studied intensive classes since the 1st grade. And after the 5th grade, english classes also became available. Meanwhile being on the 3rd-5th grade (4th grade was usually skipped that time according to the rules of Russian education), I started to write first simple computer programs, so I was required to deal with english language. So almost all my current english base came from the tech docs to software and libraries.

LSP (Linux Studio Plugins) Developer and Maintainer.
User avatar
sadko4u
Established Member
Posts: 989
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 361 times

Re: I must tell you

Post by sadko4u »

artix_linux_user wrote: Sun Jul 09, 2023 10:24 am

new plugin??? which what where?...
there is a new plugin?

I just created a feature request for a new plugin. I think it is a good reason to implement it in further LSP releases.
The ticket is available here: https://github.com/sadko4u/lsp-plugins/issues/326

LSP (Linux Studio Plugins) Developer and Maintainer.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: I must tell you

Post by j_e_f_f_g »

sado, do you suppose this plugin can be made realtime? (ie The enduser can hear the effects of any setting while he's changing its value). Or is there too much overhead, and so it will need to not be realtime? (ie, A user won't be able to hear the result of his settings until after he clicks some "OK" button, and waits for the plugin to finish processing).

This software has a lot of esoteric, technical settings whose effect probably isn't going to be readily apparent to most endusers unless they can hear the effect while adjusting the setting. (ie Being realtime would make a huge difference in ease-of-use to users).

school focused on learning german

That makes sense given the strong economic (ie, gas) ties between germany and russia. Well... former ties.

my... english... came from... tech docs

Faascinating. I've never met someone who did that.

Do you speak english, or only write it?

P.S. If you ever don't understand something I've written, ask me to rephrase it. I'll find some way to get the meaning across.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

User avatar
sadko4u
Established Member
Posts: 989
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 361 times

Re: I must tell you

Post by sadko4u »

j_e_f_f_g wrote: Sun Jul 09, 2023 8:18 pm

do you suppose this plugin can be made realtime? (ie The enduser can hear the effects of any setting while he's changing its value).

And why not? Such tool is just yet another spectral processor or some kind of matched EQ which uses FFT for frequency matching.
We need only to compute the profile of the audio stream we need to match. That can be done by:

  • Capturing some audio from the input or additional extra input (which can take signal routed from somewhere).

  • Loading some file from the file system inside of the plugin.

j_e_f_f_g wrote: Sun Jul 09, 2023 8:18 pm

P.S. If you ever don't understand something I've written, ask me to rephrase it. I'll find some way to get the meaning across.

You can see me speaking english here:
https://www.youtube.com/@nightlycode4840/streams

Sad but I stopped any streams and any Focusrite driver improvements until I get more clean understanding of my future (and future of my family) as a citizen and resident of Russia.

LSP (Linux Studio Plugins) Developer and Maintainer.
j_e_f_f_g
Established Member
Posts: 2032
Joined: Fri Aug 10, 2012 10:48 pm
Been thanked: 358 times

Re: I must tell you

Post by j_e_f_f_g »

j_e_f_f_g wrote:

do you suppose this plugin can be made realtime?

And why not?

I don't know. so I was asking. I know plugins that use FFT calculations can incur so much overhead that it isn't feasible to run them realtime, but I don't know how intensive timbre-mill is. If you can get it realtime, that would be great.

I think you made your own plugin gui, didn't you? (Or maybe I'm thinking of skei)? Does it have a file dialog so the user can graphically "surf" to pick out the child (I prefer to call the "imprint") file? That would be much more user friendly than making him type a full path into some text box.

If you don't have a xcb/cairo based file dialog, I have one in my own plugin gui (which I call the "Basic Ugly Toolkit" or BUTT -- I make better jokes about my own stuff than largos can ever hope to). There may be parts you can rip out and use.

You can see me speaking english here:
Sad but I stopped any streams and any Focusrite driver improvements until I get more clean understanding of my future (and future of my family) as a citizen and resident of Russia.

I'm just gonna put it out there:

I don't know whether you're interested in leaving russia. But it seems to me that you have a functional working ability with english. (I would just say that you could improve the pronunciation a little, since I did have some problems understanding some of your words. But the syntax and cadence is fine). You should be able to readily find work as a Russian-English interpreter outside of russia. Have you considered contacting the US or English embassies to inquire about job prospects abroad for an interpreter? Or is the russian government restricting travel/immigration?).

With such a skill, I think you could get a work visa, a job, and out of russia.

I concur about Putin. He's a crook. But then, so are Biden, the republicans and democrats, all whom are equally responsible for the destruction of Ukraine. And Trump is utterly useless (although his anti-war policy is correct). Don't forget the USA started things by violating the agreement Bush made with Gorbachev not to extend Nato into the baltic states, and then staged a coup against the democratically elected Ukraine gov in 2014 because ukraine was "too friendly" with russia, then when the dunbask wanted its autonomy from ukraine in protest over that coup, the usa armed the openly nazi Azov battalian with missles to kill 23,000 dunbask inhabitants, then negotiated the Minsk Accord under false pretenses in order to give ukraine time to build up its military for a usa proxy war with russian as admitted by Angela Merkel. The US gov and its Nato marrionettes are at least as responsible as Putin for this travesty. They're all war criminals.

We americans know our country is run by immoral criminals who would gladly blow up the entire planet if it benefited them in even the slightest way. It's good to see the citizens of other countries in similiar conditions starting to come to the same conclusions about their own governments. Hopefully, Macron will be just the first of many to topple.

Author of BackupBand at https://sourceforge.net/projects/backupband/files/
My fans show their support by mentioning my name in their signature.

User avatar
sadko4u
Established Member
Posts: 989
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 361 times

Re: I must tell you

Post by sadko4u »

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

I don't know. so I was asking. I know plugins that use FFT calculations can incur so much overhead that it isn't feasible to run them realtime, but I don't know how intensive timbre-mill is. If you can get it realtime, that would be great.

It is possible to make all this stuff realtime but it will introduce some kind of latency.

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

I think you made your own plugin gui, didn't you? (Or maybe I'm thinking of skei)? Does it have a file dialog so the user can graphically "surf" to pick out the child (I prefer to call the "imprint") file? That would be much more user friendly than making him type a full path into some text box.

If you don't have a xcb/cairo based file dialog, I have one in my own plugin gui (which I call the "Basic Ugly Toolkit" or BUTT -- I make better jokes about my own stuff than largos can ever hope to). There may be parts you can rip out and use.

Yes, I already have the second version of the GUI toolkit. It is available for anyone here: https://github.com/lsp-plugins/lsp-tk-lib
So there is no problem to introduce file loads.

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

I don't know whether you're interested in leaving russia. But it seems to me that you have a functional working ability with english. (I would just say that you could improve the pronunciation a little, since I did have some problems understanding some of your words. But the syntax and cadence is fine). You should be able to readily find work as a Russian-English interpreter outside of russia. Have you considered contacting the US or English embassies to inquire about job prospects abroad for an interpreter? Or is the russian government restricting travel/immigration?).

I don't see myself as a Russian-English interpreter. I'm professional software developer and want to keep being a tech expert in software development. When the war started, I was looking for some job positions outside russia in such EU countries as Finland and Germany. But finally I found that it is much easier to relocate first and then find the job in the desired country rather than find the company which will help you (and your family) with relocation. I also had an offer to relocate to Serbia but that's not that sort of country I would like to relocate to (because of some kind of sympathy to putin's regime in Belgrade).

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

With such a skill, I think you could get a work visa, a job, and out of russia.

Maybe. But there are also some other facts that can seriously complicate the relocation or even make it not possible. For example, I have a family and three small children. That means that I can not immediately package my suitcase and fly outside russia because I'm responsible on supplying my family with usual stuff. Second, I have troubles with my middle boy and need to regularly visit speech therapist with him. Third, I met that the respect to ordinary russian citizens falls down every day of the war. But the respect to russian oligarchs is still pretty OK because they have tight business relations outside of russia.

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

I concur about Putin. He's a crook. But then, so are Biden, the republicans and democrats, all whom are equally responsible for the destruction of Ukraine. And Trump is utterly useless (although his anti-war policy is correct). Don't forget the USA started things by violating the agreement Bush made with Gorbachev not to extend Nato into the baltic states, and then staged a coup against the democratically elected Ukraine gov in 2014 because ukraine was "too friendly" with russia

Many modern politicians are being under the influence of so-called "International Organized Criminal Association" (which is not solid and consists of different clans fighting one against other). Many of them are sponsored by putin, the good example is Victor Orban. I suppose that Trump also has some relations with kremlin.

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

then when the dunbask wanted its autonomy from ukraine in protest over that coup, the usa armed the openly nazi Azov battalian with missles to kill 23,000 dunbask inhabitants, then negotiated the Minsk Accord under false pretenses in order to give ukraine time to build up its military for a usa proxy war with russian as admitted by Angela Merkel. The US gov and its Nato marrionettes are at least as responsible as Putin for this travesty. They're all war criminals.

Oh, don't repeat the russian propaganda, please. The "8 years bombed donbask" and the "nazi Azov" have no relation to reality with the russian aggression against the Ukraine in the 2014. When I was 12 years old and thought about the WW II, I met an interesting conclusion in my mind: the nazism/fascism didn't gone at all. Moreover it will persist, and modern fascists will pretend that they fight against fascists. And now my assumptions came true.
The responsibility of US and EU is in that fact that they forced the conflict to become frozen because otherwise they were required to rebuild all their business relations touched with Oil and Gas import, and that really hurts. They closed their eyes on the extermination of opposition organizations and lawyers inside of russia and, moreover, provided special tools for internal forces that help to suppress public protests. And, after that, they make surprised faces and ask: "Oh, why didn't russians dethrone putin after the invasion on the 24th february 2022?" Just because anyone who could resist is dead, jailed or intimidated now.

j_e_f_f_g wrote: Mon Jul 10, 2023 1:07 am

We americans know our country is run by immoral criminals who would gladly blow up the entire planet if it benefited them in even the slightest way. It's good to see the citizens of other countries in similiar conditions starting to come to the same conclusions about their own governments. Hopefully, Macron will be just the first of many to topple.

The conflict in Ukraine showed that even such socials institutions like democracy can seriously degrade when there are weak (or corrupted) people staying at the responsible position and can not perform serious decisions. Instead of taking all the force into one giant fist and knock out the aggressor with one single strike, we observe the miserable show of fear, uncertainty, bureaucracy and corruption. The main problem is that the technical progress defines the base of the government's structure but current politicians try to keep the changing regime. With modern computers we enter the new epoch of total surveillance. The main question is, who will be the owner of this instrument. If the limited group of people, then the society will enter the digital tyranny. If everyone from society, then it will be some of kind of digital social democracy or anarchy.

LSP (Linux Studio Plugins) Developer and Maintainer.
Post Reply