Hi-Res的意义(外一则)

(本文部分观点已经在在各种旧文中发表过,如果有既视感为正常现象。)

Hi-Res音频(相比CD)是否有意义?首先要客观分析HR到底改变了什么。

Remastering / remix

之前提过,很多时候Hi-Res最大的意义并不在于“High”本身,而是给了厂牌一次re-release的机会。这本质上和是否HR是没有任何关系的,唱片公司如果愿意,完全可以发行remastered的CD(事实上,很多精选集CD里的旧曲都进行了remaster)。注意这里的remastering是指狭义的、即混音有明显的变化的情况,从物理角度来说就是波形或频谱有明显的变化,不包括单纯的音量、动态范围变化(compress),那个下面专门叙述。

当然,重新混音并不是单纯的技术问题,而且还有艺术发挥的成分,所以这个主观性就很大了。很多时候可能重混后的版本不如原版(个人喜好)。随便举个例子,Lantis的HR版的『U・N・M・E・I ライブ』和CD版混音有较为明显的区别,HR版声场重新调整过,但是我个人觉得人声偏小,更喜好CD版。另外就是上次说过的「THE IDOLM@STER MILLION THE@TER GENERATION 11 UNION!!」这张碟也有类似区别。

对于新发行的音乐,一般CD版和HR版不会也不应该有混音(狭义)的区别——几乎不存在某波形HR能发挥、CD发挥不出来的情形。如果厂商这么做,那只能认为是为了商业考虑故意劣化CD版,而不是什么技术限制。

高采样率

一般HR都是从CD的44100Hz提升到96000Hz。由于采样定理和人耳的频率听觉极限客观摆在那里,可以自信地说,高采样率应该是HR最无用的提升没有之一。

硬要说的话,有个小问题就是现在音乐大多在制作过程中使用96000Hz(或者48000Hz?),而CD的采样率由于历史原因是44100这个不能整除的数字,所以resample可能会有时域上的aliasing等问题。不过,有大量高质量的resampling算法的存在,这个问题在主观听感上的影响可以忽略不计。

高量化精度

CD的量化精度(位深)是16bit,HR一般提升到24bit或者32bit。虽然从听感上来说这个到底能否能产生肉耳可辨的区别也很难讲,但是考虑到类比图像的话,8bit/channel这个在当年被普遍认为绰绰有余的位深现在肉眼可见的捉襟见肘(更不要提当年为了work around这个位深在深色感知灰度不足的问题,搞出的遗毒万年的gamma空间,这里按下不表),这里我们还是保守点说高位深还是大概有用的。而且高量化精度最大的优点就是给响度/振幅调整留下了足够的空间——这点在下面详述。

动态范围

前面铺垫了这么多,重头戏其实就是想说这个。CD明明是一个各种指标上都优越于黑胶的介质,为什么许多人却在追求70、80年代的老唱片,而且两者确实有明显的听感区别?一言以蔽之:万恶的响度战争

在追求“越来越响”的前提下,导致音乐的平均音量(我们用一个简单的客观指标:RMS)不断上升,而波形的振幅极限则是固定的0 dBFS,所以能做的只有不断压缩动态范围,使得音乐越来越平(再多不再展开,参见旧文)。

响度战争在进入21世纪之后已经基本进入一个平稳期,基本商业作品(指我一般听的日本ACG)稳定在单边动态范围(RMS->Peak)9-11dB这个数字上。

眼尖的可以发现,响度战争这个问题,和CD vs HR又是没有直接关系的:你完全可以塞高动态范围(因而平均音量也要小很多)的母带进CD(严谨地说,高动态范围配合高量化精度当然最好,但是CD的位深一般也绰绰有余了),只是厂商为了听起来够响不这么做而已。

幸好,HR一般是面向所谓audiophile的,所以比较重视这个问题,不会过度压缩动态范围。而这,也几乎是任何新发行音乐唯一值得追求HR的原因。

反过来讲,如果你发行的HR和CD完全一样的动态范围、更没有mastering上的区别,仅仅是数字96/24好看,那真的有意义么?请容我大言不惭地说一句,没有!

这里让我们有请Lantis选手:

TitleVersionRMSPeakDiff
Glow MapCD-8.84-0.18.74
Glow MapHi-Res-8.83-0.18.73
あの花のようにHi-Res-9.42-0.68.81
なんどでも笑おうHi-Res-16.8016.8
眠り姫 [ORT]Hi-Res-16.33-0.0916.24

不用多说什么了吧。下面两首是作为对比的哥伦比亚的最近发行的的HR。HR和CD完全一样的动态范围就不提了,更可怕的是烂铁的CD们的RMS已经拉到了-8.x这个水平,还剩多少动态范围可想而知了。

当然这个问题不是只有烂铁一家有,只不过一般没这么夸张。看看もちょ最近几张CD(这里同时列出单曲版和专辑版,因为部分有变化):

ArtistSgAlSongSourceVersionRMS (dB)Peak (dB)Diff (dB)
麻倉もも52365×LOVEAlbumCD-9.922-0.0289.894
麻倉もも52365×LOVESingleCD-10.847-0.00110.847
麻倉もも52365×LOVESingleHi-Res-12.595-0.19812.397
麻倉もも52365×LOVEAlbumHi-Res-11.323-0.20111.122
麻倉もも62シュークリームAlbumCD-10.388-0.00110.388
麻倉もも62シュークリームSingleCD-10.928-0.00110.927
麻倉もも62シュークリームSingleHi-Res-12.639-0.19812.442
麻倉もも62シュークリームAlbumHi-Res-11.805-0.20011.605
麻倉もも62スマッシュ・ドロップAlbumCD-9.808-0.0019.808
麻倉もも62スマッシュ・ドロップSingleCD-9.990-0.0019.990
麻倉もも62スマッシュ・ドロップSingleHi-Res-11.945-0.19811.747
麻倉もも62スマッシュ・ドロップAlbumHi-Res-11.247-0.20011.047
麻倉もも72“さよなら”聞いて。AlbumCD-10.814-0.00110.814
麻倉もも72“さよなら”聞いて。SingleCD-9.392-0.1139.279
麻倉もも72“さよなら”聞いて。SingleHi-Res-10.057-0.1169.942
麻倉もも72“さよなら”聞いて。AlbumHi-Res-12.201-0.20112.000
麻倉もも72ユメシンデレラAlbumCD-10.376-0.00910.367
麻倉もも72ユメシンデレラSingleCD-9.107-0.1748.934
麻倉もも72ユメシンデレラSingleHi-Res-9.709-0.1729.537
麻倉もも72ユメシンデレラAlbumHi-Res-11.783-0.20111.582

もちょ早期几张也存在CD版和HR版动态范围完全一样的问题,不过最近发行的至少能多出2dB左右。另外比较搞笑的是同样是音雨人,制作还有细微的差别,もちょ这里可以看到HR版一般有很多余(正确制作的音频有没有headroom,并没有任何区别)的-0.2dB的headroom,而ナンス的碟则基本全都是CD、HR无论RMS/Peak都完全一样的。手头的CD没抓只存了HR版,就不贴数据了。

不过,不同动态范围听起来区别大不大?这个和个人听力、设备、以及更重要的音乐类型还是关系比较大的(例如交响乐一般很需要大动态),我一般听听日呆流行也听不太出区别(事实上,为了车上放歌方便,我放手机的音乐全都是手动压缩过的动态范围均衡过音量的,我有罪)。但这至少是一个实打实、肉眼可见(笑)的客观的区别。

外一则:Python的音频库

在写DR计算的脚本时,发现Python的音频处理库中,似乎并没有一个明显的first choice。当然,数学计算部分都是用Numpy做的,我这里需要的仅仅是一个解码read的库而已。

搜刮了一阵,大概有这么一下几个选择,这里简单介绍下区别:

def read_wavefile(f): 
    from scipy.io import wavfile
    samplerate, data = wavfile.read(f)
    return data, samplerate

最简单的scipy里的wavfile,基本不支持wave/PCM之外的任何类型。输出就是原始整型,取决于位深,int16或者32。注意输出顺序是采样率/值,我颠倒了下便于和别的几个一致。

def read_sf(f):
    import soundfile as sf
    return sf.read(f) 

SoundFile库。输出似乎永远是float64。支持的格式比上面多,但是不支持m4a(好像支持raw AAC?)。

def read_librosa(f, resampling=None):
    import librosa
    data, samplerate = librosa.load(f, sr=resampling, mono=False) #mono by default, resampling super slow
    data = np.transpose(data)
    return data, samplerate

librosa。其本质是调用SF(上述)或者audioread,所以支持的格式也有限。另外参见注释:默认是mono输出很迷惑,自带的resampling巨慢。值的矩阵要转置下和别的统一。好像永远是float32。

def read_pydub(f, normalized=True):
    import pydub
    a = pydub.AudioSegment.from_file(f)
    # a = a.set_frame_rate(44100)
    y = np.array(a.get_array_of_samples())
    if a.channels == 2:
        y = y.reshape((-1, 2))
    if normalized:
        if y.dtype == np.int16:
            power = 15 
        elif y.dtype == np.int32:
            power = 31
        else:
            raise Exception
        return np.float32(y) / 2**power, a.frame_rate # convert to float32 should be more than enough
    else:
        return y, a.frame_rate # y is same as PCM (int16 or 32)

pydub是我比较推荐使用的库了,他是调用FFMPEG来解码的,所以基本支持任何格式。可以通过set_frame_rate来resampling。唯一的问题就是他默认输出的格式和别人比较与众不同,所以要通过上面这一坨子来输出和别人一样的东西。

这里的normalized是指把PCM的整型normalize到[-1,1]的float,并不会改变振幅啦。因为我后面发现做数学计算的时候整型会比较烦,所以我直接在这里面转了float32。

题外话,int16转float [-1,1]无论是除以2^15还是2^15-1都会有小问题(前者会导致32767无法变成1,后者会导致-32768溢出,虽然业界惯例是前者),不是左右对称的辣鸡有符号整型真的超纠结……

另外一个巨坑是如何判断np.array的dtype,参见这个SO,辅助阅读这个

最后前几天发现pydub有个bug:读取24bit的wav巨慢,比同样的FLAC慢几十倍,原因不明。

偶像大师百万现场《LTP》系列歌曲的音频质量问题的研究

上文中我有提到,一直觉得初代ML CD系列《THE IDOLM@STER LIVE THE@TER PERFORMANCE》(下称LTP)的某些歌曲听上去很怪,其中比较明显的是03的『素敵なキセキ』、『ハッピー☆ラッキー☆ジェットマシーン』『Happy Darling』三首Solo,其他也有,比如『オリジナル声になって』等。具体什么问题说不清,可以粗略概括成中频(人声)解析不行,外加整体发扁(动态范围低)。这还是在我没有任何玄学设备、纯粹用几十块钱的破音响听出来的。

虽然也有可能是有意为之(即:我们就是想要这样的听感),但是考虑到ML系列是首次把音乐制作交给lantis(而不是哥伦比亚),我还是怀疑是技术上搞砸了。

来自Hi-res的救赎?

昨天写上文的时候实在忍不住,去mora买了一首hi-res的『Happy Darling』来对比。之前有买过一次mora,记得是不用挂日本代理、但是必须浏览器语言设成ja;不过这次清了下cookie才好使。

对于hi-res,我一直是不怎么感冒的:我并不相信人耳可以听出44.1kHZ或者16bit位深以上的区别。所以如果在音源完全一致的前提下,如果仅仅是把更高精度的数字档放出来,我不觉得比起CD级音质有多大优势(体积还大了N倍)。更不要提谁也无法保证最初的制作精度几何,所谓的hi-res是不是干脆是interpolate上去的?这种事儿在影像、平面印刷等出版物可屡见不鲜。

不过,hi-res有一个优势,和“hi-res”本身没什么关系,就是它相当于是一次重新的发行。也就是说,它可能会使用不同的、或者修复过的音源(尤其是对于这种非同步发行的就更有可能)。这种事情在单纯的CD复刻里都有(之前的[两篇][文章]全在讲这个),更不要提以质量为卖点的hi-res release了。所以,我报的希望就是Lantis发现了当初制作的问题,借着hi-res的春风进行修复。

下载完毕不听不知道,听了发现真的有非常显著的区别!一上来的伴奏(贝斯?吉他?请原谅我贫乏的音乐常识…),两者的声场位置就完全不同,hi-res版更立体;但是hi-res里的钹的声音相对就小了很多。进入人声部分,hi-res版的解析/清晰度也上去了。虽然以我的口味不算完美,但是绝对远强于CD版。

那么上面是听感,果然还是得上一下大杀器Welch’s method的频谱分析(具体请参见各种前文)。

hd

呃,我只能说,差别这么大的同一首歌两个版本,我研究了这么久,分析过那么多音频,还真的是第一次见。而且,CD版这个曲线非常不科学,从来没有见过有歌在5k-10k Hz区间有个坑比高频段强度低这么多的(一般都是大趋势准·单调减)。

这里说明下,从legend可以看到,我测试的时候都是先把hi-res版本转成了44100Hz、16bit的CD音质。Resampling我用的是FB2k自带的PPHS resampler,变16bit没有开dither。我需要声明无论是不同的resampler还是开不开dither,我全都是和原始hi-res文件对比过的,和想象的一样,没有任何听感上和频谱上的区别。哦唯一点是如果用高sample rate的音频,Matlab里跑Welch’s method函数出来的结果分辨率会减半(因为range翻倍成96kHz了但是总点数不变),所以这个必须得resample结果才好看。

全面对比Hi-res和CD版的《LTP》

既然这歌区别能这么大了,接下来自然是要杀全家全测试一遍咯。当然让我买13张hi-res我表示财力不足,于是去tsdm全撸了下来(暂时缺少07)。

当然这一共几十首一次次手动改目录跑我的MATLAB脚本会死人的(虽然之前我一直是这么过来的),于是吭哧了半天增强了下脚本的自动化。这里吐槽下,MATLAB文件操作、字符串操作真的是累,不过现在有struct(类似于object)和cell比起当年纯matrix操作还是方便多了。

上文我是对一定频段的dB数取平均值比较,现在发现不是很合适,比如上面『Happy Darling』这个先低后高的就抵消了。只有两个互相对比的话,可以有更好的办法。我还是用了部分频段(0-14.4kHz)的dB,误差计算经过几次测试后决定用MSE(还是那句话,不要问我对dB进行MSE是否科学w)。

具体操作起来,就是先用foobar批量对所有hi-res进行resample+降位深,然后存到X目录的\%title%\hi-res.wav。再把CD版直接转换(相当于截取,因为没有额外修改)成\%title%\cdrip.wav。这样,同一首歌就会在同一个子目录下。然后用循环处理、做Welch’s method、计算MSE、绘图就行了。

我设定了一个阈值,只有MSE大于这个阈值的才会Plot和输出结果,其他的忽略。另外,因为Welch’s method计算非常费时,所有的结果无论如何都会存在各个子目录中(data.met),以后可以直接提取绘图或者数据分析。

经过多次测试,阈值在5比较合适,在这个条件下有8首歌会中枪——也就是说这8首频谱差别很大(嗯,『Happy Darling』鹤立鸡群……比第二名高一倍还多)。

Title MSE Album/tr
ハッピー☆ラッキー☆ジェットマシーン 6.2445 LTP03/04
Happy Darling 23.6898 LTP03/06
朝焼けのクレッシェンド 10.1786 LTP04/05
恋心マスカレード 7.9994 LTP12/05
ココロがかえる場所 8.8515 LTP12/11
微笑んだから、気づいたんだ。 10.154 LTP13/05
ビギナーズ☆ストライク 6.0709 LTP13/09
Bigバルーン◎ 9.8826 LTP13/11

曲线图如下:

可以看到,大部分的区别其实都是高频段会莫名高一些,听感上区别不大就是,包括那个也有奇怪下凹的『恋心マスカレード』。

之前提到的03的另外两首Solo,『ハッピー☆ラッキー☆ジェットマシーン』虽然确实误差勉强上了5,但是听感基本没什么提升。另外『素敵なキセキ』、『オリジナル声になって』更是几乎没什么变化。所以指望hi-res拯救这几首的愿望落空了。而且为什么只有『Happy Darling』会有这么dramatic的区别,外人估计也无从得知了。

另外,从上面的列表可以看出,似乎LTP12大多数轨都有很大的客观区别。

Hi-res版max’d out带来的爆音问题

另外值得一提的是,hi-res带来的也并不是只有优点。LTP CD版有很多轨的peak都是只有0.9x的,在hi-res里,所有的音量全部拉满了:

QQ图片20180321023838

拉满本身不应该造成任何问题,实际上,大部分歌曲的平均音量其实是变小了的,这样还能拉满,那说明动态范围有提升,是好事情,例如这是『Happy Darling』(上CD,下hi-res):

hd01hd02

不过有些则是反其道而行之(上CD,下hi-res):

dear01dear02

还是那句话,之前没拉满的话单纯拉peak到0dB这步更不会有动态范围的损失;而且一般而言,只要Limiter做得对,稍微砍掉一些动态范围也没啥。

但是在试听中,我遗憾地发现有些歌曲有明显的爆音,最典型的是『Dear…』(上图)的2:21.5处等。

补充:后来看到另外一篇文章diss烂铁的,学到用Audacity可以很直观地标记出爆音:

baoyin

随便查了下,发现几乎所有的LTP的hi-res都有clipping!大部分只是少数区间倒是还好,比较严重的例如Thank You!几乎1/3都是红色。所以真的,CD版本没问题的还是听CD版吧…

后记

最后随便提两个东西。第一个我其实之前也说过一次,就是我惊奇地发现用我的破音响来进行主观听感对比,明显程度远高于我手头的几个耳机/耳塞。感觉音响哪怕是这种地摊货,中/高音解析就是强很多(虽然低音基本不存在w),而且声场定位也很厉害。注意这里说的是辨析不同版本,要说单纯听音乐哪个听感好,耳机还是有独到之处的。

另外一个是在对比hi-res之前,有几张CD我是同时收过某ftp下的整轨版和来源不明的某分轨版FLAC,两者居然不是bitwise identical的(而且用golden wave看波形,区别还蛮大)。不知道是哪边搞糟了(虽然听感和频谱完全一致啦…)。

令人头疼的歌曲版本问题(二)

似乎每次写个啥必出一个“补遗”已经成为惯例了,这次甚至感觉一个补遗都不够,直接连载算了。

先说点好消息,托日本老歌论坛的福,下到了小猫俱乐部2张专辑,3专《PANIC THE WORLD》(1986年07年10日)和4专《 SIDE LINE》(1987年2月21日)的无损。通过查看各自的cue文件,可以清晰地看到3专是有FLAGS PRE、而4专是没有的。结合之前うしろゆびさされ組那边的情况(1专1986年06月05日发行有Pre-em,3专87年3月11日没有pre-em),看来就是在87年左右淘汰了pre-em这个恶心人的技术。

简单比较,可以看到之前手头那版MP3的《PANIC THE WORLD》是没问题的,和无损版听感一致。所以之前的各种对比也OK。至于《 SIDE LINE》,也和《おニャン子クラブ大全集 下》(2005年)里复刻的DISC1 SIDE LINE无二:

test
《SIDE LINE》tr. 6「ポップコーン畑でつかまえて」,实质上的“渡辺満里奈 with おニャン子クラブ”曲

看来,波利佳音至少在复刻《大全集》的专辑曲目时候,基本就是直接用了旧版CD音源(不过依然有处理过,例如那个奇怪的1400 Hz gap),主要有区别的还是各种单曲曲目(可能单曲是从当年的Analog音源重新转录)。这里先按下小猫这边的不表,回到上次也是今天的正题,うしろゆびさされ組的歌曲们。

依旧是托日本老歌论坛的福,Kuboyama大大突然复活发了好多张碟,其中就包括那套当年他放流过但我没赶上的《うしろゆびさされ組 うたの大百科》全套。

这套《うたの大百科》系列说来也颇有意思。负责企划的是一位原波利佳音的制作人須賀正人,现在独立出来开的独立企划公司。给不了解的人多说几句,波利佳音就是富士电视台旗下的日本大手音像、唱片公司之一,尤其在80s偶像方面颇具影响力,我比较厨的小猫、CoCo、斉藤由貴等等都是波利佳音旗下(因为这些都是富士台的节目或者电视剧捧红出来的)。这么一位业内,外加自身也是偶像厨的須賀,通过自己的企划公司一手打造了几个非常经典的女性偶像复刻精选系列,其中就包括斉藤由貴的CD-BOX(2003年)、多次提到过的《おニャン子クラブ大全集》(2005年)、和这个《うしろゆびさされ組 うたの大百科》(2004年)了。后来波利佳音也推出过诸如《 CoCo うたの大百科》(2008年,我买了vol.1还没舍得拆)等,也是延续了这一精神,不过就不知道須賀桑有没有还继续参与制作了。

另外值得一提的是須賀就职波利佳音时期主导了《乱马1/2》(知道为什么演唱主题曲的是CoCo了吧?都是一家人)、《我的女神》等几部富士电视台的经典动画作品,甚至化名给这些作品的角色歌写歌词。其中最出乎我意料的是一部相对冷门作品《鉄コミュニケイション》(中文:钢铁新世纪)的OPED(化名为Sora),因为这两首《my best friend》和《Dear mama》正是堀江由衣的出道曲!

combined
堀江由衣98年的出道单曲《my best friend》BK,可以看到作词为“Sora”,即須賀正人。另外作曲是川井宪次,《乱马1/2》的音乐也是他负责的

咳,跑题了。有了这套《うしろゆびさされ組 うたの大百科》,那么可以对比的版本又多了一个。而且可喜的是,这套复刻制作的质量似乎还不错,至少先大概听了下,听感没有刺耳感。当然,具体的客观对比,还是得上数学方法。把上文全部重复一遍也没啥意思,于是我决定试图列一个表格来更客观、直观地统计一下各个版本。

我短时间内能想到的方法就是对上文产生的曲线进行平均计算,然后比较数字的大小。这样可以同时定性和定量地比较高低。因为曲线的最开始几个点dB数差别甚大对平均数会有蛮大影响,高于15k Hz又会有MP3版本完全消失的问题,所以我非常随意地只选取了其中172~15073 Hz的频段。这里必须声明下这个方法显然非常不scientific(感觉频率标应该用对数,而且我不清楚直接对dB进行算术运算是否正确),但是我们追求的目标只是比我目测更客观就行了。另外,我最后统一加了80 dB,变成正数便于对比。

另外,我还下到一张99年的《おニャン子クラブ A面コレクション Vol.1》无损,里面也收录了うしろゆびさされ組的1单和2单,一并参与对比。

单曲比较

结果如下(点击看大图):

result

这里我是尽量按照发售年份排序,不过有两个只收录一曲的杂烩精选集放在了最后。

结合上文的频率Welch图,可以观察到以下几个现象。

撇开Welch曲线的高低不论,光看曲线低频段形状就可以区分出几个不同的版本,可以认为可能是不同母带或不同的ADC转录批次造成。而同一个版本的曲线中,又常常会有高低(尤其是高频段)的区别。这个区别可以描述成以某个中频为不动点旋转,所以高频较高的版本一般低频反而会比较低一点。

80-90年代的多张碟虽然不完全一致但是很接近,属于同样的曲线1-高

  1. 《スーパーベスト》收录的四首单曲都和《∞》的版本无大区别
  2. 《PANIC THE WORLD》收录的1单=《スーパーベスト》版
  3. 《ふ・わ・ふ・ら》的3单=《∞》版
  4. 《 A面コレクション》的1单=《∞》版,2单=《スーパーベスト》版
  5. 两个21世纪发售的杂烩碟,也和这个曲线1吻合:
    • 《青春歌年鑑 ’86 BEST30》收录的2单=《∞》版
    • 《みんなアニメが好きだった》(日本コロムビア制作)收录的1单=《うたの大百科》版

《うたの大百科》收录的所有单曲歌曲版本和《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》版本完全一致。但是虽然其形状和曲线1-高一致,高度却要低一些,下称“曲线1-低”。

《おニャン子クラブ大全集》、复刻单曲这2个版本的曲线低频段明显形状不同,下称曲线2。曲线2的主要特征是:低频段低于曲线1,在~1400 Hz处会有个很明显的低谷,但之后比曲线1下降平缓许多,所以高度会很快超过曲线1,并有一个比较尖锐的听感。曲线2有时也会有高低的分别,尤其在《大全集》和复刻单曲之间。

《ザ・プレミアムベスト》会有独特的曲线3(波利佳音号称的重新mastering?),一般低频靠近曲线1、高频靠近曲线2,介于两者之间。论高低/听感的话,也是偏高的。

口说无凭,这里随便用5th来说明几个曲线版本的不同。

image

这张图里几个特征已经很明显:曲线1-高(蓝)和-低(红)形状是一致的,只是有接近等间距的高低之分;曲线2最(紫)明显的特征就是~1400 Hz处的深沟,而且虽然前面低,很快就超越曲线1成为最高的。曲线3(黄)这里基本上和曲线2类似,也有深沟(此例子中,连深沟处的dB都完全一致,但是也有不同的),但是之后并不会像曲线2上升那么快,会低一些。

听感方面,普遍规律是:

尖锐程度:

曲线2 [复刻单曲~=《大全集》]>
曲线3 [《ザ・プレミアムベスト》>
曲线1-高 [80年代专辑版]>
曲线1-低 [《うたの大百科》=《主題歌・挿入歌集》版]

几乎所有单曲A面都符合这个规律。至于B面的情况,其实在上文也看到了,非常复杂。总体趋势的话其实还是和A面类似,但是有大量的例外,例如《∞》收录的三首的表现就非常不统一。

逐个曲目来说,就是(其实上面的总结基本够了,不过还是闲着蛋疼列一下。标红的为反常的):

1st うしろゆびさされ組

曲线1:

  • 高:《PANIC THE WORLD》,《∞》=《A面コレクション》,《スーパーベスト》
  • 低:《うたの大百科》(=《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》,下同略)=《みんなアニメが好きだった》

曲线2:高:复刻单曲;低:《大全集》

曲线3:《ザ・プレミアムベスト》,低频=曲线1-低,有1.4K Hz gap,3500~4000左右到达曲线1-高,后期介于曲线1-高和曲线2-低之间。

专门加一张图让各位看看曲线3的特立独行(加粗那个)。可以看到,从左边起点出发来讲,从上到下依次是曲线1-高(好多条线重合)、曲线2(天蓝+黄)、特立独行的曲线3和曲线1-低(深红)。image2

1st c/w 女学生の決意

曲线1:高:《うたの大百科》;低:《∞》,反过来了居然!

曲线2:高:复刻单曲;低:《大全集》

曲线3:《ザ・プレミアムベスト》,前期和曲线2基本吻合,5000~16000 Hz比曲线2-高还要稍微高点(导致其最终数值最大),之后跌下去介于曲线2高和低之间。

另外,这歌是少数听感反而是曲线2/3好一些的。

2nd バナナの涙

曲线1:

  • 高:《∞》=《青春歌年鑑 ’86 BEST30》,《A面コレクション》=《スーパーベスト》
  • 低:《うたの大百科》

曲线2:复刻单曲~=《大全集》

曲线3:《ザ・プレミアムベスト》,低频=曲线1-低但有1.4K gap,3500~4000左右到达曲线1-高,10000 Hz到达曲线2后基本一致。

2nd c/w あぶないサ・カ・ナ

曲线1:高:《∞》;低:《うたの大百科》,又正常了。

曲线2:高:复刻单曲;低:《大全集》

曲线3:《ザ・プレミアムベスト》,前期和曲线2基本吻合有gap,之后直到4500还和曲线1-低一致,导致其计算数值偏低。不过后面还是开始起飞,9000 Hz左右到达曲线1-高,最后终结在曲线1-高和曲线2-低中间。

3rd 象さんのすきゃんてぃ

曲线1:

  • 高:《スーパーベスト》,《ふ・わ・ふ・ら》=《∞》
  • 低:《うたの大百科》

曲线2:高:复刻单曲,低:《ザ・プレミアムベスト》(没有特别独特的曲线。后期基本和“曲线1-高”高低一致)

3rd c/w 猫舌ごころも恋のうち

这几版听感很接近。

曲线1:高:《ふ・わ・ふ・ら》;低:《うたの大百科》

曲线2:高:复刻单曲,这次前期一直比“曲线1-高”低不少,直到~7000 Hz才反超,不过后面就一骑绝尘高贼多了。

曲线3:《ザ・プレミアムベスト》,前期和曲线2基本吻合有gap(稍浅),在~7000 Hz曲线2起飞之后开始比曲线2低,反而更接近曲线1-高。

4th 渚の『・・・・・』

曲线1:高:《スーパーベスト》=《∞》;低:《うたの大百科》

曲线2:高:复刻单曲;低:《ザ・プレミアムベスト》(没有特别独特的曲线。后期介于曲线1-高和曲线2-高之间)

4th c/w のっとおんりぃ★ばっとおるそう

曲线1:高:《うたの大百科》;低:复刻单曲,这个最奇怪,复刻单曲居然是和《うたの大百科》一样的曲线形状没有1400 Hz的谜之gap,而且还反而更低。

曲线2/3:《ザ・プレミアムベスト》,很难算是曲线2还是3,倒是有Gap,之后和曲线1-高基本一致,但是稍微更平那么一点点,所以前面低于,后面高于,但是区别极小。

5th 技ありっ!

曲线1:高:《∞》;低:《うたの大百科》

曲线2:复刻单曲

曲线3:《ザ・プレミアムベスト》(大概是这么个形状:低频段=曲线1-低,1.4K Hz gap处和曲线2汇合,然后重新出发就处于比曲线2低、比曲线1-高高的中间位置)

5th c/w わたしは知恵の輪

说个题外话,这曲在大全集里的名字变成了「私は知恵の輪」(汉字)。而且,这曲是唯一一首《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》没有收录的指指点点组单曲曲目,但是这歌明明是动画的插曲来着。

曲线1:(低)《うたの大百科》

曲线2:复刻单曲,比曲线1高超级多!可能是因为曲线1实际是曲线1-低的缘故吧。

曲线3:《ザ・プレミアムベスト》,其实这次三个曲线形状都差不多。介于1、2中间,但是更接近曲线1。低频:接近曲线1,gap下潜类似曲线2但是之后又回归曲线1直到5000 Hz左右,开始变得更高一点持续至终。

6th かしこ

曲线1:高:《∞》;低:《うたの大百科》

曲线2:复刻单曲

曲线3:《ザ・プレミアムベスト》,依然是:低频段=曲线1-低,1.4K 有gap [不过这次好像比曲线2晚一点] 然后重新出发。不过这次的不同之处是最后比曲线2还高不少

6th c/w ピタゴラスをぶっとばせ

曲线1:高:《∞》;低:《うたの大百科》

曲线2:复刻单曲

曲线3:《ザ・プレミアムベスト》,还是那个老趋势,前低后高,形状上有Gap,不过这次在7000 Hz左右居然一举超过曲线2,成为最后最高的一条

我把上面那个表格重新整理了下,用红字标注了各种异常情况,列在下面。

form3

从听感的角度出发的话,个人觉得还是80年代版最舒适。复刻单曲+《ザ・プレミアムベスト》偏刺耳(虽然可能更“正确”?),《大百科》版的虽然和80版听感区别很小,但是硬要说的话还是稍微闷了点。

其他专辑曲目

让我们再来比较一下专辑里其他非单曲曲目。主要参与对比的就是《大百科》、我手头有实物自抓的1专、3专(很可惜没有2专)、《ザ・プレミアムベスト》也零星收录了几首。另外,1专那首「SE・KI・LA・LA」在06年另一张选集《デビューアルバムに針を落として… おニャン子クラブ編》里也有收录,一并参与对比。

结果如下:

form3

令人欣慰的是,这次的结果非常consistent。总体而言的趋势,就是《大百科》版比80’原版(1专或者3专)要高一点,但是听感不至于刺耳,甚至可以说是更“清晰”了。所以个人认为这其实是个不错的版本。而《ザ・プレミアムベスト》收录的则又比《大百科》版更尖了点,则就有点过犹不及了。这里只有俩例外,一个是1-7「上手な恋の飲みかた」,一个是3-11「∞」,都是80年代版反而比较高(Again,区别极小)。这些“例外”可能并不是音源不同,而是在制作《大百科》等复刻版本的时候有根据音轨特性进行过手动微调(而非批量)造成的。

嗯,关于1-1那首的其他版本,《デビューアルバムに針を落として… おニャン子クラブ編》收录的版本和《大百科》版完全一致;《ふ・わ・ふ・ら+シングルコレクション》这张复刻我并没有,是从iTunes下的sample,也基本一致,相信如果有整轨来做频率分析的话,应该也是完全一致的一个版本。

那么这期就到此为止了,下期我们再来统计下小猫俱乐部、以及几个成员单飞的曲目(包括ゆうゆ/高井和Sony系那些,虽然Sony系的基本比较一致没什么必要啦)。另外,我发现如果用耳机去听,那些所谓的“刺耳”版本似乎并没有那么不堪,但是用我的破音响就不能忍(那高音钹的声音简直难受),这倒是出乎我的意料(感觉明明耳机应该细节更好来着)。可能只是我音响的高频段稀烂?

令人头疼的歌曲版本问题

之前有提到之所以会去研究pre-em,正是因为某个歌曲不同版本的声音有明显差别。其中一部分,后来是知道可以用pre-em没正确deemph来解释,但是依然有些歌曲有无法解释的区别,最明显的例子就是《大全集》系列里收录一些。所以,心里多少有根刺。

这几天趁着Amazon大降价+30% Off的促销,把之前眼馋已久的《シングルレコード復刻ニャンニャン》给买了回来。

IMG_20180209_173924

这个高达126CD的box就是把从《セーラー服を脱がさないで》起,小猫俱乐部及其会员/子团体那段时期发过的所有黑胶单曲一网打尽复刻。波利佳音这次也算是用了点心,外包装(BK、封面等)也尽量还原了当初的模样,可以说是很有收藏价值。不过不得不说,我会去买这个有一半原因就是希望能给纠结已久的歌曲版本问题,或者说哪个版本才是“原版”画下一个句号(嗯强迫症害死人)——我是这么想的。然而很不幸地,整个事情不但没有变的更清楚,反而更乱了。

バナナの涙

一切的起点其实就是うしろゆびさされ組(下称:指指点点组)第二单曲的这首歌,那么先研究它。这首歌光我手头就有以下这么几个版本:

  1. 复刻单曲版:很显然我没有黑胶,所以这个就是指上图的BOX(2015)中收录的版本了。
  2. 指指点点组二专《∞》(1987)收录版本
  3. 小猫精选集《スーパーベスト》(1986)收录版本
  4. 《おニャン子クラブ大全集》(2005)DISC4 收录版本
  5. 《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》(2008)收录版本
  6. 《青春歌年鑑 ’86 BEST30》(2000)收录版本
  7. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本,之前一直没舍得拆

指指点点组一专《ふ・わ・ふ・ら》(1986)其实也收录了这歌,但是首先这张专辑有pre-em,其次收录的其实是重新编曲的album version(一听就能听出来,比如第一句人声加了奇怪的回声效果),所以不参与下面的评比。即使如此,也有高达7个版本!这么多版本直接试听,效果肯定不好,那么先用上文提到过的多种频率分析的方法来比较。放在一起对比最好的方法是Welch’s method,效果如下(此图Window=1000,后面换用500了,更平滑):full

可以看到,明显分割出两种版本——大全集、单曲复刻和Premium best偏上,其他版本偏下(更低沉)。另外,我对大全集版本试着进行了deem(深红线),可以看到如果真的那么做,会反而比版本2还要低一些。

不过,如果集中看中低频段:zoomin

会发现几个事实:

  1. 黄线(Premium best)其实在这个阶段更接近版本2,只有后来高频段才回上去;
  2. 橘红线(《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》)则其实比别人都要低很多
  3. 大全集deem版本在这里和版本2的贴合程度更高了。

那么,哪个版本更“正确”呢?只能说,连持有音源的版权方波利佳音都能搞出这么不一致的结果,实在是太难讲。从听感上来说,我依然觉得版本2(即,较为低沉的版本)效果要好于版本1(较为尖锐的版本),但是也得承认版本2也因此清澈程度有点低(感觉偏“闷”)。如果要综合两者可能介于中间的premium best版本比较好。从背后的制作来分析的话,既然波利佳音敢号称是analog复刻,那好歹应该是从黑胶母带上重新翻录的吧?按照这个理论,应该是大全集=单曲复刻最准确。但是黑胶尤其是45 rpm的(EP基本都是)本身也是有pre-emphasis存在的,谁知道波利佳音转录的时候有没有搞坏。说到底,这一切的根源,我个人觉得还是80年代黑胶/CD交接期,mastering或者转录(尤其是数字音乐)技术不成熟导致的烂摊子,所以倒也不必执迷于当年的原始版本(例如那个superbest的精选集感觉质量就很差。虽然这首问题不大,其他好几首都感觉太闷了)。

C/w曲的「あぶないサ・カ・ナ」方面也是类似情况:

abunai1

稍微有点不同的是中频段:

abunai2

可以看到,在4k-5k区间,所有版本几乎完美分割成两组;不过,这次《∞》居然是靠上的组。另外就是如果强制对大全集版(对应上面那组)进行deem,正好可以得到下面那组。

うしろゆびさされ組

指指点点组同名歌曲1单,也是最有名的一首了。跑个题,这歌的复刻版包装有双封面,关于哪边是正面我还纠结了一下,后来发现其实当年有两种设计:

ver.1

设计1是这种书页式的(图片来源),正面是动画人物,背面是无字的真人,歌词直接印在内侧(封二,参见这里)。注意条形码是在正面,这也是波利佳音当年的惯例。

另外一种设计就是硬纸袋子式(双面是黏在一起,图片来源)的双封面设计,两面都有字:

ver.2

(左:正面,右:背面;上:1单,下:2单)

歌词也因此变成一张单独的纸夹在里面。这次BOX复刻的就是这种版本。有个奇怪之处在于,一单的条形码移动到了背面。但是可以确认正面依然是左上这个有动画人物的,因为波利佳音的Logo、价格等依然印在这面的右下角。二单的条形码倒是正常在正面。另外一个有趣的是这里可以看到1、2单都是主打动画,毕竟当时指指点点组还没打出名气,要靠tie。从3单开始,虽然还都是tie的《高校奇面组》,人物开始变成封面,动画则变成了封底。

这个歌的版本可就更多了,我手头有:

  1. 复刻单曲版
  2. 一专《ふ・わ・ふ・ら》(1986)收录版本:album version+pre-em,不参与
  3. 二专《∞》(1987)收录版本
  4. 《スーパーベスト》(1986)收录版本
  5. 小猫二专《PANIC THE WORLD》(1986)DISC2收录版本,deem后
  6. 《おニャン子クラブ大全集》(2005)DISC4 收录版本
  7. 《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》(2008)收录版本
  8. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本
  9. 之前下的某个1985 O榜Top100里的版本:来源不明,而且曲线很奇怪,不参与比较
  10. Anison选集《みんなアニメが好きだった》(2009)收录版本

先上个总图:ushiroyubi

(注意:之前有说过,《PANIC THE WORLD》版的提前下坠纯粹是MP3压缩导致的,和话题无关)

由于线实在太多基本看不清,我们得先精简一下。比较发现,

  • 主题歌集=みんなアニメが好きだった,完全一致
  • ∞=スーパーベスト=PANIC THE WORLD,基本完全一致
  • 另外,上述两个版本高频段也相互一致,但是中低频段略有区别

剩下三个21世纪的版本则明显高于80年代版本,且相互并不雷同。

那么,我们移除掉部分重复的版本,并手动对复刻单曲版进行deem再对比:

ushiroyubi2

可以看到,如果手动deem复刻单曲版,高频段会有些过低(深绿线);但是听感上,确实和其他几个80年代版本一致。也就是说,可以认为,这里分化出的两个版本几乎就是恰好差一个deem。那么,到底是波利佳音80年代的版本deem过度,还是新千年的版本忘了deem?主观听感上来讲的话,80年代的确实偏闷(我曾一度觉得这只是这首歌的风格问题…),但是我还是觉得闷一点比尖得刺耳来得好。

顺便一提,如果把低频段放大:

ushiroyubi3

可以看到在这个频段简直是一团乱麻,各个版本几乎平均分隔开。另外有个值得一提的现象就是在约1464hz处的一个gap,这个现象在波利佳音新千年发的复刻cd里非常常见(前文也提到过),尤其是这次的box几乎每张碟都这样。感觉是使用了什么filter的痕迹,具体得需要有audio engineering经验的人告诉我了。

C/w曲「女学生の決意」:

jogakusei

……杀了我吧。

象さんのすきゃんてぃ

指指点点组的3单,参与对比的CD:

  1. 复刻单曲版
  2. 一专《ふ・わ・ふ・ら》(1986)收录版本(这次不是album version了,所以可以参与评比),deem后
  3. 二专《∞》(1987)收录版本
  4. 《スーパーベスト》(1986)收录版本,deem后
  5. 《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》(2008)收录版本
  6. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本

共6个版本。zousan

大部分版本都基本一致。

  • 复刻单曲版(浅蓝线)和之前的一样,也是曲线上比别人都要高不少,但是人声和主要乐器听感并无大区别。
  • Premium best版(深蓝线)这次依然不走寻常路,可以看到前期靠下,5k频率左右介于中间,后面和80年代版一致。波利佳音所谓的全新digital master音源居然是真的(笑)。
  • 主题歌集版曲线整体靠下,听感亦发闷,可以认为是有问题的版本。

顺便一提,这个也证明了我对《ふ・わ・ふ・ら》进行的deem没问题,因为deem之后至少和《∞》的版本基本完全一样。

C/w曲「猫舌ごころも恋のうち」:

nekojita

除了主题歌集版惯例偏低其他区别不大。甚至连惯例偏高的复刻单曲这次也没高多少。

渚の『・・・・・』

4单。

  1. 复刻单曲版
  2. 二专《∞》(1987)收录版本
  3. 《スーパーベスト》(1986)收录版本
  4. 《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》(2008)收录版本
  5. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本

nagisano

明显的双版本分割,八十年代+主题歌集是一个版本,Premium best和单曲复刻是一个版本。区别倒不是很大就是了。

C/w曲「のっとおんりぃ★ばっとおるそう」的情况:

otto

这个倒是意外地重合度极高,不过收录这首的80年代专辑(二专)我手头没有,所以这三个版本都是新千年的。只不过,一般主题歌集版本都是偏低的才对,这里却和Premium best一样了;复刻版的非常少见地居然是最低的。三者听感基本没区别就是。

技ありっ!

5单。

  1. 复刻单曲版
  2. 二专《∞》(1987)收录版本
  3. 《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》(2008)收录版本
  4. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本

wazaari

符合规律的都不多说了,就是新千年版本偏高,主题歌集偏低(相对80年代版)。不过感觉这个老版有点听不清鼓点?

C/w是「わたしは知恵の輪」,手头没有二专所以依然只能比比俩新千年版,别说区别还挺大:

puzzling

 かしこ

指指点点组最后一张单曲(#6)。

  1. 复刻单曲版
  2. 二专《∞》(1987)收录版本
  3. 《「ハイスクール!奇面組」TVアニメ 主題歌・挿入歌集》(2008)收录版本
  4. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本

kashiko

听感基本符合曲线。复刻版和《∞》收录版几乎没区别。《ザ・プレミアムベスト》版稍微尖一点,在架子鼓处很明显,人声倒是区别不大。主题歌集版再次比别人低好多,以后这碟可以抛弃了感觉。

C/w曲「ピタゴラスをぶっとばせ」的,也是发散得不行:

pitagoras

SE・KI・LA・LA

既然都拆了,那正好把《ザ・プレミアムベスト うしろゆびさされ組》里收录的几首专辑曲目也拉来对比下。首先是一专里的《SE・KI・LA・LA》,我有的版本就俩,不过波利佳音08年复刻过《ふ・わ・ふ・ら》(即《ふ・わ・ふ・ら + シングルコレクション》),所以从iTunes拉一个sample:

  1. 一专《ふ・わ・ふ・ら》(1986)收录版本,deem后
  2. 一专《ふ・わ・ふ・ら》(1986)收录版本,deem前(对比用)
  3. 《ふ・わ・ふ・ら + シングルコレクション》(2008)收录版本,iTunes sample
  4. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本

sekilala

嗯……这个差别有点大。可以看到《Premium best》版虽然高频里没有那么过分,但是在中低频几乎和deem前的原版一样了。而且听感?刺耳的很。专辑复刻版稍微好点但是也不行。我毫无悬念选择deem后的80年代原版。虽然我一直相信现代数字科技,对所谓Analog/黑胶高质量论嗤之以鼻,但是看到这种哭笑不得的结果,也好希望自己能有台唱片机听听原版黑胶LP到底是是什么样啊!

另外注意我标的那个点。这1464 Hz的gap也太过分了吧啊喂。你们重新Mastering的时候到底发生了什么,我很在意!

二专里的同名曲目,基本是高井单人曲,ゆうゆ只有部分和声。版本就俩。

  1. 二专《∞》(1987)收录版本
  2. 《ザ・プレミアムベスト うしろゆびさされ組》(2012)收录版本

inf

所以这个为什么又如此接近了……我的头很大。哦其实低频段还是稍有差距。另外这歌的频率曲线好奇怪,那个7752 Hz的山峰到底是什么。

セーラー服を脱がさないで

接下来瞅瞅本家那边,抽查几张单曲。首先是最有名的1单《不要脱我的水手服》。版本有:

  • 复刻单曲版
  • 一专《KICK OFF》(1985/1990)收录版本:这个专辑90年重发过一次,我不确定我手头的EAC是哪个版本,但是根据无pre-em来看,估计是90年代那版
  • 三专《PANIC THE WORLD》(1986) DISC2收录版本,deem后
  • 《スーパーベスト》(1986)收录版本
  • 《おニャン子クラブ大全集》(2005)DISC1(复刻《KICK OFF》)收录版本
  • 《夢カタログ+シングルコレクション》(2008)iTunes下的Sample

sailorfuku

几乎所有版本都完美收敛。

およしになってねTEACHER

这是2单。

  1. 复刻单曲版
  2. 小猫俱乐部二专《夢カタログ》(1986)收录版本,deem后
  3. 三专《PANIC THE WORLD》(1986) DISC2收录版本,deem后
  4. 《スーパーベスト》(1986)收录版本
  5. 《おニャン子クラブ大全集》(2005)DISC2(复刻《夢カタログ》)收录版本
  6. 《おニャン子クラブ SINGLESコンプリート》(2007)iTunes下的Sample
  7. 《夢カタログ+シングルコレクション》(2008)iTunes下的Sample

共7个版本。前文还测试过某个所谓的单曲版,但是来源太可疑(毕竟当年根本没发过CD才对…)这里排除(曲线和《大全集》基本一致)。

teacher

这首歌其实在上文已经分析过了,这里加入了更多的版本来对比,不过基本结论一致。当时的结论是按照尖锐程度从高到低,

  1. 《大全集》~=《SINGLESコンプリート》~=《夢カタログ+シングルコレクション》
  2. 《夢》(de-emph)
  3. 《PANIC》(de-emph) =《スーパーベスト》

《おニャン子クラブ SINGLESコンプリート》和《《夢カタログ+シングルコレクション》这俩同是21世纪的版本也都和《大全集》版基本一致(~10k Hz附近稍微高那么一丢丢)。至于复刻单曲版,则处在1和2中间(其实1和2的区别本来就很小),中低频和《夢》(de-emph)基本一致,高频则和《大全集》版更接近。

听感么,1和2都不错,3太闷。

おっとCHIKAN!

小猫4单。这歌有个逸闻,由于内容太不健康(?前几首有健康过吗XD)后来基本禁播了。

  1. 复刻单曲
  2. 《おニャン子クラブ大全集》(2005)DISC3 收录版本
  3. 《スーパーベスト》(1986)收录版本,deem后
  4. 《スーパーベスト》(1986)收录版本,deem前(对比用)

chikan

《スーパーベスト》版不deem确实太尖,可以淘汰。但是deem之后,又感觉偏闷。由于小猫当年除了这张和另外一张精选《家宝》(而从《スーパーベスト》我们已经可以看到当年的精选集CD的质量有多差了),专辑没收录过这个单曲,所以可以比较的不多,但是听感上确实是新千年的两版本好一些。

お先に失礼

小猫5单。ゆうゆ首次前排,正式跻身小猫的核心成员。接下来的6、7都有担当主唱。

  1. 复刻单曲
  2. 《おニャン子クラブ大全集》(2005)DISC3 收录版本
  3. 《スーパーベスト》(1986)收录版本

各个版本都比较接近,结果直接看图吧。osaki

恋のチャプターA to Z

再来看看河合その子那边的。需要注意,河合その子单飞的唱片公司是Sony,根据我的经验大法那边的复刻版问题会少很多。《恋のチャプターA to Z》是一单的c/w曲,也是我蛮喜欢的一首歌曲(Sonoko真的感觉比较适合这种歌曲,可惜单飞之后没这类的了)。

  1. 复刻单曲
  2. 小猫三专《PANIC THE WORLD》(1986) DISC2收录版本,deem后
  3. 《おニャン子クラブ大全集》(2005)DISC4 收录版本
  4. 《GOLDEN☆BEST 河合その子》(2002,制作:Sony)收录版本

atoz

看图说话,这才是理应有的情况!结论很明显了,前三个版本几乎完全一致。大全集稍微高了点,而且还有谜之1464 Hz gap,辣鸡(嘛其实听感倒还好)。

总结

总之,基本情况就是上述的一锅粥了。硬是要总结一下的话:

  • 早期的两张精选集(《PANIC THE WORLD》DISC2以及《スーパーベスト》),以及08年那张高校奇面组主题歌集的质量都很参差不齐,尽量避免。
  • 指指点点组的多数歌曲由于80年代版本和新世纪的几个复刻版本差别实在太大,我还是选择个人听感比较舒服的80年代专辑收录的版本。《ザ・プレミアムベスト うしろゆびさされ組》收录了几首2专《AN bALANCING TOY》的歌曲还蛮好听的,不过听感就太尖,我迟早得收一张原版的洗牌掉。
  • 小猫本家的倒是可以适当选择新千年版也没差。
  • 索尼系的那几位(その子(CBS索尼)、満里奈(Epic索尼)、美奈代(CBS索尼)等)还是尽量选择索尼自家出的复刻版。

顺便一提,之前看到说iTunes也有自带的deem功能:用iTunes读取CD的话,会自动检测preem,并在播放和转换时自动deem。HydrogenAudio维基号称是subcode级检测,但是我拿那个上次讲过的《スーパーベスト》测试了,并无法正确检测出TOC没有、subcode有的pre-em flag。不过,iTunes的CD数据库确实是吊打freedb等第三方的,比如这个BOX里的复刻CD,基本别的数据库都没有,iTunes就有。可惜我的强迫症还是导致我继续用EAC了。

Pre-emphasis☆超·大·全·补完☆

更新:我感觉我搜了下中文圈谈pre-emphasis的不多,而且很多没提到EAC无法识别subcode的问题,我觉得有责任感(大雾)写个摘要提炼下重点。这样别人找起来方便也不用读我这私货奇多的裹脚布。

TL;DR

  1. 关于Pre-emphasis的介绍见前文,那个不长。但是简单来说,为了减少噪声和量化误差的影响,部分老CD(尤其是日本八十年代)会对CD进行预增益,加强高频,并在播放的时候靠CD Player进行de-emphasis来还原。抓碟时需要手动进行这一过程,否则抓出来的音频高频偏高。
  2. 存在只有部分track有预增益的CD
  3. Pre-em的Flag可以写在CDDA的TOC里,也可以写在subcode(正常应该两者皆有)。抓轨软件识别出之后,一般会在CUE里加上FLAGS PRE
  4. 主流rip软件EAC只能识别TOC里的Pre-em flag,不能识别subcode里的!很重要所以再说一遍,EAC的pre-em识别功能是个残疾!要正确地读取subcode里的pre-em flag,Windows推荐使用CUERipper,Mac推荐XLD。
  5. pre-em的音轨即使识别出来,也需要处理。可以用SOX等软件直接进行de-em转换,也可以用foobar2000配合pre-emphasis=1(需要手动添加,CUE里的不识别)的tag和foo_deemph.dll、foo_dsp_deemph.dll等插件进行回放时即时de-em(不修改文件)。
  6. foo_deemph vs foo_dsp_deemph: 前者为后处理滤镜,只支持无损音频(fb2k本身限制),但是可以参与ReplayGain计算(即:RG scan是在考虑了de-em之后计算),另外BUG:暂不支持无损+内嵌CUE+仅部分轨有pre-emphasis=1的特殊情况。后者为DSP(需要DSP中勾选),支持所有格式但是不参与RG计算,无法计算出准确的音量增益。
  7. 可以利用频谱分析(推荐使用周期图,最清晰)来对比音轨和识别pre-em过的音轨。

下面正文。


我发现一个趋势:每次我写点啥文章,绝对会在写完之后发现更多该topic相关的东西,然后……写出一个比本篇还长的续。这次大概也不例外了。

Pre-emphasis危机

上篇说到Pre-emphasis的事情,有提到我对我之前的收藏里有多少没发现的Pre-emphasis的担忧,这不果然说中了。因为知道了这玩意的存在,所以在抓うしろゆびさされ組的第二专《∞》的时候专门留了个心眼,发现和首专不同,这张抓出来并没有pre-emphasis的tag,听起来也一切正常。不过和手头其他版本对比的时候我想起来当年我就觉得《おニャン子クラブ大全集》(下称:大全集)里的「バナナの涙」不太对,但是当时手头其他版本都是MP3的只有这个是无损,所以以为是别的都有问题。这和原版专辑《∞》里的一比就听出问题了:《大全集》里的版本明显尖锐许多。

我赶紧去看《大全集》的CUE,发现并没有FLAG PRE。这下我彻底恐慌了:连官方出的精选集都能搞这幺蛾子(有pre-emphasis却没标明),这到底要怎么避免哦?我进而把这《大全集》的DISC 4 with おニャン子クラブ集又重头到尾听了一遍(同时不断和手头有的其他版本对比),果然发现有多首,包括うしろゆびさされ組的全部四轨都有pre-em的问题。其他有些虽然听着偏尖锐,但是你别说,这个东西单独听真的很难说清楚到底有没有pre-em,尤其是要知道这个pre-emph主要是对某些音色的乐器影响比较大(比如上次提到过的,架子鼓里的钹),对人声尤其是比较粗的人声其实变化不大(嗯新田恵利这种很尖锐的声线就明显多了w),某些歌曲甚至对比着听都不明显。而且和其他版本对比本身也有个问题——你怎么知道其他版本就是正确的呢?尤其是我手里的其他版本很多连无损都不是。

当然,这张DISC 4本身就是从小猫单飞的各个单曲/专辑里采集来的,音源不一,所以有这种问题也算在我的意料之内,不过接下来的事情就更蛋疼了。《大全集》大部分碟是小猫俱乐部八十年代的原创录音专辑+额外曲目的形式。所以如果不出意外,至少前面和原专辑一样的部分的pre-emphasis状态应该统一:要么都有要么都没有。还是通过对比的方式,我发现至少前三张碟的大部分都OK——并没有pre-emph,还顺便发现了反而是我最早下的一张的小猫的碟(网易云扒的MP3),算是最经典的二专《PANIC THE WORLD》(下称:PANIC),其实有pre-em(汗,这碟我感觉听了有快上百遍了,当时也没觉得有啥问题……现在再去听真是尖到不行)。

用Foobar2000回放有损的pre-em音频的方案

这里插播一个实践上的问题。上次提到de-emphasis要用foobar的两个插件,lvqcl开发的foo_deemph和foo_dsp_deemph。前者是后处理插件,也就是说无设置,会无脑应用到后处理里(包含回放和转换,如果勾了后处理选项)。我之前是用的这个。结果这个的问题在于他仅作用于无损音频——关于这点我问了作者,并不是他不想改,而是foobar对后处理插件的限制(或者说foobar的工作流程如此)。所以,我上面提到那个,有pre-emphasis的MP3专辑《PANIC》,自然只能用DSP版本才行。但是这就又引出一个问题:回放增益(ReplayGain)。在进行了deemph之后,音频改动还是蛮大的,回放增益扫描的结果也不会一样。事实上,一般一个音轨deemph之后,回放增益得加个2dB。之前用foo_deemph的时候倒是OK,因为回放增益在计算时会自动考虑进去所有后处理;但是现在换了DSP版,这个在计算回放增益的时候是不工作的。

解决办法倒不是没有,就是非常啰嗦:

  1. 把MP3文件转换成WAV;
  2. 现在因为是无损了,所以foo_deemph工作了,可以扫描RG了。
  3. 把RG用MP3tag复制RG到之前的MP3(这是一个傻逼点,因为foobar2000刻意不支持文件间复制RG信息,只能手动一个个输入…一般的标签倒是支持)。
  4. 然后回放的时候……你得换成foo_dsp_deemph,因为只有这个支持有损(别忘了pre-emphasis的tag还得有,DSP里得勾上)。虽然顺序变成了先apply RG再apply deemph,从数学原理上来讲两者等效。

另外,因为回放的时候你不能同时装foo_deemph和foo_dsp_deemph(否则无损的有pre-emphasis tag的音频就会被deemph两次了),所以整个流程你得重启foobar N次,动用两个软件(foobar2000,Mp3Tag)。

不过这个流程可以稍微简化一下:在转换MP3到WAV的时候,直接用DSP版的把deemph硬编码进去——别忘了之后删掉pre-emphasis的tag——然后和上面就一样了。这个方案的区别在于完全用不到后处理版的foo_deemph,不需要重启foobar,但是总体而言还是很麻烦。

而且更麻烦的一点是,如果你改用foo_dsp_deemph(凡是你要给有损音频de-em,这是唯一的选择),那么就连原来没问题的无损的音频的RG扫描都不能直接进行了。所以,果然我的第一要务是赶紧把这些垃圾MP3洗版买二手CD洗掉。

哦顺便说句,foo_dsp_deemph还有另外一个同名的,由开发者mudlord从他的那个巨型插件foo_dsp_effect里分离出来的独立组件。之前说的有误,这个插件虽然名字叫DSP,但是其实包含上述两个插件的的功能,即后处理+DSP:在安装该插件之后,自动含对有pre_emphasis =1 tag的文件进行de-em;与此同时,你还可以在DSP开启强制de-em。而且其提供了俩DSP,外一个是黑胶的RIAA Curve

至于de-em算法方面,我对比了lvqcl版、mudlord版以及sox,虽然均非bitwise identical但是基本频谱一致,应该不会有任何听感上的差别。(7/5更新)

「およしになってねTEACHER」之谜

实践方面的问题就插播完毕,回到之前的话题,既然我们知道三专《PANIC》有pre-emphasis,那前两专呢?一专《KICK OFF》我手头的是无损,打开CUE一看发现里面大大的FLAGS PRE,这就好说了,直接给wav文件加个tag完事儿。二专《夢カタログ》(下称:夢)我之前虽然下了个MP3,但一直都没解压,因为反正《大全集》里都有了;这不为了对比我又翻出来了。果然这二专一听,也是有pre-emphasis的,但是前面说到的“蛋疼”的事情来了:我发现在de-emphasis之后,二专的大部分曲目听感和《大全集》版一致,唯有第一轨「およしになってねTEACHER」(即第二单曲),不但两者不同,和3专《PANIC》里收录的版本也不同!我又找了多个版本,最后从“尖锐程度”从大到小排列大概是这么个样子(其实有的差别很小,我用了耳朵听之外的方法检测,不过这是下一章的重点。另外,听的时候因为一定要保持平均响度高度一致(否则怎么对比),由于上面提到过的RG+pre-em的配合问题,这里请暂时配合on the fly版的RG DSP:foo_r128norm使用,并放在foo_dsp_deemph的后面):

  1. 《夢》(pre-emph)
  2. 《大全集》 = Single版
  3. 《夢》(de-emph)
  4. 《PANIC》(de-emph) =《SUPER BEST》
  5. 《大全集》(de-emph) = Single版 (de-emph)

这里,4这两个版本听感完全一致,外加精选集《SUPER BEST》是我从实体碟抓的无损(不过有个暂不相关的问题后面讲),所以姑且称之为“标准版本”。那么《夢》和重制《夢》的《大全集》的问题在于:第一,两者莫名地不一致,虽然差别不大;第二,《夢》即使加了de-em(根据其他音轨推算应该加),也比4这个标准版要尖锐一些(但是不至于刺耳);至于《大全集》版,不加de-em处于《夢》加和不加之间,加了就反而比4这个标准版还要低沉。

如果再进一步从听感上选最合理的然后简化,有三个版本(还是按照高频强度从高到低排列):

  • 《大全集》 = Single版
  • 《夢》(de-emph)
  • 《PANIC》(de-emph) =《SUPER BEST》

几乎可以肯定《大全集》制作的时候,是使用单曲音源替换掉了第一轨——因为手头的单曲版和他的特征一致,而且否则也无法解释为啥其他轨《大全集》和《夢》de-em后听感完全一致,唯有这个不同。但是要注意的是「およしになってねTEACHER」这张单曲是只有黑胶版的,并没有发过CD;我手头这个“单曲版”的MP3到底怎么从黑胶Rip出来,规不规范,无从得知;不过对于制作方波利佳音,他肯定有母带所以倒不是问题。

至于《夢》的版本,在正确地加了de-emph之后其实和《大全集》版/单曲版区别并不大,这里这里我大胆猜测,两者的区别可能仅仅是黑胶和CD制作上客观导致的(毕竟一个analog一个digital)。又或者是《夢》里的版本是Album version(当年album version基本都是没任何标记)。

至于后面为什么《PANIC》以及《SUPER BEST》这两张精选集里收的版本互相一致、却和上面的单曲版和专辑版都不同就很难理解了。而且这个“不同”还是相当明显的——从最最开始的前奏就很明显可以听出。一般而言,这类精选集收的应该都是单曲版,其不同的原因现在也很难考证了。

利用频谱分析

上述「TEACHER」这场风波,让我了解到纯靠听来比较音轨,实在是不靠谱,尤其是差别小的时候。而且很多时候,我手头只有一个版本,也很难判断是否有pre-em。介于pre-em技术的原理就是加个EQ,所以第一时间想到的就是用频谱来分析了。

一般而言,直接FFT后的Amplitude spectrum就OK,用频谱密度(Spectral Density)也行,不过基本趋势都是一样的。具体实现上前者没什么好说的,注意用双侧转换成单侧(参见Matlab的fft说明文档里的范例)就是。谱密度的话,可以直接用PeriodogramMatlab函数),或者用Welch’s methodMatlab函数)可能更美观些。

不过,在分析前,得先做一些前处理。为了方便对比,首先需要注意的是音量均衡的问题。虽然我可以在foobar里跑RG,但是为了简单起见我做了个纯粹根据数学RMS(均方根)来均衡强度的函数:


function [ y ] = normalizerms( x, targetdB )
%NORMALIZERMS Summary of this function goes here
% Detailed explanation goes here
%normalize
targetrms=10^(targetdB/20);
myrms=rms(x);
% valueDBFS = 20*log10(abs(myrms));
y=x/(myrms/targetrms);
end

view raw

normalizerms.m

hosted with ❤ by GitHub

这样,我就不用操心响度不一不便于对比的问题了。实际操作上,音轨通过audioread导入之后,要先downmix到单音道,然后跑这个来均衡强度:

 [wave,Fs]=audioread(file);
 x=(wave(:,1)+wave(:,2))/2; 
 x=normalizerms(x, -20);

这里我选了-20dB这个比较低的目标RMS,因为我不想导致clipping。

然后再把信号跑上面的提到的几种频谱法就行了,下面我主要以Periodogram为例。那么,就让我们先随便找一首歌,来对比pre-em和de-em的区别。用的曲目是上次提过的「偏差値BOY」,无损音源。

(左边:原始文件(pre-em),右边:de-em之后。点击查看幻灯片或者大图)

和想象的一样,两者的周期图的区别较为明显,后者高频方向向下倾斜的趋势更明显,也符合de-em的原理。基本上,如果看到曲线接近后者,可以认为是正常的歌曲;如果是前者这种很平的,那就是有pre-em。嗯,还是有点模糊…不过比纯靠听稍微强点。

接下来就看看上面提到过的「TEACHER」的部分版本。

左起:《SUPER》版,《夢》版(de-em后)和《大全集》版(de-em后)

其中,《夢》版(de-em)在16kHZ左右的狂跌是因为MP3格式所导致。不过除掉这部分不看,也可以看出和1的标准版相比,整体更平(即:高频更高)。而最后一个的《大全集》版(de-em后)则比1更斜(即:高频更低)一些。

这里有一点要注意,就是《大全集》版(de-em后)以及这里没贴出来的单曲版(两者基本一样)都在大约1.5kHZ的地方有一个凹槽,这是很不正常的(别的版本都没有)。同样的凹槽其实我在很多音轨上都见过,我强烈怀疑是早期母带制作时,在压制或者是analog转digital时什么过程的痕迹。也许这也能解释为什么《大全集》版(de-em后)比标准版要低,虽然两者听感几乎一致。

其他几种visualization的方法既然我都做了,就贴一下让大家感受一下。

Welch’s method估计PSD:参数我都瞎搞的,不过基本而言,x后面的第一个参数window越小分割次数越高,平滑度越高,也越慢。

左起:《SUPER》版,《夢》版(de-em后)和《大全集》版(de-em后)

另外,我一直想模拟一下类似foobar频谱的按band分开的柱状图:

QQ图片20170701184057

但是有太多的搞不清楚的问题:第一,band怎么分?Foobar明显不是用线性的,每个band的label分别是(以20个band为例):

[50,69,94,129,176,241,331,453,620,850,1200,1600,2200,3000,4100,5600,7700,11000,14000,20000]

看不出有什么规律,只知道肯定不是线性,手动回归了一下大概是类似y=10^(1.5633+0.1368x) (x=1:20)的样子。

第二,每个band里面到底应该怎么把里面的点“累积”起来?是直接相加(因为是离散的)?

总之,我瞎搞了一番,最后成图如下:

左起:《SUPER》版,《夢》版(de-em后)和《大全集》版(de-em后)。单位写错了应该是HZ,懒得改了。

完整代码(含所有的可视化方式,在上方切换):


filenames = {'samples/teacher/super.wav','samples/teacher/yume_deem.wav','samples/teacher/yume2005_deem.wav'};
%'samples/panic.wav','samples/super.wav', 'samples/yume.wav','samples/yume2005.wav','samples/single.mp3'
%filenames = {'old/good_rg.wav','old/bad_rg.wav'};
method = 'peri'; % peri, welch, fft, fftband
close all
for i = 1:length(filenames)
file = filenames{i};
[wave,Fs]=audioread(file);
x=(wave(:,1)+wave(:,2))/2; %Downmix
% %Filter
% N = 200; % FIR filter order
% Fp = 15000; % 20 kHz passband-edge frequency
% Rp = 0.00057565; % Corresponds to 0.01 dB peak-to-peak ripple
% Rst = 1e-4; % Corresponds to 80 dB stopband attenuation
% eqnum = firceqrip(N,Fp/(Fs/2),[Rp Rst],'passedge'); % eqnum = vec of coeffs
% lowpassFIR = dsp.FIRFilter('Numerator',eqnum);
% x=lowpassFIR(x);
x=normalizerms(x, -20);
switch method
case 'peri' % periodogram
figure
periodogram(x,rectwin(length(x)),length(x),Fs)
xlim([0 20])
ylim([-180 -20])
case 'welch' % Welch's power spectral density estimate
[pxx,f] = pwelch(x,2000,[],[],Fs); % Disclamer: I have zero idea about those parameters
figure
plot(f,10*log10(pxx)) % You can remove dB conversion
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')
xlim([0 20000])
ylim([-105 -40])
case 'fft' % FFT (amplitude spectrum)
L=length(x);
f = Fs*(0:(L/2))/L;
Y = fft(x);
P2 = abs(Y/L); % You can choose to not divide it by L, no difference
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
figure
plot(f,P1) % you can convert it to dB too, make sure to use 'voltage'
xlabel('f (Hz)')
ylabel('|P1(f)|')
ylim([0 0.004])
xlim([0 20000])
case 'fftband'
L=length(x);
f = Fs*(0:(L/2))/L;
Y = fft(x);
P2 = abs(Y); % I don't divide by L here, because I'm going to use dB later
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
bars = 20;
% % Linear spacing
% fvalues = linspace(0,20000,bars+1);
% fvalues = fvalues(2:end);
% % Log10 spacing
% fvalues = logspace(-1,log10(20000),bars);
% Copied from FB
fvalues=[50,69,94,129,176,241,331,453,620,850,1200,1600,2200,3000,4100,5600,7700,11000,14000,20000];
fband = zeros(length(fvalues),1);
% Again, I don'tknow shoul you just add them together.
for k = 1:length(f)
for j = 1:length(fvalues)
if f(k) < fvalues(j)
fband(j) = fband(j)+P1(k);
break
end
end
end
figure
histogram('BinEdges',0:length(fvalues),'BinCounts',round(db(fband,'voltage'))')
ylim([0 180])
labels = [0 fvalues(2:2:length(fvalues))];
xticklabels(num2cell(labels))
xlabel('f (Hz)')
ylabel('dB')
end
title(file)
end

CD rip:正确读取subcode的pre-em flags

之前说过,我最怕的是厂商把明明有pre-em的曲目压到CD里面却不处理也不标明——因为这样作为听众哪怕有实体碟那么听到的也是错误的。那么我上面提到的几个例子,尤其是我手头有无损的《大全集》真的一定就是这样吗?答案是否定的。没错,虽然我手里的大全集的CUE,并没有FLAGS PRE,但是这并不代表原碟就一定没有对pre-em进行标记。

这要先从pre-em的标记方式说起。在CDDA中,可以有两个地方标记各种flag:一个是在目录(Table of contents,TOC)中,一个是在“subcode”(又称subchannel data)中。其实CDDA实际的结构要更复杂一些,简单地说就是除了16位的音频数据的部分,其他有大量的类似元数据的subcode存在。其中,每一轨都可以有自己的subcode,而在整张光碟的头部、尾部又各有一个区域完全是subcode。其中,头部的subcode包括了一些诸如discid之类的元数据,另外也有TOC(所谓的TRACK 00):TOC其实就是对整张专辑各个轨道的简单描述,主要是每轨的开始时间(便于跳转),但是也可以包括诸如pre-em在内的tag。

然而与此同时,在每一轨的subcode中,同样可以包含这样的信息。这问题就来了:虽然理想情况下两者应该是一致的,但是大量实践证明,有许多CD,只在其中一个中包含了pre-em的flag(一般是subcode)。

这俩不一致本身其实不是什么大事儿,但是问题在于,Win平台下最流行的CDrip软件,大名名鼎鼎的的EAC,不支持subcode flag。呃,其实准确地说,也是有难言之隐:早在01年左右的0.9x版本的EAC,包含一个叫做“Detect TOC Manually”的功能,说白了就是用subcode里的信息手动重建TOC(而不依赖于TRACK 00的TOC),这个功能就能检测到subcode-only的pre-em tag。但是由于当时有些CD利用hack TOC的方式来防复制,所以EAC这种功能有违反欧洲法规的风险(等于你绕过了TOC的加密),作者就在后面移除了该功能。大概这也是为什么我在论坛有时候会看到有人强调要用旧版EAC的缘故?

无论如何,身为几乎在烧友圈(至少国内)被神化的EAC居然缺失这么明显一个功能,也是略显讽刺。所以,即使碰到有的碟,正确用EAC抓取、CUE没有pre-em的flag,听起来却尖锐,也就是上面说的《大全集》中的某些轨,也不一定就是厂商搞砸,而是subcode的flag没被抓出来。当然现实来说,《大全集》是21世纪的2005年发售的,感觉还在发行带pre-em的CD概率并不高……大概还是搞砸了罢,这个没有实体版实在是无从确认了。别忘了之后波利佳音又洗过一版,说不定正是为了擦屁股呢?(笑)

不过虽然那个手头没有实体无法验证,我之所以会深入研究这个正是因为我手里就有一张这样的碟:[1986-10-21] [D32P6003] おニャン子クラブ – スーパーベスト(即前文所说的《SUPER BEST》)。这碟我用EAC抓,是显示没有pre-em:

QQ截图20170701222211

抓出来的CUE自然也没有flag。但是实际上呢?用听的就知道,第一轨「お先に失礼」肯定有pre-em,后面的第二轨又明显没有。可见这碟应该是属于部分pre-em那种(考虑到是选集,也说得通)。

既然EAC不行,我们只能换软件了。hydrogenaudio提供了一个非常完善的ripper软件列表。不过排除一些收费软件和非Win平台的(比如很有名的Mac平台的XLD),外加上我从这贴了解到的其他一些,我大概筛选出这几个:

于是先来试试最简单的CUERipper。

QQ图片20170701234441

选项非常简单,要我说是EAC过分复杂了。虽然这里看不出来,但是抓出来的CUE确实有正确的FLAGS PRE没错。具体来说,是tr. 1/6/9/11有,也和试听听感完全一致。

再让我们试试其他俩软件。cdda2wav和cdrdao都是命令行工具;而且更不方便的是两者官方网站都不提供binary,只有source code。cdda2wav现在是软件包“cdrtools”(原名:cdrecord)的一部分,这里可以找到Win-32原生的编译版本(最新:v3.02a07),或者用第三方的GUI版本——cdrtfe,里面也有编译好的cdda2wav(不过是虚拟版,如果你要单独运行,得把cygwin目录下的cygwin1.dll复制到和cdda2wav.exe一起)。

但是这个cdda2wav……用起来有问题。还是上面这张碟,让我们跑个-J(仅输出信息)来看看:

C:\Users\Administrator\Desktop\schily-cdrtools-3.02a07\win32>cdda2wav -J
No target specified, trying to find one...
Using dev=7,0,0.
Type: ROM, Vendor 'HL-DT-ST' Model 'DVDRAM SP80NB60 ' Revision 'RA00' MMC+CDDA
261632 bytes buffer memory requested, transfer size 64512 bytes, 4 buffers, 27 s
ectors
#Cdda2wav version 3.02a07_mingw32_nt_1.0.17-0.48-3-2-_i686_i686, libparanoia sup
port
AUDIOtrack pre-emphasis copy-permitted tracktype channels
 1-15 no no audio 2
Table of Contents: total tracks:15, (total time 57:28.72)
 1.( 3:50.00), 2.( 4:16.50), 3.( 3:59.45), 4.( 3:28.52), 5.( 3:44.08),
 6.( 3:12.20), 7.( 3:52.20), 8.( 3:45.20), 9.( 4:08.45), 10.( 4:00.65),
 11.( 3:58.67), 12.( 3:50.70), 13.( 3:50.15), 14.( 3:08.60), 15.( 4:21.60),

Table of Contents: starting sectors
 1.( 0), 2.( 17250), 3.( 36500), 4.( 54470), 5.( 70122),
 6.( 86930), 7.( 101350), 8.( 118770), 9.( 135665), 10.( 154310),
 11.( 172375), 12.( 190292), 13.( 207612), 14.( 224877), 15.( 239037),
 lead-out( 258672)
CDINDEX discid: Bk20VmlSPt6WEen5bpehBUBc6no-
CDDB discid: 0xc20d780f
CD-Text: not detected
CD-Extra: not detected
No media catalog number present.
scanning for ISRCs: 15 ...
index scan: 1...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
index scan: 5...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
difference: TOC:without, subchannel:with preemphasis
correcting TOC...
index scan: 6...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
index scan: 8...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
difference: TOC:without, subchannel:with preemphasis
correcting TOC...
index scan: 9...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
index scan: 10...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
difference: TOC:without, subchannel:with preemphasis
correcting TOC...
index scan: 11...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
index scan: 15...

前面的不重要,不过也可以看到TOC里没扫到pre-em。但是从每个track的subcode scan开始:

index scan: 1...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
index scan: 5...difference: TOC:without, subchannel:with preemphasis
correcting TOC...
difference: TOC:with, subchannel:without preemphasis
correcting TOC...
difference: TOC:without, subchannel:with preemphasis
correcting TOC...

这就很诡异了:扫第1轨的时候,显示发现了TOC和subchannel不一致(subchannel=有,pre-em,TOC=无),于是纠正TOC,到这步没问题;但是紧接着,居然又来了一遍,不过这次是说TOC有(废话,你自己刚改的),subchannel没(??),于是又改了一次,把TOC给改回成无了!

同理第5轨,不过这次不同的是这么翻来覆去改了三次,即TOC为无->有->无->有,最后结论是有pre-em。

那么上面的全部总结下来,最后留在.inf文件里的居然是:tr. 5/8/10有pre-em。发现问题没有?正好和之前用CUERipper测得的向前偏移了一轨(1前面是0所以没有了)。为了保险起见,我又把这几轨全部找出来,和其他碟里收录的同一轨进行反复对比。虽然有的确实比别的版本稍微锐那么一点点(例如tr. 10那首「シンデレラたちへの伝言」我手头有俩无损版本的,有一个还是我自抓),但是如果真的去跑de-em,那又钝太多(靠频谱),所以基本可以90%肯定是没有pre-em的。

好家伙,Linux下最有名DAE(digital audio extraction)软件的cdda2wav居然有毛病,这事儿我得去hydrogenaudio反馈一下了。那让我们看看cdrdao好了。这里先说个笑点:EAC的目录里赫然有个cdrdao.exe(虽然是很老的1.1.9版),可见他也是调用了cdrdao来进行TOC提取的……然而阉割了cdrdao带的从track subcode里提取信息的功能。这软件的Windows binary也是相当的难找,最后在这个已经404的网页Archive里找到了一个编译好的1.2.3版(2009年最后版)和相应的dll文件(其实就是上面提过的cygwin1.dll)。

废话不多说,上log。

E:\sync\Software\cd\cdrdao-1.2.3-bin\cdrdao-1.2.3-win32>cdrdao read-toc --device
 8,0,0 test.toc
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>

8,0,0: HL-DT-ST DVDRAM SP80NB60 Rev: RA00
Cannot read driver table from file "/usr/local/share/cdrdao/drivers" - using bui
lt-in table.
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

ERROR: Unable to determine drive letter for device 8,0,0! No OS level locking.
Reading toc data...

Track Mode Flags Start Length
------------------------------------------------------------
 1 AUDIO 0 00:00:00( 0) 03:50:00( 17250)
 2 AUDIO 0 03:50:00( 17250) 04:16:50( 19250)
 3 AUDIO 0 08:06:50( 36500) 03:59:45( 17970)
 4 AUDIO 0 12:06:20( 54470) 03:28:52( 15652)
 5 AUDIO 0 15:34:72( 70122) 03:44:08( 16808)
 6 AUDIO 0 19:19:05( 86930) 03:12:20( 14420)
 7 AUDIO 0 22:31:25(101350) 03:52:20( 17420)
 8 AUDIO 0 26:23:45(118770) 03:45:20( 16895)
 9 AUDIO 0 30:08:65(135665) 04:08:45( 18645)
10 AUDIO 0 34:17:35(154310) 04:00:65( 18065)
11 AUDIO 0 38:18:25(172375) 03:58:67( 17917)
12 AUDIO 0 42:17:17(190292) 03:50:70( 17320)
13 AUDIO 0 46:08:12(207612) 03:50:15( 17265)
14 AUDIO 0 49:58:27(224877) 03:08:60( 14160)
15 AUDIO 0 53:07:12(239037) 04:21:60( 19635)
Leadout AUDIO 0 57:28:72(258672)

PQ sub-channel reading (audio track) is supported, data format is BCD.
Raw P-W sub-channel reading (audio track) is supported.
Cooked R-W sub-channel reading (audio track) is supported.
Analyzing track 01 (AUDIO): start 00:00:00, length 03:50:00...
Found 38 Q sub-channels with CRC errors.
WARNING: Pre-emphasis flag of track differs from TOC - toc file contains TOC set
ting.
Analyzing track 02 (AUDIO): start 03:50:00, length 04:16:50...
Found pre-gap: 00:02:10
Found 28 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 03 (AUDIO): start 08:06:50, length 03:59:45...
Found pre-gap: 00:02:08
Found 21 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 04 (AUDIO): start 12:06:20, length 03:28:52...
Found pre-gap: 00:02:00
Found 11 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 05 (AUDIO): start 15:34:72, length 03:44:08...
Found pre-gap: 00:01:72
Found 9 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 06 (AUDIO): start 19:19:05, length 03:12:20...
Found pre-gap: 00:02:03
Found 12 Q sub-channels with CRC errors.
WARNING: Pre-emphasis flag of track differs from TOC - toc file contains TOC set
ting.
Analyzing track 07 (AUDIO): start 22:31:25, length 03:52:20...
Found pre-gap: 00:02:03
Found 20 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 08 (AUDIO): start 26:23:45, length 03:45:20...
Found pre-gap: 00:02:03
Found 17 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 09 (AUDIO): start 30:08:65, length 04:08:45...
Found pre-gap: 00:02:03
Found 13 Q sub-channels with CRC errors.
WARNING: Pre-emphasis flag of track differs from TOC - toc file contains TOC set
ting.
Analyzing track 10 (AUDIO): start 34:17:35, length 04:00:65...
Found pre-gap: 00:02:05
Found 10 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 11 (AUDIO): start 38:18:25, length 03:58:67...
Found pre-gap: 00:02:03
Found 15 Q sub-channels with CRC errors.
WARNING: Pre-emphasis flag of track differs from TOC - toc file contains TOC set
ting.
Analyzing track 12 (AUDIO): start 42:17:17, length 03:50:70...
Found pre-gap: 00:02:02
Found 11 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 13 (AUDIO): start 46:08:12, length 03:50:15...
Found pre-gap: 00:02:00
Found 9 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 14 (AUDIO): start 49:58:27, length 03:08:60...
Found pre-gap: 00:02:00
Found 7 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.
Analyzing track 15 (AUDIO): start 53:07:12, length 04:21:60...
Found pre-gap: 00:02:00
Found 6 Q sub-channels with CRC errors.
Control nibbles of track match CD-TOC settings.

Reading of toc data finished successfully.

可以看到,找到且只在1/6/9/11轨中找到了pre-em信息,和CUERipper一致。不过有一点,他只是提醒你“WARNING: Pre-emphasis flag of track differs from TOC – toc file contains TOC setting.”,实际在提取出来的TOC文件里并自动没有修改成正确的、来自subcode的pre-em tag,这个还得自己手动来。

部分Pre-em的CD rip的存储和回放方式

碟算是抓完了,pre-em信息也有了,这就引出下一个问题:如何存储/回放这样的碟。WAV+CUE的方式是行不通的——因为上篇说过了,外置CUE里的FLAG PRE foobar2000不认,你也无法给CUE加pre_emphaiss的tag,加到音频文件里又会适用给整张碟。

保持整轨的前提下,唯一的解决方案就是FLAC+内嵌CUE了(其他无损格式应该也行)。要注意的是,FLAC+内嵌CUE,并不仅仅等价于“FLAC+CUE,只不过CUE内嵌”。在这里,内嵌的CUE主要起一个提供时间戳分轨的功能,但是实际上你对每一轨的metatag的自由度非常高,和单独的FLAC没有两样。也就是说,你完全可以做到给单个FLAC文件里每一轨加不同的pre_emphaiss的tag——即使CUE不支持。你甚至可以做到:每一轨的album不一样!不过如果你真的这么做,然后用foobar2000带的内嵌CUE查看器你会发现,CUE里的album还是老的值,可见这些元数据里并不是真的存在CUE的(不过,如果你进行一些CUE能支持的metatag操作,比如同时修改所有轨的albumalbum artist,或者单独轨的artisttitle,内嵌的CUE还是会跟着同步更新的)。

这个方案算是不错,但是和直接用分轨FLAC+pre-em tag一样都有一个问题前面提过:RG。因为我有一些lossy的需要加pre-em tag的文件,所以我被迫用了DSP版的de-em;但是DSP和RG不兼容(计算RG时不考虑DSP)。所以我现在俩抉择:1) 转成分轨FLAC,且同时直接将de-em硬计算进去;2) 换回后处理版的de-em,但是把那些有损音频强行transcode成无损一份来存储。实话说,两种方案都很蠢。现在我暂时还没想好到底要用哪种方案,姑且先去foobar论坛发了一贴问。

更新:今天又发现一个foo_deemph的bug:丫不支持FLAC+内嵌CUE的pre-emphasis tag,加了也不会de-em,orz 所以指望靠FLAC+InCue来保持最大程度的原Image是不现实了。我现在采用的方案是:使用foo_deemph插件,但是把所有 1) 只有部分轨有pre-em的CD 2) 有损带pre-em的音频 全部转一份分轨FLAC然后加pre_emphasis = 1 的tag。老的文件打包备份(防止被foobar20000的数据库读取;我在FB里filter掉了*.rar和*.zip)。这样的缺点是很占空间(有损转无损,还保留两份…)

OK,这个话题到此算是结束了。接下来我得强迫症般地把之前抓的碟都拉出来看一看,以保证没有subcode的pre-em flags……