Help - Search - Members - Calendar
Full Version: Gap killer
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
DickD
QUOTE(Case @ Jul 17 2003, 05:57 PM)
I made some major improvements for Gap killer yesterday, still not perfect always but it's much better than old versions. Please try latest version.

Case, (and apologies if this doesn't belong on the :B 0.7 test thread)

I'm just trying it now (on a [cough] FhG Fastenc 128 CBR mix album (Fatboy Slim)to start with).

Can I ask if it matters where it goes in the DSP order, especially if it's making assumptions about 588 samples per CD frame. Would it therefore be fooled if it appeared after Resampler and that converted to 48000 S/s?

(My Resampler at work is actually set to 44100, because the soundcard won't go any higher and sounds badly aliased at 8000 or 11025, so it's not an issue on this machine)

Also, I've had the max gap removal set to 105 ms (4 frames) since the old version (after checking the console and noticing it was removing 2000 ms from some Musepack files, which are gapless, so the gap is intentional!).

Just trying The Very Best of Curtis Mayfield (Musepack encodes) and it's removing 4630 samples (my 105 ms limit) from both the end and the beginning. It still sounds great, however, and I don't notice the difference in length of silence.
CODE
INFO (CORE) : opening file for playback : file://F:\My Music\Curtis Mayfield\The Very Best of Curtis Mayfield\03 - Curtis Mayfield - Move On Up.mpc
INFO (foo_dsp_nogaps) : 4630 samples removed (from end)
INFO (foo_dsp_nogaps) : 4630 samples removed (from beginning)


I'm not familiar with the architecture of FB2K, but is it possible for the plugin to be aware of the filetype being played and whether it's an intrinsically gapless format? I'd have thought so, if it can get the encoder delay and padding from the LAME header on --alt-preset standard files, although with some Rachmaninov in APS, it still removed 4630 samples despite getting that extra information (this album has silence between movements, but it's one of the few albums in APS I happen to have on my PC to test gapkiller on):

CODE
INFO (CORE) : opening file for playback : file://F:\My Music\Rachmaninov\Rhapsody On A Theme Of Paganini, Concerto For Piano & Orchestra No.2\01 - Rhapsody On A Theme Of Paganini, Op.34.mp3
INFO (foo_input_std) : got encoder delay: 576
INFO (foo_input_std) : got encoder padding: 1620
INFO (CORE) : opening file for playback : file://F:\My Music\Rachmaninov\Rhapsody On A Theme Of Paganini, Concerto For Piano & Orchestra No.2\02 - 1st movement- Moderato; Concerto For Piano And Orchestra No.2 in C minor, Op.18.mp3
INFO (foo_input_std) : got encoder delay: 576
INFO (foo_input_std) : got encoder padding: 1344
INFO (foo_dsp_nogaps) : 4630 samples removed (from end)
INFO (foo_dsp_nogaps) : 4630 samples removed (from beginning)
INFO (CORE) : opening file for playback : file://F:\My Music\Rachmaninov\Rhapsody On A Theme Of Paganini, Concerto For Piano & Orchestra No.2\03 - 2nd movement- Adagio sostenuto; Concerto For Piano And Orchestra No.2 in C minor, Op.18.mp3
INFO (foo_input_std) : got encoder delay: 576
INFO (foo_input_std) : got encoder padding: 2232
INFO (foo_dsp_nogaps) : 4630 samples removed (from end)
INFO (foo_dsp_nogaps) : 4630 samples removed (from beginning)
INFO (CORE) : opening file for playback : file://F:\My Music\Rachmaninov\Rhapsody On A Theme Of Paganini, Concerto For Piano & Orchestra No.2\04 - Finale- Allegro scherzando; Concerto For Piano And Orchestra No.2 in C minor, Op.18.mp3
INFO (foo_input_std) : got encoder delay: 576
INFO (foo_input_std) : got encoder padding: 2004
INFO (foo_dsp_nogaps) : 4630 samples removed (from end)
INFO (foo_dsp_nogaps) : 4630 samples removed (from beginning)


(Incidentally, the 128kbps Fatboy Slim track changes sounded smooth - mostly after skipping to the end of one track to just hear the changeover - so I'm pretty happy to be able to turn on gap killer for such albums. It didn't seem to matter whether I skipped forward or listened to the whole track - the removed samples were the same)

Anyway, although I usually keep it turned off because I'm mostly using MPC, this is a useful tool for times I want to recover from some gappy MP3s I still have, and audibly it seems to do approximately as good a job as the much-lauded mp3splice does in Winamp 2.x.

Thanks,

DickD
Case
QUOTE(DickD @ Jul 17 2003, 09:05 PM)
Can I ask if it matters where it goes in the DSP order, especially if it's making assumptions about 588 samples per CD frame. Would it therefore be fooled if it appeared after Resampler and that converted to 48000 S/s?

It shouldn't matter, with the exception that gap killer doesn't remove anything between files that have different samplerate or number of channels.
This DSP doesn't make any assumption about number of samples that should be present, it simply tries to determine what is unintended noise caused by MP3/AAC encoding and what is real audio signal.

QUOTE
Also, I've had the max gap removal set to 105 ms (4 frames) since the old version (after checking the console and noticing it was removing 2000 ms from some Musepack files, which are gapless, so the gap is intentional!).


Yes, the 2 second buffer is usually overkill but I left it as default so that gaps caused by bad CD burning settings (read: Nero's defaults) are eliminated on playback too.

QUOTE
Just trying The Very Best of Curtis Mayfield (Musepack encodes) and it's removing 4630 samples (my 105 ms limit) from both the end and the beginning. It still sounds great, however, and I don't notice the difference in length of silence.
CODE
INFO (CORE) : opening file for playback : file://F:\My Music\Curtis Mayfield\The Very Best of Curtis Mayfield\03 - Curtis Mayfield - Move On Up.mpc
INFO (foo_dsp_nogaps) : 4630 samples removed (from end)
INFO (foo_dsp_nogaps) : 4630 samples removed (from beginning)



Do those files have real silence or is Gap killer making so big mistake that it removed that much audio data?

QUOTE
I'm not familiar with the architecture of FB2K, but is it possible for the plugin to be aware of the filetype being played and whether it's an intrinsically gapless format? I'd have thought so, if it can get the encoder delay and padding from the LAME header on --alt-preset standard files


I'm afraid DSPs can't get that info. Encoder delay and padding are read and taken into accout by mp3 decoder only.
DickD
Thanks for your response, Case.

QUOTE(Case @ Jul 17 2003, 07:42 PM)
Do those files have real silence or is Gap killer making so big mistake that it removed that much audio data?


Yes, I think it's real silence. I didn't notice any loss of sound that I expected to hear.

QUOTE
I'm afraid DSPs can't get that info. Encoder delay and padding are read and taken into accout by mp3 decoder only.


As for the padding, I read about Peter's changes to the mp3 decoder (e.g. removing the attempt to use that info, which hadn't been very successful due to the LAME implementation), but I'm still running the old beta (v0.7 beta 21) that doesn't include those changes! D'oh!

Anyway, I'm very happy to have gapkiller available and to use it judiciously with the 105 ms max, and I don't need to worry about any major issues if I accidentally leave it on for my MPC files. I can live with losing 210 ms of silence!
Bachi-Bouzouk
I got this some time ago:
CODE
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 012C1976h
Access violation, operation: read, address: 0810FFF8h
Call path:
playback_core_i::g_thread_func=>playback_core_i::thread_func=>dsp::run
This is the first crash logged by this instance.
Code bytes (012C1976h):
012C1936h: 85 C0 0F 86 90 00 00 00 8B 45 10 83 65 F8 00 89
012C1946h: 45 F4 DF 6D F4 8B C1 C1 E0 03 89 45 F8 DC 3D 08
012C1956h: 31 2C 01 8B 45 08 56 89 45 0C DD 5D D4 EB 02 DD
012C1966h: D8 8B 55 10 85 D2 8B 4D 0C 76 18 8B C7 C1 E0 03
012C1976h: DD 01 03 C8 4A D9 C0 D8 C9 DC 45 EC DD 5D EC DD
012C1986h: D8 75 ED DD 45 D4 8B 73 60 DC 4D EC 51 51 DD 1C
012C1996h: 24 E8 DA 0D 00 00 83 65 E8 00 89 75 E4 DF 6D E4
012C19A6h: 8B 45 F8 FF 45 FC 01 45 0C 39 75 FC DE F9 59 59
Stack (063EFCD0h):
063EFCB0h: 058860A0 77BFAF95 00000001 043C0E78
063EFCC0h: 00000001 00000013 00000012 004012D5
063EFCD0h: 05864DE0 000122A0 081103B0 9999999A
063EFCE0h: 3FA99999 B86E02FF 3F522320 00000006
063EFCF0h: 00000000 00000000 3F0A2F00 00000014
063EFD00h: FFFFFFF8 00000005 063EFD28 012C18AD
063EFD10h: 081103B0 08110388 00000014 05886608
063EFD20h: 05864DE0 05864E00 063EFDB8 012C148F
063EFD30h: 00000014 FFFFFFFF 000122B4 05886608
063EFD40h: 05864DE0 058D32B4 E6630C4D 3F000011
063EFD50h: 360972FC 0024A736 0590D460 010A0178
063EFD60h: 00000000 00000000 06590000 00000017
063EFD70h: 00000000 00000000 00000002 00000010
063EFD80h: 667F3BCD 00000100 05886608 0591A0C8
063EFD90h: 012D12FE 02DC6C00 00000000 012D131A
063EFDA0h: 00000003 05D57CB8 0000544C 00017700
063EFDB0h: 00000000 000122B4 063EFDE4 012C1F39
063EFDC0h: 00000000 05855288 00000004 0040ABB3
063EFDD0h: 063EFEFC 05893C44 00000000 00000001
063EFDE0h: 05855288 063EFE70 0040AA69 0000003C
Registers:
EAX: FFFFFFD0, EBX: 05864DE0, ECX: 0810FFF8, EDX: 00000001
ESI: 00000006, EDI: FFFFFFFA, EBP: 063EFD08, ESP: 063EFCD0
Crash location: "foo_dsp_nogaps", loaded at 012C0000h - 012C7000h

Loaded modules:
foobar2000 loaded at 00400000h - 00452000h
ntdll loaded at 77F40000h - 77FEE000h
kernel32 loaded at 77E40000h - 77F36000h
USER32 loaded at 77D10000h - 77D9D000h
GDI32 loaded at 7E0B0000h - 7E0F1000h
ADVAPI32 loaded at 77DA0000h - 77E3E000h
RPCRT4 loaded at 78000000h - 78087000h
ole32 loaded at 4FEC0000h - 4FFF6000h
COMCTL32 loaded at 78090000h - 78175000h
msvcrt loaded at 77BE0000h - 77C33000h
SHLWAPI loaded at 70A70000h - 70AD6000h
utf8api loaded at 10000000h - 1000D000h
comdlg32 loaded at 76340000h - 76386000h
SHELL32 loaded at 00460000h - 00C68000h
foo_abx loaded at 010E0000h - 010EC000h
foo_ac3 loaded at 010F0000h - 01103000h
foo_albumlist loaded at 01110000h - 0111B000h
foo_apl loaded at 01120000h - 0112A000h
foo_bitcompare loaded at 01130000h - 01139000h
foo_burninate loaded at 01140000h - 0114C000h
VERSION loaded at 77BD0000h - 77BD7000h
foo_cdda loaded at 01150000h - 0115E000h
foo_channel_mixer loaded at 01160000h - 0118F000h
MSVCR71 loaded at 7C340000h - 7C396000h
uxtheme loaded at 5B090000h - 5B0C4000h
foo_clienc loaded at 011A0000h - 011AB000h
foo_console loaded at 011B0000h - 011B7000h
foo_dbsearch loaded at 011C0000h - 011D8000h
foo_diskwriter loaded at 011E0000h - 011F2000h
WINMM loaded at 76AE0000h - 76B0E000h
foo_dsp_crossfade loaded at 01280000h - 01287000h
foo_dsp_crossfeed loaded at 01290000h - 01296000h
foo_dsp_extra loaded at 012A0000h - 012B5000h
foo_dsp_nogaps loaded at 012C0000h - 012C7000h
foo_dsp_skip_silence loaded at 012D0000h - 012D7000h
foo_dynamics loaded at 012E0000h - 012E7000h
foo_flac loaded at 012F0000h - 0130C000h
foo_flaccer loaded at 01310000h - 01326000h
foo_freedb loaded at 01330000h - 0135E000h
WS2_32 loaded at 719F0000h - 71A05000h
WS2HELP loaded at 719E0000h - 719E8000h
foo_G-Force loaded at 013A0000h - 013AB000h
foo_history loaded at 013B0000h - 013C5000h
foo_id3v2 loaded at 013D0000h - 01400000h
MSVCP60 loaded at 76010000h - 76071000h
foo_infobox loaded at 01400000h - 01413000h
foo_input_std loaded at 01420000h - 014BE000h
MSACM32 loaded at 77BB0000h - 77BC4000h
foo_lpac loaded at 014C0000h - 014C7000h
lpac_codec_api loaded at 014D0000h - 014DA000h
lpaccodec loaded at 014E0000h - 01509000h
foo_massdelete loaded at 01730000h - 0173A000h
foo_masstag loaded at 01740000h - 01754000h
foo_mod loaded at 01760000h - 01769000h
BASS loaded at 01770000h - 017CA000h
foo_monkey loaded at 017D0000h - 017EC000h
foo_mpeg4u loaded at 017F0000h - 01819000h
foo_msn loaded at 01820000h - 01827000h
foo_nez loaded at 01830000h - 0185B000h
foo_null loaded at 01860000h - 01867000h
foo_ofr loaded at 01870000h - 01876000h
OptimFROG loaded at 01880000h - 018AC000h
foo_output_std loaded at 018C0000h - 018C9000h
foo_out_dsound_ex loaded at 018D0000h - 018D9000h
DSOUND loaded at 73E60000h - 73EB5000h
foo_out_ks loaded at 018F0000h - 018FB000h
SETUPAPI loaded at 76610000h - 766FC000h
foo_playcount loaded at 01900000h - 0190A000h
foo_playlistgen_ex loaded at 01910000h - 0191F000h
foo_playlist_output loaded at 01920000h - 0193A000h
foo_ape loaded at 01940000h - 0195F000h
foo_convolve loaded at 01960000h - 019AF000h
foo_faac loaded at 019B0000h - 019E3000h
foo_playlist_tree loaded at 019F0000h - 01A31000h
foo_vis_vu_meter loaded at 01B40000h - 01B48000h
foo_vorbisenc loaded at 01B50000h - 01C61000h
foo_wavpack loaded at 01C70000h - 01C82000h
foo_playlist_output_custom loaded at 01C90000h - 01CAA000h
foo_prettypop loaded at 01CB0000h - 01CE7000h
mscoree loaded at 79170000h - 79196000h
mscorwks loaded at 791B0000h - 79416000h
fusion loaded at 79040000h - 79085000h
mscorlib loaded at 79780000h - 7998C000h
mscorlib loaded at 79990000h - 79CCC000h
MSCORJIT loaded at 79430000h - 7947D000h
foo_psf loaded at 040E0000h - 0418C000h
foo_quicktag loaded at 04190000h - 04199000h
foo_read_http loaded at 041A0000h - 041A9000h
foo_rgscan loaded at 041B0000h - 041BD000h
foo_scheduler loaded at 041C0000h - 041D5000h
foo_scroll loaded at 041E0000h - 041E6000h
foo_search_ex loaded at 041F0000h - 041F8000h
foo_shn loaded at 04200000h - 0420F000h
foo_sid loaded at 04260000h - 042A7000h
foo_spc loaded at 04210000h - 04221000h
foo_speex loaded at 04230000h - 04248000h
foo_tfmx loaded at 042B0000h - 042B9000h
foo_tta loaded at 042C0000h - 042C9000h
foo_tta_old loaded at 042D0000h - 042D9000h
foo_uie_albumart loaded at 042E0000h - 042EC000h
gdiplus loaded at 70D00000h - 70E91000h
foo_uie_albumlist loaded at 04300000h - 04311000h
foo_uie_explorer loaded at 04320000h - 04336000h
MSVCP71 loaded at 7C3A0000h - 7C41B000h
foo_uie_simple_spectrum loaded at 04340000h - 0434B000h
foo_uie_tabs loaded at 04350000h - 0435A000h
foo_uie_trackinfo loaded at 04360000h - 0436B000h
foo_ui_columns loaded at 04370000h - 043A7000h
foo_ui_std loaded at 043B0000h - 043C7000h
foo_unpack loaded at 043D0000h - 04401000h
OLEAUT32 loaded at 770E0000h - 7716B000h
foo_utils loaded at 04410000h - 04421000h
foo_vis_manager loaded at 04430000h - 04438000h
foo_vis_simple_spectrum loaded at 04440000h - 0444A000h
foo_wma loaded at 04450000h - 0446A000h
WMVCore loaded at 086C0000h - 08904000h
WMASF loaded at 070D0000h - 0710B000h
MSCTF loaded at 74690000h - 746D4000h
lgscroll loaded at 10100000h - 10116000h
appHelp loaded at 75ED0000h - 75EEF000h
CLBCATQ loaded at 7A170000h - 7A1F1000h
COMRes loaded at 77000000h - 770D4000h
cscui loaded at 765B0000h - 76601000h
CSCDLL loaded at 76590000h - 765AC000h
Powrprof loaded at 74A40000h - 74A47000h
system.drawing loaded at 7B490000h - 7B506000h
system.drawing loaded at 7B510000h - 7B5DE000h
system.windows.forms loaded at 7B610000h - 7B808000h
system.windows.forms loaded at 7B810000h - 7BAF2000h
system loaded at 7B0A0000h - 7B1CE000h
system loaded at 7B1D0000h - 7B3B0000h
wdmaud loaded at 72C70000h - 72C79000h
msacm32 loaded at 72C60000h - 72C68000h
midimap loaded at 77BA0000h - 77BA7000h
mslbui loaded at 60970000h - 60978000h
dciman32 loaded at 73B10000h - 73B16000h
netapi32 loaded at 71B80000h - 71BCE000h
MPR loaded at 71A60000h - 71A71000h
drprov loaded at 75EF0000h - 75EF6000h
ntlanman loaded at 71B70000h - 71B7D000h
NETUI0 loaded at 71C30000h - 71C46000h
NETUI1 loaded at 71BF0000h - 71C2C000h
NETRAP loaded at 71BE0000h - 71BE6000h
SAMLIB loaded at 71B50000h - 71B61000h
davclnt loaded at 75F00000h - 75F09000h
shgina loaded at 73CC0000h - 73CD2000h
MSGINA loaded at 75900000h - 759F4000h
USERENV loaded at 75A00000h - 75AA7000h
WINSTA loaded at 762F0000h - 762FF000h
ODBC32 loaded at 065A0000h - 065D2000h
odbcint loaded at 1F850000h - 1F868000h
Secur32 loaded at 76F40000h - 76F50000h
Audiodev loaded at 092D0000h - 0934A000h
urlmon loaded at 1A400000h - 1A47D000h
browseui loaded at 71500000h - 715FC000h
ntshrui loaded at 76930000h - 76955000h
ATL loaded at 76AC0000h - 76AD5000h
SHDOCVW loaded at 71700000h - 71849000h
imagehlp loaded at 76C40000h - 76C62000h
DBGHELP loaded at 6D9E0000h - 6DA5D000h

Stack dump analysis:
Address: 012C18ADh, location: "foo_dsp_nogaps", loaded at 012C0000h - 012C7000h
Address: 012C148Fh, location: "foo_dsp_nogaps", loaded at 012C0000h - 012C7000h
Address: 012D12FEh, location: "foo_dsp_skip_silence", loaded at 012D0000h - 012D7000h
Address: 012D131Ah, location: "foo_dsp_skip_silence", loaded at 012D0000h - 012D7000h
Address: 012C1F39h, location: "foo_dsp_nogaps", loaded at 012C0000h - 012C7000h
Address: 0040ABB3h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0040AA69h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00444904h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00420EA6h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00420E71h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0042028Ah, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 042E9278h, location: "foo_uie_albumart", loaded at 042E0000h - 042EC000h
Address: 00439908h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043997Ch, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00439974h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00439960h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00439974h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00439960h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043B09Ch, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AF90h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AFB8h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AFA4h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AFB8h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AFA4h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043A28Ch, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 004394BCh, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AFD4h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 0043AFC0h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 00420525h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 77E5D33Bh, location: "kernel32", loaded at 77E40000h - 77F36000h
Symbol: "RegisterWaitForInputIdle" (+00000043h)
Address: 042E9278h, location: "foo_uie_albumart", loaded at 042E0000h - 042EC000h
Address: 77E74809h, location: "kernel32", loaded at 77E40000h - 77F36000h
Symbol: "SetThreadExecutionState" (+00000097h)
Address: 77E63DB8h, location: "kernel32", loaded at 77E40000h - 77F36000h
Symbol: "OpenConsoleW" (+00001966h)
Address: 004204F6h, location: "foobar2000", loaded at 00400000h - 00452000h
Address: 005C0032h, location: "SHELL32", loaded at 00460000h - 00C68000h
Symbol: "Ordinal7" (+0003813Eh)

Version info:
foobar2000 v0.8.3
UNICODE
Nova5000
This plugin is from 2003, for 0.7. I don't think it would work with 0.83 or 0.9 at all.
TedFromAccounting
Here is the latest 0.8x compatable version...

http://www.saunalahti.fi/~cse/foobar2000/foo_dsp_nogaps.zip
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.