关于用arduin播放音乐的问题。请教
搞不懂“SimpleSDAudio”,是怎样实现读取SD数据播放音乐的,就是Play函数、我希望在读取的时候,加入一些控制,不知可不可。。。 :):):):):):):):):):):):):):):):):):) 用过tmrpcm,播放的时候可以控制SimpleSDAudio没用过,看一下说明应该是在主程序中跑worker(),估计也可以控制
不过转档后音质只能说是勉强能听,最后还是直上vs1003,mp3 320kbps无压力
void SdPlayClass::worker(void) {
if(_pBuf && _fileinfo.Size) {
uint16_t buflencpy;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{
buflencpy = _Buflen;
}
if(_fileinfo.ActBytePos < _fileinfo.Size) {
// At least space for 1 sector?
if(buflencpy < (_Bufsize - 512)) {
int16_t ret;
ret = SD_L1_ReadBlock(_fileinfo.ActSector++, _pBuf + _Bufin);
if(!ret) {
uint32_t BytesLeft = _fileinfo.Size - _fileinfo.ActBytePos;
_Bufin += 512;
_fileinfo.ActBytePos += 512;
if(_Bufin >= _Bufsize) _Bufin -= _Bufsize;
if(BytesLeft >= 512UL) {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{
_Buflen += 512;
}
} else {
ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
{
_Buflen += BytesLeft;
}
}
} else {
stop();
_lastError = ret;
}
}
} else {
// Playback done
if(buflencpy <= 1) {
stop();
}
}
}
}
Be1ieve 发表于 2014-3-28 19:45 static/image/common/back.gif
用过tmrpcm,播放的时候可以控制
SimpleSDAudio没用过,看一下说明应该是在主程序中跑worker(),估计也可以 ...
谢谢指教! Be1ieve 发表于 2014-3-28 19:45 static/image/common/back.gif
用过tmrpcm,播放的时候可以控制
SimpleSDAudio没用过,看一下说明应该是在主程序中跑worker(),估计也可以 ...
是这个?不知该怎样改动。。。 库里面的东西除非作者有说要改不然不要动
下面是tmrpcm的范例,库在相关帖子有自己找#include <SD.h>
#include <SPI.h>
#include <TMRpcm.h>
#define SD_PIN 4
#define SPEAKER_PIN 9
TMRpcm audio;
void setup(){
Serial.begin(115200);
while(!Serial); Serial.println();
audio.speakerPin = SPEAKER_PIN;
if(!SD.begin(SD_PIN)){
Serial.println("Fail to open SD card.");
}
else{
Serial.println("SD card is ready.");
audio.play("startup.wav");
}
}
void loop(){
} Be1ieve 发表于 2014-3-29 08:48 static/image/common/back.gif
库里面的东西除非作者有说要改不然不要动
下面是tmrpcm的范例,库在相关帖子有自己找
哦哦!不知道还有tmrpcm,我试试行不行
Be1ieve 发表于 2014-3-29 08:48 static/image/common/back.gif
库里面的东西除非作者有说要改不然不要动
下面是tmrpcm的范例,库在相关帖子有自己找
还是搞不明白怎样控制。。有加控制的范例吗?? tmrpcm.play("filename"); plays a file
tmrpcm.speakerPin = 11; set to 5,6,11 or 46 for Mega, 9 for Uno, Nano, etc
tmrpcm.disable(); disables the timer on output pin and stops the music
tmrpcm.stopPlayback(); stops the music, but leaves the timer running
tmrpcm.isPlaying();returns 1 if music playing, 0 if not
tmrpcm.pause();pauses/unpauses playback
tmrpcm.volume(0); 1(up) or 0(down) to control volume
所有控制就這些而已
页:
[1]