搜索
bottom↓
回复: 122

有没有可能DIY一个类似MP3的可以播放APE格式的高保_真HIFI播放器,用来取代CD?希望抛砖

[复制链接]

出0入0汤圆

发表于 2008-1-12 13:15:04 | 显示全部楼层 |阅读模式
玩音响的人都对MP3嗤之以鼻,音质实在太差,所以还都是玩CD这些音源。不过现在通过APE格式无损地将原版CD保存起来,可以最大程度的保持原版CD的音质。
    希望是,使用SD卡等常见的存储卡,用单片机读取存储的APE格式文件,经过运算解码后输出I2S格式以及SPDIF等专门高保_真的数码音乐接口,可以外接专门的高保_真解码器。由于从读取APE到解码数码输出都是不涉及模拟量的,因此可以不会对音乐造成影响,真正实现高保_真,可以在很大程度取代CD,实现真正CD的音质,同时由于可以使用电池供电,最大程度上减少了播放器的干扰;没有类似CD这样的运动装置,不会有CD读取时候产生JETT等情况。
    论坛上喜欢音响同时技术水平很高的朋友应该不少吧,像阿莫、彩虹等等,不知道大家有没有这样的想法?希望能抛砖引玉,能多些讨论

1、现在的问题主要是不知道该对APE文件进行解码,需要了解这方面的内容;
2、APE解码对硬件的要求如何?现在不知道有没有现成的APE解码芯片,应该是要基于MPU进行运算,软解码的,不知道得怎样程度的运算能力,AVR肯定是不行的,用ARM7/ CORTEX-M3这类不知道能否担当,SRAM要求多大? 或者实在不行还是用带MMU内存管理器的ARM9芯片,如ATMEL的9261等
3、另外一个方案是打造一个能跑操作系统如WINCE5的硬件环境,在操作系统的基础上实现软件APE解码,不过MPU芯片必须带I2S接口,能够输出解码后的数码音乐格式,供高保_真解码器DAC能读取。

出0入0汤圆

发表于 2008-1-12 18:39:37 | 显示全部楼层
极度关注中……

出0入148汤圆

发表于 2008-1-12 19:02:36 | 显示全部楼层
播wav可能更好,不用解码

出0入0汤圆

发表于 2008-1-12 21:06:54 | 显示全部楼层
APE和FLAC文件都太大的啦。

出0入0汤圆

发表于 2008-1-12 23:32:27 | 显示全部楼层
看样子是要用硬盘了
头像被屏蔽

出0入0汤圆

发表于 2008-1-12 23:46:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-13 00:25:33 | 显示全部楼层
用ARM9,在linux下可以?
找个时间试试看
头像被屏蔽

出0入0汤圆

发表于 2008-1-13 00:34:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-13 00:58:37 | 显示全部楼层
我也赞成搞这个活动

APE和FLAC会越来越流行的

出0入0汤圆

发表于 2008-1-13 22:43:08 | 显示全部楼层
直接买个硬盘播放器,加一个160G硬盘,把CD抓成WAV保存,用数字输出方式送到外置DAC解码,只要设备用料好,完全是可以达到甚至超过常规CD机音质的。

出0入0汤圆

 楼主| 发表于 2008-1-13 22:51:48 | 显示全部楼层
我倒是觉得,从数字信号角度来说APE播放器应该不会比CD差的,数字信号的转换是不会产生失真的。我的设想不是直接用APE播放器输出音频的,而是把只用它来解码成给专门外置DAC用的数字信号格式输出,本身是纯粹从一种数字格式到另一种数字格式的解码,中间过程是不会对音质产生任何影响的。
    另外我觉得玩音响痴迷到一定程度开始玩什么脚钉垫青砖汉瓦啊电源线外面包半旧汗衫啊什么的,到神话迷信伪科学的程度,实在是超出了正常的理性范畴了,似乎这个全世界好像就香港一带最多。

出0入0汤圆

 楼主| 发表于 2008-1-13 22:59:50 | 显示全部楼层
硬盘转动也会有噪音哦,呵呵,我觉得还是用SD卡比较好,毕竟现在1G的卡也才百来块钱。现成的商品化的播放器实在不敢苟同,现在厂家的成本意识太强了,外围电路偷工减料。自己设计的话可以充分发挥自己的想象力。

出0入0汤圆

发表于 2008-1-13 23:04:38 | 显示全部楼层
ape解码需要很多资源的,低速度的arm7 cortex-m3不行的
头像被屏蔽

出0入0汤圆

发表于 2008-1-13 23:17:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2008-1-13 23:24:10 | 显示全部楼层
这样啊,看来还是得用ARM9这些才行了,另外想问下,假如WAV文件成I2S接口或者SPDIF需要什么样的资源呢?通常的ARM7能应付不?AT91SAM7S这类芯片都是带I2S的音频数字接口的,如果能处理软件WAV的话倒是很方便。哪里能找到用单片机播放WAV文件的资料,想看看。
    现在听音乐还都是用PC来播放APE听的,声卡数字输出到外置的解码器,自己觉得其实音质也挺满意了。不过总开着PC总不是办法,还是弄个解码WAV 或者APE的设备,用着方便也兼顾了音质,同时也符合节能环保的要求

出0入0汤圆

发表于 2008-1-13 23:40:09 | 显示全部楼层
魅族有款能播flac的,apple、creative都有能播flac的,播ape的几乎没有,因为要交授权费

出0入0汤圆

发表于 2008-1-13 23:48:44 | 显示全部楼层
ape实时解码对运算能力的要求也比flac要高,如果要做无损音频解码,在现有硬件水平上flac应该更合适一些,魅族那款MP3据说是升级了解码固件以后支持flac的,如果不是用专门的dsp,估计就是用的arm之类了
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 00:50:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 00:58:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入148汤圆

发表于 2008-1-14 08:00:35 | 显示全部楼层
贴一篇关于wav格式的文章,播放应该是不难的,但是如果想进行声音的处理不知道可以用什么方法?


wav文件格式分析详解

                                               作者:曹京
                                               日期:2006年7月17日
                                          

一、综述
    WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个
字节便是“RIFF”。
    WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE
Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图:

------------------------------------------------
|             RIFF WAVE Chunk                  |
|             ID  = 'RIFF'                     |
|             RiffType = 'WAVE'                |
------------------------------------------------
|             Format Chunk                     |
|             '                      |
------------------------------------------------
|             Fact Chunk(optional)             |
|                                   |
------------------------------------------------
|             Data Chunk                       |
|                                   |
------------------------------------------------
            图1   Wav格式包含Chunk示例

    其中除了Fact Chunk外,其他三个Chunk是必须的。每个Chunk有各自的ID,位
于Chunk最开始位置,作为标示,而且均为4个字节。并且紧跟在ID后面的是Chunk大
小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节
表示数值低位,高字节表示数值高位。下面具体介绍各个Chunk内容。
PS:
    所有数值表示均为低字节表示低位,高字节表示高位。

二、具体介绍
RIFF WAVE Chunk
    ==================================
    |       |所占字节数|  具体内容   |
    ==================================
    | ID    |  4 Bytes |   'RIFF'    |
    ----------------------------------
    | Size  |  4 Bytes |             |
    ----------------------------------
    | Type  |  4 Bytes |   'WAVE'    |
    ----------------------------------
            图2  RIFF WAVE Chunk

    以'FIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID
和Size所占用的字节数,即FileLen - 8 = Size。然后是Type字段,为'WAVE',表
示是wav文件。
    结构定义如下:
struct RIFF_HEADER
{
  char szRiffID[4];  // 'R','I','F','F'
  DWORD dwRiffSize;
  char szRiffFormat[4]; // 'W','A','V','E'
};

Format Chunk
    ====================================================================
    |               |   字节数  |              具体内容                |
    ====================================================================
    | ID            |  4 Bytes  |   'fmt '                             |
    --------------------------------------------------------------------
    | Size          |  4 Bytes  | 数值为16或18,18则最后又附加信息     |
    --------------------------------------------------------------------  ----
    | FormatTag     |  2 Bytes  | 编码方式,一般为0x0001               |     |
    --------------------------------------------------------------------     |
    | Channels      |  2 Bytes  | 声道数目,1--单声道;2--双声道       |     |
    --------------------------------------------------------------------     |
    | SamplesPerSec |  4 Bytes  | 采样频率                             |     |
    --------------------------------------------------------------------     |
    | AvgBytesPerSec|  4 Bytes  | 每秒所需字节数                       |     |===> WAVE_FORMAT
    --------------------------------------------------------------------     |
    | BlockAlign    |  2 Bytes  | 数据块对齐单位(每个采样需要的字节数) |     |
    --------------------------------------------------------------------     |
    | BitsPerSample |  2 Bytes  | 每个采样需要的bit数                  |     |
    --------------------------------------------------------------------     |
    |               |  2 Bytes  | 附加信息(可选,通过Size来判断有无) |     |
    --------------------------------------------------------------------  ----
                            图3  Format Chunk

    以'fmt '作为标示。一般情况下Size为16,此时最后附加信息没有;如果为18
则最后多了2个字节的附加信息。主要由一些软件制成的wav格式中含有该2个字节的
附加信息。
    结构定义如下:
struct WAVE_FORMAT
{
  WORD wFormatTag;
  WORD wChannels;
  DWORD dwSamplesPerSec;
  DWORD dwAvgBytesPerSec;
  WORD wBlockAlign;
  WORD wBitsPerSample;
};
struct FMT_BLOCK
{
  char  szFmtID[4]; // 'f','m','t',' '
  DWORD  dwFmtSize;
  WAVE_FORMAT wavFormat;
};


Fact Chunk
    ==================================
    |       |所占字节数|  具体内容   |
    ==================================
    | ID    |  4 Bytes |   'fact'    |
    ----------------------------------
    | Size  |  4 Bytes |   数值为4   |
    ----------------------------------
    | data  |  4 Bytes |             |
    ----------------------------------
            图4  Fact Chunk

    Fact Chunk是可选字段,一般当wav文件由某些软件转化而成,则包含该Chunk。
    结构定义如下:
struct FACT_BLOCK
{
  char  szFactID[4]; // 'f','a','c','t'
  DWORD  dwFactSize;
};

Data Chunk
    ==================================
    |       |所占字节数|  具体内容   |
    ==================================
    | ID    |  4 Bytes |   'data'    |
    ----------------------------------
    | Size  |  4 Bytes |             |
    ----------------------------------
    | data  |          |             |
    ----------------------------------
             图5 Data Chunk

    Data Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。然后是
数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数,
wav数据的bit位置可以分成以下几种形式:
    ---------------------------------------------------------------------
    |   单声道  |    取样1    |    取样2    |    取样3    |    取样4    |
    |           |--------------------------------------------------------
    |  8bit量化 |    声道0    |    声道0    |    声道0    |    声道0    |
    ---------------------------------------------------------------------
    |   双声道  |          取样1            |           取样2           |
    |           |--------------------------------------------------------
    |  8bit量化 |  声道0(左)  |  声道1(右)  |  声道0(左)  |  声道1(右)  |
    ---------------------------------------------------------------------
    |           |          取样1            |           取样2           |
    |   单声道  |--------------------------------------------------------
    | 16bit量化 |    声道0    |  声道0      |    声道0    |  声道0      |
    |           | (低位字节)  | (高位字节)  | (低位字节)  | (高位字节)  |
    ---------------------------------------------------------------------
    |           |                         取样1                         |
    |   双声道  |--------------------------------------------------------
    | 16bit量化 |  声道0(左)  |  声道0(左)  |  声道1(右)  |  声道1(右)  |
    |           | (低位字节)  | (高位字节)  | (低位字节)  | (高位字节)  |
    ---------------------------------------------------------------------
                         图6 wav数据bit位置安排方式

    Data Chunk头结构定义如下:
    struct DATA_BLOCK
{
  char szDataID[4]; // 'd','a','t','a'
  DWORD dwDataSize;
};
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 08:25:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入148汤圆

发表于 2008-1-14 08:45:58 | 显示全部楼层
To:armok 阿莫
我说的声音处理是指如均衡器的功能

wav不用复杂的解码,直接把数据送到DA就可以,如果有带iis接口的单片机,直接输出到CS4334等就可以
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 09:02:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-14 09:38:58 | 显示全部楼层
我庆幸自己没有生个金耳朵,否则也要破费了,MP3也能让我陶醉其中。
精神上支持楼主的DIY想法,这种乐趣是花多少钱也买不来的,我认为发烧友的概念不是单单买些高价成品的堆砌。
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 09:42:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-14 10:09:20 | 显示全部楼层
我的功放还自带解码器,光纤同轴通杀,以前还没买CD的时候,就是用一台LG顶级的DVD来做转盘。我电脑里创新声卡也有SPDIF数字输出,包括光驱的SPDIF输出都一一试过,还真是一个设备一个音质,普通光驱和刻录机的数字输出音质都有区别的,还发现光头老化会导致音质损失严重……都是前几年玩的东西了,收获写出来可以得一大篇了,没时间写而已,呵呵。

另外,大家别以为数字信号传递就不存在音质损失的现象,时钟抖动(Jitter)是音质头号杀手,同时电源也是很关键的,如果听不出大音响和电脑音箱区别的,当我白说,哈哈哈……
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 10:22:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-14 10:30:07 | 显示全部楼层
因为光头老化会导致音质劣化,所以,哪怕顶级CD,音质也是用一次少一次的,走纯数字前端的方式才是今后的方向,况且CD碟片保存年限有限,别相信商家的100年保证,阿莫牵头搞一下改革啊,呵呵。

出0入0汤圆

发表于 2008-1-14 11:37:43 | 显示全部楼层
移动播放是不太要求音质的,因为大多数情况下环境噪声比较大,再好的音质也白搭。
如果是放在家中,个人觉得一个比较好的方案是DIY一台音乐PC,通用性好,各式文件通吃,使用低功耗板(例如VIA的无风扇板)和XPE,开机很快,直接关机;如果不是高烧,一个比较好的声卡也就能对付了,如果是高烧,可以采用数字输出然后使用高级的解码设备,当然,如果你不单是听音乐而是更喜欢DIY就不说了。
从本质上说,只要是数字声源就是“有损”的,不管是CD、LD还是WAV,只是“损”的程度不同而已,理论上,只要采样率足够高人耳就难分辨是不是“损”,这就够了;所谓“无损压缩”只是在把一种数字源压缩成另外一种数字源的损失程度,对于大多数应用,mp3格式已经是足够的了,APE基本没有损失,当然更好。
早期的CD播放机大多是1X的,缓存很小,要播放128K码率的CD就必须全速,只要有点小问题就会“丢轨”或“漏位”而影响音质,所以很多烧友要把CD严格摆放换来“高质”,而现在的CD_ROM大多有很高的倍速,和PC联合使用时有“很大”的缓存,几乎不存在丢数据的问题,所以你爱怎么放都行。
你可以认为PC是一种设备,也可以认为她是一种生活,这就是一种伟大发明给你带来的。
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 12:45:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2008-1-14 15:27:37 | 显示全部楼层
汗一个先~~一直在说做个APE播放器用来输出SPDIF数字信号,给专门的外置DAC解码成模拟信号,可是阿莫同志一直在说模拟信号不好处理,不HIFI,还好到了24楼才发现阿莫终于理解俺的意思了,哈哈~~~
    谢谢19楼的兄弟贴的资料,学习了:)
    数字传输确实存在Jitter的问题,不过JITTER的问题主要还是在CD读取的过程中吧,还有就是与外置DAC的接收芯片(例如常见的CS8414芯片等)。对于APE播放器来讲,音乐本身是已经做成文件的了,不存在CD读取的问题,只要保证APE文件的制作过程就能确保APE的高保_真性。传输中的JITTER也是无法避免的,不过由它造成对音质的影响,绝大部分的人耳朵都是听不出来的吧,专业的天价DAC解码器这方面稍微好些而已。这两个环节都不在APE播放器上面,因此播放器对音质可能造成的影响是微乎其微的。是否高保_真还是要看1.APE文件制作质量 2.外置DAC解码器的性能(对于传输来讲就是它的SPDIF数字接收电路)。

出0入4汤圆

发表于 2008-1-14 15:40:40 | 显示全部楼层
alien2006,不如带大家组织一个APE播放器的活动如何?

出0入0汤圆

发表于 2008-1-14 15:43:30 | 显示全部楼层
哈哈,2年前我就有这个想法了,只是当时没人响应:

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=594184&bbs_page_no=1&search_mode=1&search_text=ape&bbs_id=9999

出0入0汤圆

 楼主| 发表于 2008-1-14 21:56:26 | 显示全部楼层
哈哈,2年前我倒是在发烧玩音响,可是对单片机一窍不通。
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 22:37:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-14 23:06:23 | 显示全部楼层
老大,普通PC板载声卡才几个钱?你要高音质什么的是不可能的,买专业级的声卡试试看,不是ipod等消费类电子能比的。
29楼说车上的音响,这不叫“移动”(或手持),而叫“车载”,是不太一样的概念,当然ipod属于“移动”,但属于“烧”级的移动。
要得到好的音质,设备和数据是缺一不可的,“主流”的东西要的是“性价比”,“烧”级一般就不太考虑这个,而是个人的爱好取向。

出0入0汤圆

发表于 2008-1-14 23:12:39 | 显示全部楼层
引用【27楼】 gxlujd 彩虹
/*******
因为光头老化会导致音质劣化,所以,哪怕顶级CD,音质也是用一次少一次的,走纯数字前端的方式才是

今后的方向,况且CD碟片保存年限有限,别相信商家的100年保证,阿莫牵头搞一下改革啊,呵呵
*******/

    彩虹所言极是,支持做一个全数字化的前端音源!
    对于我来讲,主要目的可能是用来收藏CD,现在硬盘容量已经做到了1TB,基本上可以把自己的CD全部放进去,就不用怕损伤碟片和担心CD光头寿命。CD碟的保存年限还真是有限的,多年前张学友的CD现在已经都穿洞(里层的铝膜坏)了,无法播放,好在这样的碟我不多,国产的碟两三年就不行啦。能保存下来的基本上是进口的CD,我有一张SONY出的维瓦尔第《四季》盘面金黄色的,音质好到我自己都不怎么舍得拿来听,怕怕把碟片弄花,于是买了另一张银色盘来听。一直收藏着的至爱CD,那天也穿洞就太可惜了。  
    对于楼主说的这个播放器,我的期望或者说要求是:1)播放格式为WAV、APE或者FLAC其中之一,最好是WAV。2)一定要有SPDIF/光纤数字音频输出,机内DAC可有可无。3)支持硬盘存储。当然现在的电脑都可以满足这些要求,但是电脑始终不是音响设备。
    这样可以有两个版本:
    台式机:硬盘/WAV格式/SPDIF/无机内DAC/最好有光驱可以直接把CD转进硬盘而不经过电脑。不知道市场上有没有这样的机器,我猜有也会很贵。
    便携式:闪存/APE格式/带DAC/可选SPDIF/电池供电
    估计楼主本意是后者,而我对前者更有兴趣,我想彩虹也有!彩虹可以评估一下方案的可行性,电脑有SPDIF,外接DAC播放自己抓轨的WAV,对比CD机播放有多大的差距?!我电脑有SPDIF但没有好的DAC所以没有办法试验。我觉得整个系统中播放WAV/APE不是技术的瓶颈,而是在于CD抓轨,虽然现在我们拥有EAC这样的软件,以及各式各样的高速刻录机,但谁能保证能100%地抓到CD上的信息呢!这个环节已经有所损失,后面用什么办法都不能补救的。Hi-Fi级的CD中有各式各样顶尖的转盘:比如飞利蒲的摆臂转盘CDM-1,4,9;SONY的光头固定转盘;先锋的倒置转盘;TEAC的VRDS系统转盘;天龙的三重避振转盘等等。无非就是为了拾取更准确的信息。而我们如果做好这一点呢?
    菜鸟胡说几句,大侠门见笑了,如有错误,请多多指教,谢谢
头像被屏蔽

出0入0汤圆

发表于 2008-1-14 23:52:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-14 23:59:11 | 显示全部楼层
37楼的理解好像有点问题。
一般情况下CD机从CD上读取数据是“无损”的,要不就是正确的,要不就是错误的,读10000次是没有任何两次不一样的,读入错误设备会发现,当使用电脑CDROM时就是无法读到数据,一般用于音响的设备就会断续,如果不是这样就没必要用数字音频了。
不管是CD机或CD/DVDROM,都可以理解读CD部分为读存储器,就是数字数据源,这里不存在差别问题,质量差别在DAC和放大部分,至于为什么CD播放机光头老化后音质会变差,主要是因为我上面所描述的原因:1x的CD设备在读取128K码率的CD时已经没有再尝试一次的机会了,读到的数据,不管是对是错都只能直接送去DAC,老化的光头会造成部分位读不到的现象,自然就会产生“不良”音;如果使用4x甚至更高倍速的CD,当出现读取错误时可以多尝试几次,连续出现错误如何处理就是算法问题。
从收藏角度看,硬盘不管从何角度都不如CD/DVD;可以理解:刻到CD/DVD上的文件为“档案”,装在硬盘里的文件为“现行文件”,而内存中的文件就是“工作中文件”。CD可能没有它号称的50年那么长,但如果保存得好十几年是没问题的,这总比硬盘寿命长点吧,超过这个时间就应该拿出来“翻晒”了。
头像被屏蔽

出0入0汤圆

发表于 2008-1-15 00:03:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-15 00:39:46 | 显示全部楼层
CD机从CD上读取数据是“无损”的,为何翻刻的CD都没法得到原来的音质呢。以前有很多文章是介绍CD原理的,好像说到CD是目前无法完美复制的数字化媒介,是当时技术水平造成的,具体没细看,感兴趣的可以找来看看,但是常规技术翻刻的CD是无法达到原版CD音质是经过众多发烧友一致认证的,主要是细节丢失了,声音木呐。
头像被屏蔽

出0入0汤圆

发表于 2008-1-15 00:47:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-15 00:47:20 | 显示全部楼层
好东西,可是咱现阶段没那个资本玩发烧阿~~

出0入0汤圆

发表于 2008-1-15 01:10:10 | 显示全部楼层
我对CD格式没有研究,手上也没有高质量原版CD,所以没法作相关测试,要证实“无法完全翻刻”应该不难,大概可以这样做:
1、找一些CD
2、用CDROM多次(要足够多)读出音轨/文件
3、比较每次读出来的文件:
  如果有不一样的,说明对CD有部分错误是可被设备接受的,无法进行完全翻刻,
  如果所有相同,翻刻就应该没有问题。
4、刻录到另一张CD再进行测试……。
当然,是否有版权特殊区什么的就不得而知了,这有可能是无法完全翻刻的原因。
头像被屏蔽

出0入0汤圆

发表于 2008-1-15 08:14:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-15 11:40:48 | 显示全部楼层
原版CD复制成文件就已经损失了很少的一部分的音质,用普通刻录机再刻录成CD会再损失20%以上的音质,所以玩数字前端还是可行的,要是直接用普通刻录机翻刻的话,听起来就很难受了。我玩刻录CD好几年了,盲听也试过了,真的是会丢失很多细节,声音很闷。如果拿几万块的专用音乐刻碟机来翻刻,可能会接近原版的音质。

出0入42汤圆

发表于 2008-1-15 13:16:17 | 显示全部楼层
现在正在研究PCM2906,准备出手买一个USB->SPDIF的转换板来玩玩.http://shop.hifidiy.net/ 上有售,也有很多DAC,不知道彩虹能看上哪款呢?

出0入0汤圆

发表于 2008-1-15 14:16:17 | 显示全部楼层
【46楼】 gxlujd 彩虹,
听你这么说让我非常、十分、很吃惊!要是你这说法成立,那么拿翻录的CD再去刻录,重复几次后根本就不是音乐了,就是模拟记录的磁带也不至于如此嘛。不管是原理上还是实际上,数字音频都不应该存在翻录后有损的情况,要是这样就不是数字音频了。至于说到使用高档刻录机能保障高音质就更没道理了,难道使用几十块钱的U盘保存的文件就没有上万块的SCSI硬盘保存的文件保_真性好?一样的文件,不管保存到什么介质,只要介质是安全的文件就没有区别,这就是数字媒体的特点。
我觉得:翻刻CD“丢失很多细节,声音很闷”有河阳猪肉之嫌。

出0入0汤圆

 楼主| 发表于 2008-1-15 15:22:49 | 显示全部楼层
彩虹说的也对的,关于这个问题在其他专业论坛上看到过激烈的讨论,这个是CD的读取格式(CD格式和CDROM格式不完全相同)的问题!CD读取的时候允许有一定的误码率,也就是你读出来的数据并不一定就完全跟CD上的数据一样,因为CD音频无需数据完全一致。但是对这个允许出错的指标是有限制的,还是相当低的。而CDROM的格式则要求数据完全相同,否则,你读个文件出来就糟糕了!要是有人感兴趣的话可以找找CD音频格式的规范白皮书来看看。
    我想做的是APE或者WAV这些通过解码输出SPDIF格式供外置高保_真DAC用的,自己手里倒是有好几个DAC,现在用电脑听APE也是用声卡的SPDIF数字输出到DAC解码的,音质是非常不错的,主要就是看DAC的性能了!
    另外,我想可能我没表达清楚,我所指的DAC是指外置的那种DAC解码器,而不是指的简单的音频DAC芯片。
    电脑的集成声卡通常很差,不过用它的数字输出还是很不错的,建议阿莫把声卡的数字输出接到你的高档DAC上再听听,绝对比IPOD强多了。

出0入0汤圆

发表于 2008-1-15 15:31:28 | 显示全部楼层
嗯,虽然我不懂,但是想想也对,如果完全百分百可以复制刻录的话,盗版碟就跟正版是一样了。这就可以解释为什么盗版碟的音质比正版差那么多了。

出0入0汤圆

发表于 2008-1-15 16:00:23 | 显示全部楼层
【49楼】
这是有可能的,如果使用CD播放器。
但使用CD-ROM应该不会出现“允许误码”的情况,所以说使用CD-ROM刻录应该没有字节/位损失,就更别说音质的损失了,至于说翻录的CD听起来音质不好,或许,原因不在光盘上的数据源,最有可能的情况是CD设备和盘片的兼容性,因为CD-R和CD的格式不完全一致,使用CD设备读CD-R时可能有比较高的误码率,这样就出现音质受损的情况,但这不是盘片的问题而是设备与盘片的兼容问题,和你翻录1万次没有关系,只要设备能无误码地从盘片上读取数据就应该不存在音质受损。

出0入20汤圆

发表于 2008-1-15 16:00:30 | 显示全部楼层
CD应该是完全可以复制的,即使翻刻10000遍也不会有音质的下降,不然为什么叫数字技术?

出0入20汤圆

发表于 2008-1-15 16:03:17 | 显示全部楼层
对这个帖子很关注.目前比较有疑问的是软解码APE或者FLAC对CPU的要求有多高?

出0入0汤圆

发表于 2008-1-15 16:21:54 | 显示全部楼层
CD在读出数据时会有一定的数据损失,因为CD规格中对音轨数据的保护和校验比较弱,就是原版碟也存在这个问题,碟片的品质对这种损失有很大影响,所以市面上的专辑有金碟、普通碟、低价碟之分
翻录的CD对第一手的数据损失是没有什么办法完全避免的,但是这种损失实际上相当小,大多数DB碟的音质差是由于碟片品质差,另外还有很多DB碟实际上做不到最理想地从原版获取数据

出0入0汤圆

发表于 2008-1-15 16:23:49 | 显示全部楼层
【48楼】 favr

是的,当年我刚开始玩刻录CD的时候,对网上这个观点也非常、十分、很吃惊!觉得数字的东西竟然无法完美复制,还得意洋洋的用CloneCD软件翻刻了一张所谓每个坑都跟源盘完全一致的CD,结果翻刻的CD音质令我大吃一惊,声音冷、薄、干……

后来知道了CD的抓轨跟复制CDROM上的文件原理上完全不一样的,电脑文件格式包含各种纠错手段,由不得一个字节的偏差,而CD则没有,EAC号称抓轨最厉害的软件,也只能反复读取同一段数据数十次进行比较和纠错,没有任何软件和任何办法通过一次或多次读取而获得跟原来绝对完整一致的数据的。工厂压碟跟我们刻录不一样,压制的碟可以跟母盘一致,那为什么盗版的压制碟音质也很糟糕,2个方面造成的:1是盗人家之盗作为母碟数据,这种盗上加盗的会造成音质劣化的恶性循环;2是正规出版商所用的金属母碟模压制过2000-3000张CD后就要重新制作母盘模,而盗版的加工厂那个母盘模用了几十W张还不换,误码会多到什么程度可想而知!

其实做试验也不难,找个CD-RW片,把原版的抓成WAV文件,再刻录到CDRW上,再抓CDRW的音轨,再刻一次到CDRW上,如此反复10次8次以后(如果中途换过其他电脑和刻录机更明显),把原版CD和刻了10次的CDRW一起放到1W块以上的HIFI音响系统(爱浪、CAV之类的家庭影院免谈),盲听也绝对听得出差别,是不是河阳猪肉,一吃便知。

网上各大hifi论坛介绍翻刻CD的知识和误区解答多的很,我就不找出来贴了,年底时间宝贵,要赶紧找钱过年,大家多见谅

出0入0汤圆

发表于 2008-1-15 16:32:53 | 显示全部楼层
alien2006说的没错,CD音频是允许误码存在的,不可能完全复制。普通数字文件则不允许误码,有误码就认为该文件损坏了。对这些数字文件来说无论保存于什么介质,复制多少次都可以保证完全一致。

出0入0汤圆

发表于 2008-1-15 16:54:08 | 显示全部楼层
解码APE或者FLAC对运算能力的要求并不高,起码不会高于MP3、WMV。大多数半导体厂商的芯片方案都实现了,市场上有不少MP4都支持APE、FLAC双解码。但基本都是软件解码,不论是厂家还是第三方的技术授权费用都很高。APE似乎有版权问题,FLAC是GNU项目不存在版权问题,有源代码参考,另外它的解码也简单些。如果有人感兴趣的话研究FLAC解码可能更合适。但是我觉得阿莫的想法也不错,直接用WAV,解码很简单,就是文件大一倍,用个大硬盘就可以了,比研究FLAC快多了。

出0入0汤圆

发表于 2008-1-15 21:44:04 | 显示全部楼层
我认同【56楼】 emicro 的看法!
“音轨”--> “WAV数字文件” 这个过程转换通常称为“抓轨”,而不是复制。这是一个有损的转换,应该是没有疑问的!
“WAV数字文件”-->“WAV数字文件” 通过不同途径在相同或者不同的介质之间转移,这是复制,无损的。复制一万次也不会受损,只要文件不出错。
“WAV数字文件”-->“音轨”这个过程就是我们所说的刻录,我认为与“抓轨”一样,最终数据会受损。
头像被屏蔽

出0入0汤圆

发表于 2008-1-16 02:07:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入8汤圆

发表于 2008-1-17 09:15:15 | 显示全部楼层
alien2006
你手上的那块PCB,ST原配的TFT本来是有一个演示程序的,播放的时候除了会有画面,还会有声音,声音也是WAV格式。

APE格式不了解,不是非常清楚是否M3够用

/*******************************************************************************
* Function Name  : WavePlayer_WaveParsing
* Description    : Checks the format of the .WAV file and gets information about
*                  the audio format. This is done by reading the value of a
*                  number of parameters stored in the file header and comparing
*                  these to the values expected authenticates the format of a
*                  standard .WAV  file (44 bytes will be read). If  it is a valid
*                  .WAV file format, it continues reading the header to determine
*                  the  audio format such as the sample rate and the sampled data
*                  size. If the audio format is supported by this application,
*                  it retrieves the audio format in WAVE_Format structure and
*                  returns a zero value. Otherwise the function fails and the
*                  return value is nonzero.In this case, the return value specifies
*                  the cause of  the function fails. The error codes that can be
*                  returned by this function are declared in the header file.
* Input          : None
* Output         : None
* Return         : Zero value if the function succeed, otherwise it return
*                  a nonzero value which specifies the error code.
*******************************************************************************/
static ErrorCode WavePlayer_WaveParsing(u32 ReadAddress)
{
  u32 index = 0;
  u32 Temp = 0x00;
  u32 ExtraFormatBytes = 0;

  /* Start a read data byte sequence from the Flash starting from @ReadAddress */
  SPI_FLASH_StartReadSequence(ReadAddress);
   
  /* Read chunkID, must be 'RIFF'  ----------------------------------------------*/
  Temp = ReadUnit(4, BigEndian);
  if(Temp != ChunkID)
  {
    return(Unvalid_RIFF_ID);
  }
   
  /* Read the file length ----------------------------------------------------*/
  WAVE_Format.RIFFchunksize = ReadUnit(4, LittleEndian);
  
  /* Read the file format, must be 'WAVE' ------------------------------------*/
  Temp = ReadUnit(4, BigEndian);
  if(Temp != FileFormat)
  {
    return(Unvalid_WAVE_Format);
  }
  
/* Read the format chunk, must be'fmt ' --------------------------------------*/
  Temp = ReadUnit(4, BigEndian);
  if(Temp != FormatID)
  {
    return(Unvalid_FormatChunk_ID);
  }

  /* Read the length of the 'fmt' data, must be 0x10 -------------------------*/
  Temp = ReadUnit(4, LittleEndian);
  if(Temp != 0x10)
  {
    ExtraFormatBytes = 1;
  }

  /* Read the audio format, must be 0x01 (PCM) -------------------------------*/
  WAVE_Format.FormatTag = ReadUnit(2, LittleEndian);
  if(WAVE_Format.FormatTag != WAVE_FORMAT_PCM)
  {
    return(Unsupporetd_FormatTag);
  }
  
  /* Read the number of channels, must be 0x01 (Mono) ------------------------*/
  WAVE_Format.NumChannels = ReadUnit(2, LittleEndian);
  if(WAVE_Format.NumChannels != Channel_Mono)
  {
    return(Unsupporetd_Number_Of_Channel);
  }
  
  /* Read the Sample Rate ----------------------------------------------------*/
  WAVE_Format.SampleRate = ReadUnit(4, LittleEndian);

  /* Update the OCA value according to the .WAV file Sample Rate */
  switch(WAVE_Format.SampleRate)
  {
    case SampleRate_8000 : TIM2ARRValue = 9000; break; /* 8KHz = 72MHz / 9000 */
    case SampleRate_11025: TIM2ARRValue = 6531; break; /* 11.025KHz = 72MHz / 6531 */
    case SampleRate_22050: TIM2ARRValue = 3265; break; /* 22.05KHz = 72MHz / 3265 */  
    case SampleRate_44100: TIM2ARRValue = 1633; break; /* 44.1KHz = 72MHz / 1633 */   
    default: return(Unsupporetd_Sample_Rate);
  }
  
  /* Read the Byte Rate ------------------------------------------------------*/
  WAVE_Format.ByteRate = ReadUnit(4, LittleEndian);
  
  /* Read the block alignment ------------------------------------------------*/
  WAVE_Format.BlockAlign = ReadUnit(2, LittleEndian);
  
  /* Read the number of bits per sample --------------------------------------*/
  WAVE_Format.BitsPerSample = ReadUnit(2, LittleEndian);
  if(WAVE_Format.BitsPerSample != Bits_Per_Sample_8)
  {
    return(Unsupporetd_Bits_Per_Sample);  
  }

  SpeechDataOffset = 36;

/* If there is Extra format bytes, these bytes will be defined in "Fact Chunk" */
  if(ExtraFormatBytes == 1)
  {
    /* Read th Extra format bytes, must be 0x00 ------------------------------*/
    Temp = ReadUnit(2, LittleEndian);
    if(Temp != 0x00)
    {
      return(Unsupporetd_ExtraFormatBytes);
    }

    /* Read the Fact chunk, must be 'fact' -----------------------------------*/
    Temp = ReadUnit(4, BigEndian);
    if(Temp != FactID)
    {
      return(Unvalid_FactChunk_ID);
    }

    /* Read Fact chunk data Size ---------------------------------------------*/
    Temp = ReadUnit(4, LittleEndian);
   
  SpeechDataOffset += 10 + Temp;

    /* Increment SPI Flash read address by Temp bytes by reading Temp dummy bytes */
    for(index = 0; index < Temp; index++)
    {
      SPI_FLASH_SendByte(Dummy_Byte);
    }
  }

/* Read the Data chunk, must be 'data' ---------------------------------------*/
  Temp = ReadUnit(4, BigEndian);

  if(Temp != DataID)
  {
    return(Unvalid_DataChunk_ID);
  }
   
  /* Read the number of sample data ------------------------------------------*/
  WAVE_Format.DataSize = ReadUnit(4, LittleEndian);

  SpeechDataOffset += 8;

  return(Valid_WAVE_File);
}

出0入0汤圆

 楼主| 发表于 2008-1-17 14:30:50 | 显示全部楼层
太好了呀,这样说起来STM32解WAV的程序有示例可以参考。STM32评估版的源代码应该在ST网站上有下载的吧,到时候下下来了解下。估计用来实现WAV播放器的硬件实验环境应该差不多就用评估版就可以实验了吧,SD卡、USB这些都有,SPDIF输出的大概可以利用一个GPIO用软件模拟实现。
    看起来关键点在与如何转换成SPDIF的格式了。

出0入0汤圆

发表于 2008-1-17 14:34:24 | 显示全部楼层
解WAV很多参考程序啊,只是要转成SPDIF就得下功夫了
头像被屏蔽

出0入0汤圆

发表于 2008-1-17 21:10:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2008-1-17 22:06:57 | 显示全部楼层
花了点时间仔细看了19楼的WAV文件格式,以及彩虹发的SPDIF流格式规范白皮书,终于恍然大悟了,原来这个东东原理这么简单啊,WAV文件直接就是记录了AD的数字量流的集合了,都不存在压缩的问题,直接按数据流读取出来再打包成到SPDIF的流就可以了,哪怕用AVR也可以轻松实现。
    SPDIF接口音频解码器的接收电路功能就是,将SPDIF格式再还原成音频DAC芯片(如ARMOK帖的那个丽特解码器裸照中AD1853芯片,SPDIF接收芯片是那个CS8414)所能使用的同步串行格式(如SPI I2S等)。所谓的JITTER仅存在于SPDIF传输接收过程,若是用具备I2S音频同步接口的AT91SAM7S这类单片机直接和AD1853这类同样具备I2S接口的音频DAC芯片连接的话就不会再有JITTER问题(因为SPDIF是异步传输方式)。

出0入0汤圆

 楼主| 发表于 2008-1-17 22:30:25 | 显示全部楼层
特意画了张图,左边部分是要实现的部分的功能,右边是现成的SPDIF音频DAC解码器功能框图,由于SPDIF是外置的通用音频数字接口,可以顺利驳接商品化的SPDIF音频DAC解码器。


第二张图是可以直接实现音频输出的,虽然省去了SPDIF部分避免了JITTER的失真,但是R/L声道模拟信号的处理是非常有难度的,要做好比较困难

出0入0汤圆

发表于 2008-1-17 23:09:16 | 显示全部楼层
刚才跟阿莫聊了这个话题好久,打算试试用AT91SAM7S64 I2S方式直接驳接PCM1792 DAC,另外,楼上第一个图可以不用单片机合成SPDIF,直接把I2S信号送入CS8402,由专用芯片转换I2S->SPDIF,效果更好一些。
头像被屏蔽

出0入0汤圆

发表于 2008-1-17 23:10:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 2008-1-17 23:55:15 | 显示全部楼层
PCM1792这个芯片可够牛的啊,132DB的动态范围,价格也牛,13美元一片还是单声道的,霍霍。
    原来还有专门的I2S到SPDIF转换芯片,搞得我还考虑用CPLD来做一个转换,这下更简单了。大家是越讨论思路越明晰啊。
    刚才想到,要播放CD的44.1K采样的话,单片机的时钟必须是44.1KHZ的倍数才行;而如果要输出48KHZ/96KHZ/192KHZ的话就用18.432MHZ,,44.1和48的不能共用一个晶振分频得出,这个比较麻烦

出0入8汤圆

发表于 2008-1-18 00:12:46 | 显示全部楼层
怎样才能读出IPod里的WAV文件?不通过PC,最近正在为这事烦着。

Ipod的USB是Device的,要读它还得找个USB Host的器件,用ARM9太贵,特别是系统的成本;ARM7没找到几个能带USB Host的型号,找个带外扩总线的MCU加一个USB Host的外设?可惜除了NXP的那几颗,有没有更便宜且好用一点的?已经有Apple的通过USB接口读取iPod里的文件授权。


STM32新出的64Pin的也有I2S接口,还是两个,同时也带硬件的SDIO,支持4Bit方式读写。

出0入0汤圆

发表于 2008-1-18 09:00:35 | 显示全部楼层
整个流程应该就是大家讨论的这样了,I2S转换成SPDIF存在JITTER问题,应该采用CS8406等专用芯片,采用CYPRESS的可编程时钟芯片就可以支持多种采样频率。这些环节不存在什么难点,但是WAV文件体积大,用SD卡可能实际使用价值要打个折扣,用笔记本硬盘要解决IDE/ATA接口高速数据传输,USB接口应该是2.0高速,不然硬盘文件传输速度太慢了。所以我觉得要向高保_真数字音乐源的方向努力的话难度可能在IDE/ATA接口和USB2.0高速接口上。
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 09:26:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-18 09:38:21 | 显示全部楼层
原来阿莫准备直接使用IPOD啊,嗯这样就不用理会硬盘接口、USB接口、文件管理等事项了,确实是一个好主意!
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 09:45:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入8汤圆

发表于 2008-1-18 09:55:26 | 显示全部楼层
授权有签属NDA,属受控制文件。


我还是没明白,彩虹如何去实现ipod里的文件读取?如果没有Apple的授权或破解?
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 09:59:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-18 10:34:47 | 显示全部楼层
如果是进行Ipod的扩充。我就觉得意义不大了,试问坛子里拥有它的又有几个?
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 10:46:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-18 12:17:41 | 显示全部楼层
这样做的目的是什么呢?用在那方面?

便携式HIFI ?
车载式HIFI   ?
家庭用硬盘HIFI ?

考虑到能源体积环境的不同解决的方案也不同。
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 12:59:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-18 13:47:32 | 显示全部楼层
发烧我还是懂一点的十几年前我和许多男孩一样也曾经发烧过。那时一个月的工资只能买1张半唱片。黑胶唱片是没有盗版的。

我还保存着一张486年代的 传说中的SOUNDBLASTER AWE 64 GOLD声卡 直到我的PII电脑损坏才退役 现在已经找不到ISA槽的电脑了。
直到现在我还认为那才是声卡。

我的意思是如果家庭使用完全可以用电脑+专业的火线音频卡,发烧解码器再怎么发烧也是业余的。

  PS:音频卡不是声卡哦!拿来玩游戏没声音的哦!
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 14:01:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-18 14:56:23 | 显示全部楼层
花大力气去弄iPod没有太大的意义哈

还是考虑通用的USB/SD的APE、FLAC播放才是王道

出0入0汤圆

发表于 2008-1-18 15:09:44 | 显示全部楼层
实在不行就搞硬盘接口,大不了挂个笔记本硬盘,读取里面的数据。人机界面的话我想能按照碟片名称分类管理(其实也就是分文件夹),查找也是很快的。至于iTunes,找个上位机高手模仿写一个也不是很难的。

出0入0汤圆

发表于 2008-1-18 15:40:49 | 显示全部楼层
如果家庭使用为什么不用电脑呢?
如果车用硬盘耐用吗?
如果便携式的话是个好主意,但要抵挡旁人异样的眼光.
----带个高阻的"海森塞尔"满街跑....
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 15:43:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-1-18 17:53:20 | 显示全部楼层
我不是这个意思 我只是觉得应该把这构想定位在车用HIFI上。但如果硬盘不耐震的话(国外确实有把IPOD装车上的)。
用4G的SD卡只能存6张碟大家能接受吗?(其实我本人是接受的)。
我一直有搞WAV PLAY随身听的想法。但总害怕别人用异样的眼神看我。
头像被屏蔽

出0入0汤圆

发表于 2008-1-18 20:48:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-2-15 19:56:55 | 显示全部楼层
有的买的东东总觉得自己diy没劲,APE的mp3机才500几,还那么大的TFT
做个直接从局域网或FTP上取源的播放器才好呢,还最好能无线网的
头像被屏蔽

出0入0汤圆

发表于 2008-2-16 10:06:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-2-18 19:39:24 | 显示全部楼层
期待APE播放器。

出0入0汤圆

发表于 2008-2-18 21:21:05 | 显示全部楼层
梦里HIFI知多少.....

出0入0汤圆

发表于 2008-2-19 00:04:33 | 显示全部楼层
带SPIFT同轴或光纤输出的mp3播放器? 没的,只是个播放器哦,一般的那种,支持APE,FLAC,我买的是魅族的(能放MP4,320240的,触摸按键的,但触摸不爽),其他牌也有

出0入0汤圆

发表于 2008-3-2 09:06:09 | 显示全部楼层
播wav可能更好,不用解码 ,买个黑手机就能播wav,1G的SD卡能装20首。
我正在构思SD+Atmega8模拟I2C输出TDA1311解码播wav,且wav如果压缩8倍十几倍会更爽(利用Atmega8解码可还回到原WAV)。

出0入0汤圆

发表于 2008-3-2 09:50:41 | 显示全部楼层
魅族的M6 SL版的MP3现在能够播放FLAC和APE格式的文件的。处理芯片的三星的SA58700X07,频率200M

出0入0汤圆

发表于 2008-3-8 11:51:36 | 显示全部楼层
有没有SPDIF输出部分的资料?

出0入0汤圆

发表于 2008-3-8 18:48:05 | 显示全部楼层
我有一份飞利浦--索尼数字音频接口的资料,应该是标准的CD数字信号SPIF输出方面的资料。有时间将它上传与大家分想享。

出0入0汤圆

发表于 2008-3-16 09:04:11 | 显示全部楼层
点击此处下载ourdev_231636.rar(文件大小:3.31M)

出0入0汤圆

发表于 2008-3-16 09:51:52 | 显示全部楼层
APE解码需要浮点运算,所以....


FLAC格式现在很多的mp3都支持了,ipod应该也支持的。(我没有ipod,所以不确定)


原来在armok这儿买的魅族mp3就可以放FLAC。

出0入0汤圆

发表于 2008-12-30 17:07:12 | 显示全部楼层
我06年时做过这个东东,自己感觉音质很好。以前我也是音响发烧友,后来大家都在烧钱,觉得没什么意思了,好象不烧钱出不了好音质。http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1809332&bbs_id=9999&nbsp;这里我发了个主题。与大家探讨

出0入0汤圆

发表于 2008-12-30 20:34:24 | 显示全部楼层
现在的闪存、硬盘这么便宜,按理说应该把重点精力放到D/A、后级耳放什么的地方。



当然,突破一种技术也是很好的,敢为天下先很好。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 11:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表