Menu

WWArbitraryResampler

yamamoto2002
Attachments
WWARSS.png (47328 bytes)

Arbitrary (irrational) resampling app to change pitch of music file. As a side effect, music duration or tempo is also changed.

Meant to be used to a semitone or a whole tone pitch increase/decrease. Typical use case is correction of the pitch of old recordings, something like increase by 2% (on this case, specify 1.02 x on the app).

Supported sound file format : FLAC

App screen shot

Downloads

Windows 10 x64 : https://sourceforge.net/projects/playpcmwin/files/others/WWArbitraryResampler103.zip/download

Supported platforms

Windows 10 x64

Direct3D 12 Feature Level 11_1 is used. Also optional double-precision operation feature (D3D12_FEATURE_DATA_D3D12_OPTIONS.DoublePrecisionFloatShaderOps) is required to run the resample shader.
Nvidia or AMD dedicated GPU or integrated graphics units may work.

Check your processor's feature level and double-precision capability:
https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units
https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units
https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units

License

MIT License.
libFLAC: BSD License.

How to Install

Download WWArbitraryResampler102.zip and Extract all.

How to Uninstall

Delete downloaded zip file and its extracted files.

How To Use

Run WWArbitraryResampler on extracted folder.

Select GPU adapter. This app uses GPU to compute arbitrary resampling.

Select Input and Output File (only FLAC is supported)

Set pitch scaling value.

  • Increase pitch by wholetone: 1.1224620483094
  • Increase pitch by semitone: 1.0594630943593
  • Decrease pitch by semitone: 0.9438743126817
  • Decrease pitch by wholetone: 0.8908987181403

Press Start to convert.

Example

  • Richter Bach Well Tempered Clavier : 0.973 x to concert pitch.

Processing time comparison

Input data: 44.1kHz 16bit 2ch, duration 3 min 25 sec FLAC file.
Processing type: Increase pitch by a semitone.

GPU processing time speed ratio to playback speed
Nvidia Titan V 1 min 0 sec 3.42 x
AMD Radeon HD 7950 5 min 56 sec 0.576 x
Nvidia GeForce RTX 3090 6 min 29 sec 0.527 x
Nvidia GeForce RTX 2080 Ti 9 min 18 sec 0.367 x
Nvidia GeForce GTX 1080 13 min 17 sec 0.257 x
Intel i7-8700K UHD Graphics 630 1 hour 14 min 58 sec 0.0456 x
Nvidia Titan Black Does not work because it is Feature Level 11_0 card. -

This program uses double-precision arithmetic on compute shader, therefore double-precision processing performance is important!

Commandline args

WWArbitraryResampler inputPath gpuId pitchScale outputPath

Source code

https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWArbitraryResampler/
https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWDirectCompute12Cs/
https://sourceforge.net/p/playpcmwin/code/HEAD/tree/PlayPcmWin/WWDirectCompute12DLL/

About conversion quality

Design target of the sample rate conversion quality is Audio CD quality.

Sinc function convolution is performed using 64-bit floating point. convolution length (tap size) is 65535.

Input flac bit depth is 16bit or 24bit. Output flac bit depth is 24bit.

When pitch is increased, output sample rate is doubled to avoid to use low-pass filter, which is neccessary when output signal may contain higher frequency than Nyquist frequency.

Changelog

Version 1.0.3

  • Allow file drops on input/output filename textbox

Version 1.0.2

  • Commandline parse code moved to App class

Version 1.0.1

  • Shows processing time

Version 1.0.0

  • Initial relase

Related

Wiki: Home
Wiki: PlayPcmWinJp

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.