|
Welcome to the Piano World Piano Forums Over 3 million posts about pianos, digital pianos, and all types of keyboard instruments. Over 100,000 members from around the world.
Join the World's Largest Community of Piano Lovers
(it's free)
It's Fun to Play the Piano ... Please Pass It On!
|
|
70 members (AndyOnThePiano2, APianistHasNoName, AlkansBookcase, Charles Cohen, BillS728, 36251, anotherscott, Bellyman, 10 invisible),
2,123
guests, and
330
robots. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Joined: Feb 2019
Posts: 708
500 Post Club Member
|
500 Post Club Member
Joined: Feb 2019
Posts: 708 |
I am not that familiar with commonly used GUI audio software. I usually work with Python, in which this is trivially easy to do. But how to make this accessible for the average user? In principle it should be possible because a simple GUI library is included in Python, and I believe you can make an installer that includes python itself (although I haven't tried this myself). But would this be the easiest route?
|
|
|
|
Joined: Apr 2018
Posts: 9,824
9000 Post Club Member
|
9000 Post Club Member
Joined: Apr 2018
Posts: 9,824 |
I am not that familiar with commonly used GUI audio software. I usually work with Python, in which this is trivially easy to do. But how to make this accessible for the average user? In principle it should be possible because a simple GUI library is included in Python, and I believe you can make an installer that includes python itself (although I haven't tried this myself). But would this be the easiest route? The easiest route would be to give it a set of files: a.mp3, b.mp3, c.mp3, ..., z.mp3, and have it create (via something like "rmsnormalize a.mp3 b.mp3 c.mp3 ... z.mp3") a new set of files, a-norm.mp3, b-norm.mp3, c-norm.mp3, ..., z-norm.mp3, which are all appropriately adjusted. No other parameters are necessary if the rms amplitude for each file is set to the same maximum value for which none of the files clip. There is only one such value so the Python program can determine that and create all the files. Why don't you make that script and we can try it out on jamiecw's original 3 files and see if it does the thing we expect?
across the stone, deathless piano performances "Discipline is more reliable than motivation." -by a contributor on Reddit r/piano "Success is 10% inspiration, and 90% perspiration." -by some other wise person "Pianoteq manages to keep it all together yet simultaneously also go in all directions; like a quantum particle entangled with an unknown and spooky parallel universe simply waiting to be discovered." -by Pete14
|
|
|
|
Joined: Feb 2019
Posts: 708
500 Post Club Member
|
500 Post Club Member
Joined: Feb 2019
Posts: 708 |
I am confident that I can write that in a small python script to show the principle. But there are a few caveats: 1) users would then need to have Python installed already, and ideally also the numerical computing library Numpy, 2) mp3 is a non-free format (at least it was, not sure about the status now), and its support in open source software such as Python is not ideal (would require installing additional packages). The latter can be solved by just requiring that people use PCM (WAV) format. But all in all it would require people to install a number of packages and work with a command line. I had another idea. For my work I use Praat a lot ( http://www.praat.org ), which is scientific speech analysis/synthesis software. It is scriptable, and I already have an old script lying around that does rms equalization (including scaling to 0dB). I can have a look at that again, and modernize it. The advantage of Praat is that it is multi-platform, free, and has a GUI. For music audio users the interface and all the options may be a bit overwhelming, but for this purpose you just have to open a bunch of files and run a script.
|
|
|
|
Joined: Apr 2018
Posts: 9,824
9000 Post Club Member
|
9000 Post Club Member
Joined: Apr 2018
Posts: 9,824 |
I am confident that I can write that in a small python script to show the principle. But there are a few caveats: 1) users would then need to have Python installed already, and ideally also the numerical computing library Numpy, You should be able to do both using pyinstaller. 2) mp3 is a non-free format (at least it was, not sure about the status now), "MP3 technology became patent-free in the United States on 16 April 2017 when U.S. Patent 6,009,399, held by and administered by Technicolor, expired."and its support in open source software such as Python is not ideal (would require installing additional packages). The latter can be solved by just requiring that people use PCM (WAV) format. But all in all it would require people to install a number of packages and work with a command line. There is this thing and this also. I had another idea. For my work I use Praat a lot ( http://www.praat.org ), which is scientific speech analysis/synthesis software. It is scriptable, and I already have an old script lying around that does rms equalization (including scaling to 0dB). I can have a look at that again, and modernize it. The advantage of Praat is that it is multi-platform, free, and has a GUI. For music audio users the interface and all the options may be a bit overwhelming, but for this purpose you just have to open a bunch of files and run a script. Can it be packaged into a single executable like pyinstaller would do with python scripts? Because if it can, then it really doesn't matter the technology behind the executable.
across the stone, deathless piano performances "Discipline is more reliable than motivation." -by a contributor on Reddit r/piano "Success is 10% inspiration, and 90% perspiration." -by some other wise person "Pianoteq manages to keep it all together yet simultaneously also go in all directions; like a quantum particle entangled with an unknown and spooky parallel universe simply waiting to be discovered." -by Pete14
|
|
|
|
Joined: Feb 2019
Posts: 708
500 Post Club Member
|
500 Post Club Member
Joined: Feb 2019
Posts: 708 |
Can it be packaged into a single executable like pyinstaller would do with python scripts? Because if it can, then it really doesn't matter the technology behind the executable. Not that I know of. Praat is already one executable. But there would be a separate script (text) file. So you would have to open, Praat, then the script file, the the audiofiles you want converted and then click "run". I have no experience with pyinstaller, but see that e.g. librosa and pysoundfile are not on the compatibility list ( https://github.com/pyinstaller/pyinstaller/wiki/Supported-Packages), and these are libraries that do require non-python files. But it can't hurt to try. Perhaps it works. I will be on holidays for the next two weeks, but see if I can try pyinstaller today.
|
|
|
|
Joined: Apr 2018
Posts: 9,824
9000 Post Club Member
|
9000 Post Club Member
Joined: Apr 2018
Posts: 9,824 |
Can it be packaged into a single executable like pyinstaller would do with python scripts? Because if it can, then it really doesn't matter the technology behind the executable. Not that I know of. Praat is already one executable. But there would be a separate script (text) file. So you would have to open, Praat, then the script file, the the audiofiles you want converted and then click "run". I have no experience with pyinstaller, but see that e.g. librosa and pysoundfile are not on the compatibility list ( https://github.com/pyinstaller/pyinstaller/wiki/Supported-Packages), and these are libraries that do require non-python files. But it can't hurt to try. Perhaps it works. I will be on holidays for the next two weeks, but see if I can try pyinstaller today. OK. If you run out of time, let me know because then I'll take a crack. Could use some little project to improve my Python skills.
across the stone, deathless piano performances "Discipline is more reliable than motivation." -by a contributor on Reddit r/piano "Success is 10% inspiration, and 90% perspiration." -by some other wise person "Pianoteq manages to keep it all together yet simultaneously also go in all directions; like a quantum particle entangled with an unknown and spooky parallel universe simply waiting to be discovered." -by Pete14
|
|
|
|
Joined: Feb 2019
Posts: 708
500 Post Club Member
|
500 Post Club Member
Joined: Feb 2019
Posts: 708 |
pyinstaller does not work out of the box for me, if I import librosa or pysoundfile, or even just numpy. I am sure the latter should be fixable because it is supported, but alas, on Ubuntu, it does not work as is; it exits with errors. It does work if I just import the wave library (which is part of the standard library) so wav files could be read and written. However without numpy things will be cumbersome.
I will see if I get it to work in Praat. You could have a look if on your machine if you can get an executable from python using pyinstaller. Just a file with two lines for testing:
import numpy print(numpy.__version__)
This would be enough to see if the pyinstaller can work. I am sure the actual Python code to do the equalization is easy.
|
|
|
|
Joined: Feb 2019
Posts: 708
500 Post Club Member
|
500 Post Club Member
Joined: Feb 2019
Posts: 708 |
Very interesting! This is still command line based but it seems to install fine if you follow the instructions, and is easy to use, once installed.
|
|
|
|
Joined: Apr 2018
Posts: 9,824
9000 Post Club Member
|
9000 Post Club Member
Joined: Apr 2018
Posts: 9,824 |
Very interesting! This is still command line based but it seems to install fine if you follow the instructions, and is easy to use, once installed. So, does this mean we are about to have some friendly competition? I'd open an Eclipse instance except that those who program Python in Eclipse have " forgotten the face of their father."
across the stone, deathless piano performances "Discipline is more reliable than motivation." -by a contributor on Reddit r/piano "Success is 10% inspiration, and 90% perspiration." -by some other wise person "Pianoteq manages to keep it all together yet simultaneously also go in all directions; like a quantum particle entangled with an unknown and spooky parallel universe simply waiting to be discovered." -by Pete14
|
|
|
|
Joined: Apr 2019
Posts: 2,067
2000 Post Club Member
|
2000 Post Club Member
Joined: Apr 2019
Posts: 2,067 |
You didn't specify if you have played them individually or used the same midi file for all of them.
#3 is the best in my opinion. It's either played better or the VST has better sensitivity range. There is more expression in it and the altitudes in the dropbox depict this as well.
|
|
|
|
Joined: Feb 2019
Posts: 708
500 Post Club Member
|
500 Post Club Member
Joined: Feb 2019
Posts: 708 |
I will leave tomorrow morning early, so won't have time to produce something useful in the next two weeks. I haven't tried it but the ffmpeg-normalize package looks very good (and has even more advanced options than rms normalize). I guess an improvement would be to implement something that has a graphical user interface. Praat, or Audacity would be nice. I do not know if the latter has sufficiently functional scripting options.
|
|
|
|
Joined: Jun 2019
Posts: 21
Full Member
|
Full Member
Joined: Jun 2019
Posts: 21 |
I've always wondered why someone hasn't made a piano MIDI "Pangram" that covers just about every note played using every technique possible. Then you could just feed that MIDI into any VST of your choice and see how the VST recreates it (to see which VSTs fail at recreating various techniques and what not).
|
|
|
|
Joined: Oct 2013
Posts: 3,868
3000 Post Club Member
|
3000 Post Club Member
Joined: Oct 2013
Posts: 3,868 |
What do you mean by “every technique†possible ? Some VST have already a staccato vs. non staccato articulation. If you add the velocity axis with a phrasing axis (staccato, normal, legato, tenuto...) 1/ you will have more samples to record and store, and 2/ no way to communicate efficiently the second axis value from the controller to the VST.
|
|
|
|
Joined: Jun 2019
Posts: 21
Full Member
|
Full Member
Joined: Jun 2019
Posts: 21 |
What do you mean by “every technique†possible ? Some VST have already a staccato vs. non staccato articulation. If you add the velocity axis with a phrasing axis (staccato, normal, legato, tenuto...) 1/ you will have more samples to record and store, and 2/ no way to communicate efficiently the second axis value from the controller to the VST. Yeah I was just referring to how some demos I've seen people post are almost all staccato or what not. A good "template" would have examples of all forms of articulation just to show how the VST handles short or sustained notes and various velocities. (linking for general posterity, obviously you know what these are) https://en.wikipedia.org/wiki/Articulation_(music)
Last edited by Maconi; 08/17/19 08:13 PM.
|
|
|
|
Joined: Apr 2018
Posts: 9,824
9000 Post Club Member
|
9000 Post Club Member
Joined: Apr 2018
Posts: 9,824 |
across the stone, deathless piano performances "Discipline is more reliable than motivation." -by a contributor on Reddit r/piano "Success is 10% inspiration, and 90% perspiration." -by some other wise person "Pianoteq manages to keep it all together yet simultaneously also go in all directions; like a quantum particle entangled with an unknown and spooky parallel universe simply waiting to be discovered." -by Pete14
|
|
|
Forums43
Topics223,387
Posts3,349,212
Members111,632
|
Most Online15,252 Mar 21st, 2010
|
|
|
|
|
|