Вопросы по foobar2000 (старые версии)

Список разделов foobar2000 Общая информация

Описание: Общее обсуждение по аудиоплееру foobar2000

Сообщение #501 tvin » 01.06.2009, 20:36

Простите за нубский вопрос, но не могу разобраться как сделать так, чтобы с клавиатуры или с пульта фубар все же управлялся? Остальные плееры в большинстве своем вроде работают правильно.
Имеется в виду - когда он в свернутом состоянии.
Последний раз редактировалось tvin 01.06.2009, 21:38, всего редактировалось 1 раз.
tvin
Репутация: 0
С нами: 14 лет 9 месяцев

"Потоковое воспроизведение" с харда

Сообщение #502 G-Man » 01.06.2009, 23:15

Есть прога, которая в режиме реального времени записывает звук с линейного входа на хард. Можно по принципу интернет-радио воспроизвести этот файл фубаром? При обычном воспроизведении пишет Sharing violation конечно же...
G-Man
Аватара
Репутация: 9
С нами: 15 лет 2 месяца

Несколько вопросов про Foobar 2000

Сообщение #503 Den121991 » 02.06.2009, 01:41

Как поднять громкость в эквалайзере если композиция тихая, и обычного регулятора громкости уже мало  ? в аимп такая функция есть
Как лучше настроить звук на встроенной звуковухе ? какиенить плугину наверно нужны
Den121991
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #504 Mishail » 02.06.2009, 03:26

Как поднять громкость в эквалайзере если композиция тихая, и обычного регулятора громкости уже мало  ?
Может стоит попробовать Replaygain?
Mishail M
Аватара
Репутация: 5
С нами: 17 лет 10 месяцев

Сообщение #505 stas_on » 02.06.2009, 14:53

приветствую, такая проблема, эм... неработает, хотя наврятле, кнопка "previous", при нажатии просто срабатывет "стоп", тоесть не происходит переход на предыдущий трек, и ешо, как настороить медиа клавиши на клавиатуре, к примеру, при игре в Team Fortress 2, при на жатии паузы, на мультимедийной клаве(оО), происходит "насмешка"(в самой игре такая штука есть), на каторую назначен бинд на клавишу "G".
stas_on
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #506 evil » 02.06.2009, 15:01

stas_on:неработает, хотя наврятле, кнопка "previous"
В режиме Random? Так и должно быть. В остальных будет работать.
evil M
Репутация: 67
С нами: 17 лет 10 месяцев

Сообщение #507 stas_on » 02.06.2009, 15:16

В режиме Random? Так и должно быть. В остальных будет работать.
да в рандоме... ладно переживу=), вот ешо проблему с медиа клавами решить... было бы ништяк, ато я от хоткеев отвык, спасибо винапу
stas_on
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #508 Nothing » 02.06.2009, 19:35

чем открыть фубаровский database.fpl для прямого доступа?
Nothing
Репутация: 2
С нами: 16 лет 7 месяцев

тупой вопросик

Сообщение #509 sapbl4 » 05.06.2009, 07:19

у меня такой вопрос мне нужно что бы в контекстном меню появилась опция Remove... сстранно но когда я включаю default user interface то эта опция есть
но когда переключаюсь на ColumnUI то пропадает помогите настроить эту опцию плиз :))
да пробовал смотреть в настройках "Context menu" там такой команды нет
Последний раз редактировалось evil 05.06.2009, 07:40, всего редактировалось 1 раз.
sapbl4
Репутация: 0
С нами: 16 лет 7 месяцев

Сообщение #510 DRON » 05.06.2009, 15:20

Nothing:чем открыть фубаровский database.fpl для прямого доступа?
Как это ни странно, но открыть его можно самим фубаром :)
DRON M
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 15 лет 10 месяцев

Сообщение #511 Nothing » 06.06.2009, 10:49

_DRON_:
Nothing:чем открыть фубаровский database.fpl для прямого доступа?
Как это ни странно, но открыть его можно самим фубаром :)
нет, мне нужно иметь прямой доступ к таблицам, как в foo_custom_db, например
Nothing
Репутация: 2
С нами: 16 лет 7 месяцев

Сообщение #512 Mishail » 06.06.2009, 12:06

2Nothing
А в database.fpl есть таблицы?
Mishail M
Аватара
Репутация: 5
С нами: 17 лет 10 месяцев

Сообщение #513 Nothing » 06.06.2009, 12:13

Mishail:2Nothing
А в database.fpl есть таблицы?
а Павловски его знает. вот и спрашиваю, может повезет. но, имхо, логичнее было бы держать записи все-таки в формате БД
Nothing
Репутация: 2
С нами: 16 лет 7 месяцев

Сообщение #514 DRON » 06.06.2009, 13:48

Nothing:но, имхо, логичнее было бы держать записи все-таки в формате БД
Как вы себе представляете этот самый "формат БД"? Как базу MS Access чтоли :)
Там свой формат, причём разный в разных версиях, отдельных программ по работе с ним не знаю, могу только исходник дать:
Код: Выделить всё
type
  TFileHeader=packed record
    GUID:TGUID;
    DataOffset:DWORD;
  end;
  TItemHeader=packed record
    ItemType:DWORD;
    FileName:DWORD;
    SubSongIndex:DWORD;
  end;
  TStdItemInfo=packed record
    FileSize:Int64;
    FileTime:TFileTime;
    Duration:Double;
    AlbumGain:Single;
    TrackGain:Single;
    AlbumPeak:Single;
    TrackPeak:Single;
  end;

  TNameValue=record
    Name:UTF8String;
    Value:UTF8String;
  end;
  TNameValueList=array of TNameValue;

  TItem=record
    ItemType:DWORD;
    FileName:UTF8String;
    SubSongIndex:DWORD;
    StdInfo:TStdItemInfo;
    MetaInfo:TNameValueList;
    FileInfo:TNameValueList;
  end;

  TPlaylistVersion=(fb8,fb9);
  TPlayList=array of TItem;

const
  V8Sign:TGUID='{E3D06882-874B-43E3-9825-4E42020AF543}';
  V9Sign:TGUID='{919CA0E1-3CF8-4277-852C-3BCC1401D3F2}';
  V8StdInfoSize=6*4;
  V9StdInfoSize=6*4+4*4;

function LoadPlayList(const FileName:string;out PlayList:TPlayList):TPlaylistVersion;
var
  Stream:TMemoryStream;
  Version:TPlaylistVersion;
  function ReadDWORD:DWORD;
  begin
    Stream.ReadBuffer(Result,SizeOf(Result));
  end;
  function GetString(Offset:DWORD):UTF8String;
  begin
    Result:=PChar(@PChar(Stream.Memory)[20+Offset]);
  end;
  function ReadString:UTF8String;
  var
    N:Integer;
  begin
    Stream.ReadBuffer(N,SizeOf(N));
    case Version of
      fb8:begin
          SetLength(Result,N);
          if N>0 then Stream.ReadBuffer(Pointer(Result)^,N);
        end;
      fb9:Result:=GetString(N);
    end;
  end;
  procedure ReadSimpleList(var List:TNameValueList;Count:DWORD);
  var
    A:Integer;
  begin
    SetLength(List,Count);
    for A:=0 to High(List) do
      with List[A] do begin
        Name:=ReadString;
        Value:=ReadString;
      end;
  end;
  procedure ReadStrangeList(var List:TNameValueList;Count:DWORD);
  var
    Index:Integer;
    A:DWORD;
    Pairs:array of packed record
      ID,Name:DWORD;
    end;
    Strings:array of DWORD;
  begin
    List:=nil;
    if Count=0 then Exit;
    SetLength(List,Count);
    SetLength(Pairs,Count+1);
    Stream.ReadBuffer(Pairs[0],SizeOf(Pairs[0])*Count);
    Pairs[Count].ID:=$FFFFFFFF;
    SetLength(Strings,ReadDWORD);
    Stream.ReadBuffer(Strings[0],SizeOf(Strings[0])*Length(Strings));
    Index:=-1;
    for A:=0 to High(Strings) do begin
      if A<Pairs[Index+1].ID then
        List[Index].Value:=List[Index].Value+#0+GetString(Strings[A])
      else
        Inc(Index);
      if Pairs[Index].ID=A then begin
        List[Index].Name:=GetString(Pairs[Index].Name);
        List[Index].Value:=GetString(Strings[A]);
      end
    end;
  end;
var
  A:Integer;
  Header:TFileHeader;
  Count1,Count2,NextFile,NextInfo:DWORD;
begin
  Stream:=TMemoryStream.Create;
  try
    Stream.LoadFromFile(FileName);
    Stream.ReadBuffer(Header,SizeOf(Header));
    if IsEqualGUID(Header.GUID,V8Sign) then
      Version:=fb8
    else if IsEqualGUID(Header.GUID,V9Sign) then begin
      Stream.Seek(Header.DataOffset,soFromCurrent);
      Version:=fb9;
    end
    else
      raise Exception.Create('Unknown playlist format');
    SetLength(PlayList,ReadDWORD);
    for A:=0 to High(PlayList) do
      with PlayList[A] do begin
        ItemType:=ReadDWORD;
        FileName:=ReadString;
        SubSongIndex:=ReadDWORD;
        if ItemType>0 then
          case Version of
            fb8:begin
                if ItemType<>$D then
                  raise Exception.CreateFmt('Parse error (ItemType=%d)', [ItemType]);
                Stream.ReadBuffer(StdInfo,V8StdInfoSize);
                ReadSimpleList(MetaInfo,ReadDWORD);
                ReadSimpleList(FileInfo,ReadDWORD);
              end;
            fb9:begin
                if ItemType<>$1 then
                  raise Exception.CreateFmt('Parse error (ItemType=%d)', [ItemType]);
                Stream.ReadBuffer(StdInfo,V9StdInfoSize);
                NextFile:=ReadDWORD*4;
                Inc(NextFile,Stream.Position);
                Count1:=ReadDWORD;
                Count2:=ReadDWORD;
                NextInfo:=ReadDWORD*4;
                Inc(NextInfo,Stream.Position);
                ReadStrangeList(MetaInfo,Count1);
                Stream.Position:=NextInfo;
                ReadSimpleList(FileInfo,Count2);
                Stream.Position:=NextFile;
              end;
          end;
      end;
  finally
    Stream.Free;
  end;
  Result:=Version;
end;

procedure SavePlayList(const FileName:string;const PlayList:TPlayList;Version:TPlaylistVersion);
var
  DataStream,StringStream:TMemoryStreamEx;
  Hash:TStringHashEx;
  procedure WriteDWORD(Value:DWORD);
  begin
    DataStream.WriteBuffer(Value,SizeOf(Value));
  end;
  function AddString(const Value:UTF8String):DWORD;
  var
    V:PDWORD;
  begin
    if not Hash.FindOrAdd(Value,PPointer(V)) then begin
      V^:=StringStream.Position;
      StringStream.WriteBuffer(Value[1],Length(Value)+1);
    end;
    Result:=V^;
  end;
  procedure WriteString(const Value:UTF8String);
  var
    Len:Integer;
  begin
    Len:=Length(Value);
    DataStream.WriteBuffer(Len,SizeOf(Len));
    if Len>0 then DataStream.WriteBuffer(Value[1],Len);
  end;
  procedure WriteLists(const MetaInfo,FileInfo:TNameValueList);
  var
    Pairs:array of packed record
      X,Y:DWORD;
    end;
    PC:PChar;
    S:string;
    Strings:array of DWORD;
    A,L,Len:Integer;
    ID:DWORD;
    InfoHeader:packed record
      FullSize:DWORD;
      MetaCount:DWORD;
      FileCount:DWORD;
      MetaSize:DWORD;
    end;
  begin
    InfoHeader.MetaCount:=Length(MetaInfo);
    SetLength(Pairs,InfoHeader.MetaCount);
    SetLength(Strings,InfoHeader.MetaCount);
    ID:=0;
    for A:=0 to InfoHeader.MetaCount-1 do begin
      Pairs[A].X:=ID;
      Pairs[A].Y:=AddString(MetaInfo[A].Name);
      PC:=PChar(MetaInfo[A].Value);
      Len:=Length(MetaInfo[A].Value)+1;
      repeat
        if ID>DWORD(High(Strings)) then
          SetLength(Strings,ID+1);
        L:=StrLen(PC);
        SetString(S,PC,L);
        Strings[ID]:=AddString(S);
        Inc(ID);
        Inc(PC,L+1);
        Dec(Len,L+1);
      until Len=0;
    end;
    InfoHeader.FileCount:=Length(FileInfo);
    InfoHeader.FullSize:=3+InfoHeader.MetaCount*2+1+ID+InfoHeader.FileCount*2;
    InfoHeader.MetaSize:=InfoHeader.MetaCount*2+1+ID;
    DataStream.WriteBuffer(InfoHeader,SizeOf(InfoHeader));
    DataStream.WriteBuffer(Pairs[0],SizeOf(Pairs[0])*Length(Pairs));
    WriteDWORD(ID);
    DataStream.WriteBuffer(Strings[0],SizeOf(Strings[0])*Length(Strings));
    SetLength(Pairs,InfoHeader.FileCount);
    for A:=0 to InfoHeader.FileCount-1 do
      with FileInfo[A] do begin
        Pairs[A].X:=AddString(Name);
        Pairs[A].Y:=AddString(Value);
      end;
    DataStream.WriteBuffer(Pairs[0],SizeOf(Pairs[0])*Length(Pairs));
  end;
var
  A,B:Integer;
  FileHeader:TFileHeader;
  ItemHeader:TItemHeader;
begin
  DataStream:=TMemoryStreamEx.Create;
  try
    case Version of
      fb8:begin
          FileHeader.GUID:=V8Sign;
          FileHeader.DataOffset:=0;
          DataStream.WriteBuffer(FileHeader,SizeOf(FileHeader));
          WriteDWORD(Length(PlayList));
          for A:=0 to High(PlayList) do
            with PlayList[A] do begin
              WriteDWORD(ItemType);
              WriteString(FileName);
              WriteDWORD(SubSongIndex);
              if ItemType>0 then begin
                DataStream.WriteBuffer(StdInfo,V8StdInfoSize);
                WriteDWORD(Length(MetaInfo));
                for B:=0 to High(MetaInfo) do
                  with MetaInfo[B] do begin
                    WriteString(Name);
                    WriteString(Value);
                  end;
                WriteDWORD(Length(FileInfo));
                for B:=0 to High(FileInfo) do
                  with FileInfo[B] do begin
                    WriteString(Name);
                    WriteString(Value);
                  end;
              end;
            end;
          DataStream.SaveToFile(FileName);
        end;
      fb9:begin
          StringStream:=TMemoryStreamEx.Create;
          try
            WriteDWORD(Length(PlayList));
            Hash:=TStringHashEx.Create(1024,Rot13Hash);
            try
              for A:=0 to High(PlayList) do
                with PlayList[A] do begin
                  ItemHeader.ItemType:=ItemType;
                  ItemHeader.FileName:=AddString(FileName);
                  ItemHeader.SubSongIndex:=SubSongIndex;
                  DataStream.WriteBuffer(ItemHeader,SizeOf(ItemHeader));
                  if ItemType>0 then begin
                    DataStream.WriteBuffer(StdInfo,V9StdInfoSize);
                    WriteLists(MetaInfo,FileInfo);
                  end;
                end;
            finally
              Hash.Free;
            end;
            with TFileStream.Create(FileName,fmCreate) do try
              FileHeader.GUID:=V9Sign;
              FileHeader.DataOffset:=StringStream.Size;
              WriteBuffer(FileHeader,SizeOf(FileHeader));
              WriteBuffer(StringStream.Memory^,StringStream.Size);
              WriteBuffer(DataStream.Memory^,DataStream.Size);
            finally
              Free;
            end;
          finally
            StringStream.Free;
          end;
        end;
    end;
  finally
    DataStream.Free;
  end;
end;
DRON M
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 15 лет 10 месяцев

Сообщение #515 dollkingdom » 07.06.2009, 22:33

Мой вопрос сродни общеюзерской мольбе предоставить русификатор для проигрывателя...
А конкретно: где прочесть описание синтаксов на русском? Понимаю гдет 10% (%artist%, %title% и т. д.). Онлайн переводчики выдают кривой перевод, а так хочется просветиться в деле написания длинных запутаных комбинаций синтаксов. Помогите!
dollkingdom M
Аватара
Репутация: 0
С нами: 14 лет 11 месяцев

Сортировка альбомов в AlbumList по дате изменения.

Сообщение #516 kseile » 08.06.2009, 03:32

возможно?
kseile
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #517 panda » 08.06.2009, 12:33

2dollkingdom
ru.wikibooks.org
Последний раз редактировалось evil 11.06.2009, 20:32, всего редактировалось 1 раз.
panda M
Аватара
Репутация: 12
С нами: 17 лет 6 месяцев

Сообщение #518 Izotop » 11.06.2009, 19:26

Описание тегов, полей, функций, переменных на русском языке
Справка по функциям и полям, используемым в скриптах Foobar2000 (TAGZ)
Izotop M
Аватара
Откуда: Зеленоград - Харьков
Репутация: 69
С нами: 15 лет 4 месяца

Сообщение #519 MotorMusic » 11.06.2009, 23:48

Вот такой вопрос у меня. Foobar отличный плеер. Все нравится. Звучание, интерфейс. Но когда настраиваю эквалайзер то частоты в 20 KhZ не меняются. Можно поставить на макисмум все равно ничего не меняется. Думал может дело в звуковухе (встроеная реалтек), но на Apollo Player 20 KhZ чувствуется. Что вы думаете?
MotorMusic
Репутация: 0
С нами: 14 лет 9 месяцев

Сообщение #520 DRON » 12.06.2009, 02:04

MotorMusic:Но когда настраиваю эквалайзер то частоты в 20 KhZ не меняются.
Если в качестве исходника у вас MP3, то там просто может не быть этих самых 20 KhZ, совсем.
DRON M
Аватара
Откуда: Санкт-Петербург
Репутация: 113
С нами: 15 лет 10 месяцев

Пред.След.

Вернуться в Общая информация