INTERACT FORUM

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1]   Go Down

Author Topic: Request for More Audio Resampling Options  (Read 2159 times)

dennismf

  • Recent member
  • *
  • Posts: 28
Request for More Audio Resampling Options
« on: September 23, 2011, 08:32:45 pm »

I recently started to buy audio albums in HD formats. Most come as 96khz 24bit. I have a few that came as 88.2khz 24bit. I use SPDIF to my audio receiver. The SPDIF adapter handles 44.1, 48 and 96khz. When MC tries to play the 88.2 files it fails unless I enable Resampling at 88.2 khz. The options available for this currently force resampling at 44.1, 48 and 96. Would you consider matching the resampling settings to the SPDIF sample rate capabilities. This detail does appear in the Audio device properties page.

Thankyou for an amazing product. I have automatically purchased every release since V9 (as best my memory serves me).   ::)

Dennis M-F
Logged

Matt

  • Administrator
  • Citizen of the Universe
  • *****
  • Posts: 42323
  • Shoes gone again!
Re: Request for More Audio Resampling Options
« Reply #1 on: September 25, 2011, 06:22:08 pm »

Would adding a choice 'Only sources other than 44.0, 48, and 96 kHz' work?

We've also considered the ability to pick a specific output sample rate for each input sample rate, although this would be a fair bit more complicated (to code and for a user).

Thanks.
Logged
Matt Ashland, JRiver Media Center

Alex B

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 10121
  • The Cosmic Bird
Re: Request for More Audio Resampling Options
« Reply #2 on: September 26, 2011, 01:28:34 am »

I have seen an implementation in which you can use two or more chained resample plugins. The plugin has two custom versions. In one version you can specify the sample rates that are not resampled and in the other plugin version you can set specify the sample rates that will be resampled (other sample rates will be passed through).

For example:
1st plugin: resample to 48, except 44.1, 88.2, 96, 176,4 and 192   =>  will preserve 44.1 and 88.2-192
2nd plugin: resample to 96, but only 88.2, 176,4 and 192  =>  will preserve anything up to 48 and resample 88.2-192

This works fine, but it may be difficult to understand correctly.


Perhaps the following matrix would be easy enough and provide every possibly useful combination:

Input:         -44100 Hz  Output: [ no change, 44100, 48000, 88200, 96000, 176400, 192000 ]
Input: 44101-48000 Hz  Output: [ the same as above, 48000, 88200, 96000, 176400, 192000 ]
Input: 48001-88200 Hz  Output: [ the same as above, 88200, 96000, 176400, 192000 ]
Input: 88201-96000 Hz  Output: [ the same as above, 96000, 176400, 192000 ]
Input: 96001-         Hz  Output: [ the same as above, 176400, 192000 ]

I.e, it would have five lines. Each line would have its own drop-down menu. The drop-down menu options are inside the brackets. Bold means the default option.

This would make possible to simply set one output sample rate that would apply to everything (by using only the first drop-down menu)
and, if preferred, to create a more complex setup -- for example:

below 44.1 => 44.1  (cross-fade will work correctly when an occasional lower sample rate file is played with standard 44.1 audio files)
44.1 => preserve  
48 => preserve
88.2 => 96
96 => preserve
176.4 => 192
192 => preserve

EDIT

By default it could show only the standard options in the first line (without a displayed input frequency range) and the other four lines & drop-down menus could show up/be available when an advanced mode is selected.
Logged
The Cosmic Bird - a triple merger of galaxies: http://eso.org/public/news/eso0755

Alex B

  • MC Beta Team
  • Citizen of the Universe
  • *****
  • Posts: 10121
  • The Cosmic Bird
Re: Request for More Audio Resampling Options
« Reply #3 on: September 26, 2011, 02:56:24 am »

Just out of curiosity I tried some unusual sample rates. I created a few wave files with Audition: 128000, 66150, 64000, 54000, 48128 and 48001 Hz
I set the resampler to 96000 Hz. All input sample rates worked except 48001 Hz. It caused a crash. So you cannot specify a range that starts from e.g. 48001 Hz (unless you are willing to fix this rather theoretical problem).

The playback log:
Code: [Select]
0106328: 1572: Import: JRAnalyzer::Open: Start
0106328: 1572: Import: JRAnalyzer::AddFile: Start
0106328: 1572: Import: JRAnalyzer::AddFile: Filename: Z:\Test\Sample rates\48001.wav
0106328: 1572: Import: JRAnalyzer::AddFileMJ: Start
0106328: 1572: Import: JRAnalyzer::AddFileMJ: Finish (0 ms)
0106328: 1572: Import: JRAnalyzer::AddFile: Finish (0 ms)
0106328: 1572: Import: JRAnalyzer::Open: Finish (0 ms)
0108047: 1572: Playback: CPlayerZone::Play: Start
0108047: 1572: Playback: CPlayerZone::Play: Handling exclusive playback zones
0108047: 1572: Playback: CPlayerZone::Play: Getting actual playback track
0108047: 1572: Playback: CPlayerZone::Play: Processing play for 'Z:\Test\Sample rates\48001.wav'
0108047: 1572: Playback: CPlayerZone::Play: Updating internal track info
0108063: 1572: Playback: CPlayerZone::Play: Playing: <XMLFN version="1.0"><Item Name="Filename">Z:\Test\Sample rates\48001.wav</Item><Item Name="ReplayGainAlbum">-17637</Item><Item Name="SampleRate">48001</Item><Item Name="ReplayGainTrackAutoPreamp">15899</Item><Item Name="AlbumSequentialWithLastTrack">0</Item><Item Name="PlaylistIndex">20</Item><Item Name="DatabaseKey">24852343</Item><Item Name="BitDepth">16</Item><Item Name="ReplayGainTrack">-17637</Item><Item Name="FileType">wav</Item><Item Name="ReplayGainAlbumAutoPreamp">17637</Item><Item Name="Channels">2</Item><Item Name="ErrorFreeMode">0</Item><Item Name="MediaType">Audio</Item><Item Name="Bookmark"></Item></XMLFN>
0108063: 1572: Playback: CJRPlaybackEngine::Play: Start
0108063: 1572: Playback: CJRPlaybackEngine::Play: Playing: Z:\Test\Sample rates\48001.wav
0108063: 1572: Playback: CJRPlaybackEngine::Play: Filetype: wav; Type: 1; Can play: 1; Playback object: 0x54b3bf8
0108063: 1572: Playback: CJRPlaybackEngine::StartPlayFile: Start
0108063: 1572: Playback: CMJPlaybackType::Play: Start
0108063: 1572: Playback: CMJPlayerCore::Play: Start
0108063: 1572: Playback: CMJPlayerCore::Play: Created feeder helper for type wav (native: 1)
0108063: 1572: Playback: CMJWaveFeeder::Play: Start
0108063: 1572: Playback: CMJWaveFeeder::Play: Finish (0 ms)
0108063: 1572: Playback: CMJPlayerCore::Play: Play succeeded
0108063: 1572: Playback: CMJPlayerCore::Play: Result: 1
0108063: 1572: Playback: CMJPlayerCore::Play: Finish (0 ms)
0108063: 1572: Playback: CMJPlaybackType::Play: Play result: 1
0108063: 1572: Playback: CMJPlaybackType::Play: Finish (0 ms)
0108063: 1572: Playback: CJRPlaybackEngine::StartPlayFile: Play returned: 1
0108063: 2024: Playback: CMJWaveFeeder::Thread: Start
0108063: 1572: Playback: CJRPlaybackEngine::StartPlayFile: Finish (0 ms)
0108063: 2024: Playback: CMJWaveFeeder::Thread: Adding skinning
0108063: 1572: Playback: CJRPlaybackEngine::Play: StartPlayFile returned 1
0108063: 2024: Playback: CMJWaveFeeder::Thread: Opening file
0108063: 1572: Playback: CJRPlaybackEngine::Play: Finish (0 ms)
0108063: 1572: Playback: CPlayerZone::Play: Play succeeded
0108063: 1572: Playback: CPlayerZone::Play: Finish (16 ms)
0108063: 2732: Playback: CPlayerZoneDisplayInfoLoadImageThread::Thread: Start
0108078: 2024: Playback: CMJWaveFeeder::Thread: Setting output format
0108078: 2024: Playback: CPlayerZone::OnNewStream: Start
0108078: 2024: Playback: CPlayerZone::OnNewStream: Finish (0 ms)
0108078: 2024: Playback: CWaveOutBin::DestroyBin: Start
0108078: 2024: Playback: CWaveOutBin::DestroyBin: Finish (0 ms)
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Start
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Using input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: AllowCustomOutputFormat - modifying input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wFormatTag 1
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nChannels 6
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nSamplesPerSec 96000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nAvgBytesPerSec 1152000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nBlockAlign 12
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wBitsPerSample 16
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: cbSize 0
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Finish (0 ms)
0108078: 2024: Playback: CWaveOutBin::DestroyBin: Start
0108078: 2024: Playback: CWaveOutBin::DestroyBin: Finish (0 ms)
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Start
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Using input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: AllowCustomOutputFormat - modifying input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wFormatTag 1
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nChannels 6
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nSamplesPerSec 96000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nAvgBytesPerSec 1152000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nBlockAlign 12
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wBitsPerSample 16
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: cbSize 0
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Finish (0 ms)
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Start
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Using input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: AllowCustomOutputFormat - modifying input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wFormatTag 1
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nChannels 6
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nSamplesPerSec 96000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nAvgBytesPerSec 1152000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nBlockAlign 12
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wBitsPerSample 16
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: cbSize 0
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Finish (0 ms)
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Start
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Using input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: AllowCustomOutputFormat - modifying input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wFormatTag 1
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nChannels 6
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nSamplesPerSec 96000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nAvgBytesPerSec 1152000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nBlockAlign 12
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wBitsPerSample 16
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: cbSize 0
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Finish (0 ms)
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Start
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Using input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: AllowCustomOutputFormat - modifying input format
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wFormatTag 1
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nChannels 6
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nSamplesPerSec 96000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nAvgBytesPerSec 1152000
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: nBlockAlign 12
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: wBitsPerSample 16
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: cbSize 0
0108078: 2024: Playback: CAutoConfigureAudioOutput::GetOutputFormat: Finish (0 ms)
0108141: 2732: Playback: CPlayerZoneDisplayInfoLoadImageThread::Thread: Image: 0232C8C0
0108141: 2732: Playback: CPlayerZoneDisplayInfoLoadImageThread::Thread: Finish (78 ms)
0108203: 2024: General: TopLevelExceptionFilter: Unhandled exception -- program crashing
0108203: 2024: General: TopLevelExceptionFilter: Message: 0, wParam: 0, lParam: 0, Window class:
0113828: 2432: General: JRWebApp::Destroy: Start
0113828: 2432: General: JRWebApp::Destroy: Finish (0 ms)
0113828: 2432: General: JRWebApp::Run: Finish (113750 ms)
0113828: 2432: General: JRWebApp::ExitInstance: Start
0113828: 2432: General: JRWebApp::ExitInstance: Stopping web engine
0113859: 2432: General: JRWebApp::ExitInstance: Stopping callback server
0113859: 2432: General: JRWebApp::ExitInstance: Stopping interface server
0113875: 2432: General: JRIpcServerThreaded::ServerStop: Start
0113875: 2432: General: JRIpcServerThreaded::ServerStop: Cancelling thread
0113875: 2432: General: JRIpcServerThreaded::ServerStop: Cancelling pending run
0113875: 2432: General: JRIpcServerThreaded::ServerStop: Stopping thread
0113875: 1728: General: JRIpcServerThreaded::Thread: Thread finishing (cancel: 1; errors: 1)
0113875: 1728: General: JRIpcServerThreaded::Thread: Finish (113844 ms)
0113890: 2432: General: JRIpcServerThreaded::ServerStop: Cancelling response threads
0113890: 2432: General: JRIpcServerThreaded::ServerStop: Deleting response threads
0113890: 2432: General: JRIpcServerThreaded::ServerStop: Closing notification window
0113890: 2432: General: JRIpcServerThreaded::ServerStop: Finish (15 ms)
0113890: 2432: General: JRWebApp::ExitInstance: Finishing

Logged
The Cosmic Bird - a triple merger of galaxies: http://eso.org/public/news/eso0755

Sandy B Ridge

  • Citizen of the Universe
  • *****
  • Posts: 884
Re: Request for More Audio Resampling Options
« Reply #4 on: September 26, 2011, 03:32:14 am »

We've also considered the ability to pick a specific output sample rate for each input sample rate, although this would be a fair bit more complicated (to code and for a user).

I like this option. The only rate I seem to have trouble with is 88.2, all the others I can send out via HDMI. My receiver does support 88.2, so there must be a driver issue somewhere. I only have a couple of sample tracks in 88.2, so I've not chased a solution as yet. Having to scarifice sending native samplerate stuff at other rates just because of this would be a shame.

Oh, I can't do 386 either (is it called DXD?). Maybe an option for samplerates > 192 as well?!!!
Just thinking about the future!

SBR 

PS what I would also find useful in DSP is an option to leave 2 channel stuff alone. There is an option for leave as 2.1 I know, but my receiver does all the bass management stuff anyway, and the TV channels that are encoded with Prologic need to be output as 2.0 to be decoded by the receiver.
Logged
Pages: [1]   Go Up