В воскресенье постараюсь сделать все.
Вид для печати
Буду премного благодарен. Сейчас trunk в репозитории заново начат, выкачивать стабильный бранч.
ЗЫ: модераторы, переместите пожалуйста последние сообщения в соответствующую тему http://zx.pk.ru/showthread.php?t=10340
svn checkout http://zxtune.googlecode.com/svn/branches/old_arch/ zxtune-read-only
trunk не трогай. Я там заново начал делать, кроме тестов подсистем ничего не собирается и не работает.
g++ -O3 -DNDEBUG -g3 -D__STDC_CONSTANT_MACROS -mabi=altivec -maltivec -mcpu=7450 -funroll-loops -funsigned-char -fno-strict-aliasing -W -Wall -ansi -pthread -pipe -I../.. -I../../include/boost/tr1/tr1 -I../../include/boost -I../../include -Iinclude -c -MD plugins/stp_supp.cpp -o ../../obj/release/zxtune/stp_supp.o
plugins/stp_supp.cpp: In static member function 'static void<unnamed>::STPPlayer::ParsePattern(const<unnam ed>::FastDump&, std::vector<unsigned int, std::allocator<unsigned int> >&, ZXTune::Tracking::TrackPlayer<3u, <unnamed>::Sample, ZXTune::Tracking::SimpleOrnament>::Line&, std::valarray<unsigned int>&, std::valarray<unsigned int>&, ZXTune::Log::WarningsCollector&)':
plugins/stp_supp.cpp:255: warning: comparison is always true due to limited range of data type
../../include/types.h: In function 'T fromLE(T) [with T = short int]':
plugins/stp_supp.cpp:161: instantiated from here
../../include/types.h:106: error: call of overloaded 'swapBytes(short int&)' is ambiguous
../../include/types.h:59: note: candidates are: uint16_t swapBytes(uint16_t)
../../include/types.h:64: note: uint32_t swapBytes(uint32_t)
../../include/types.h:70: note: uint64_t swapBytes(uint64_t)
Это раз.
./cmd_test --alsa ./samples/asc/BLUEBIRD.asc
Unsupported module type
./cmd_test --alsa ./samples/chi/balala.chi
Module:
CRC: adacc8b3
Filename: ./samples/chi/balala.chi
Program: ChipTracker
Title: Chip Tracker 1.3 by AlCo/i8/Any!
Warnings: Pattern 3: Line 1: Channel 1: invalid channel
Pattern 3: Line 5: Channel 1: invalid channel
Pattern 3: Line 7: Channel 1: invalid channel
Pattern 3: Line 29: Channel 1: invalid channel
Pattern 3: Line 31: Channel 1: invalid channel
Pattern 3: Line 37: Channel 1: invalid channel
Pattern 3: Line 39: Channel 1: invalid channel
Pattern 3: Line 57: Channel 1: invalid channel
Pattern 3: Line 61: Channel 1: invalid channel
Pattern 4: Line 1: Channel 1: invalid channel
Pattern 4: Line 5: Channel 1: invalid channel
Pattern 4: Line 7: Channel 1: invalid channel
Pattern 4: Line 29: Channel 1: invalid channel
Pattern 4: Line 31: Channel 1: invalid channel
Pattern 4: Line 37: Channel 1: invalid channel
Pattern 4: Line 39: Channel 1: invalid channel
./cmd_test --alsa ./samples/hrip/TagNws.hrp
Ошибка сегментирования
./cmd_test --alsa ./samples/pdt/1.M
чушь вместо музыки
./cmd_test --alsa ./samples/pt2/4jour#2.pt2
Unsupported module type
./cmd_test --alsa ./samples/pt3/Lat_mix2.pt3
чушь вместо музыки
./cmd_test --alsa ./samples/scl/TAGANNWS.SCL
Ошибка сегментирования
./cmd_test --alsa ./samples/stc/stracker.stc
чушь вместо музыки
./cmd_test --alsa ./samples/stp/NO\ LIM..stp
Module:
CRC: 83cec7ba
Filename: ./samples/stp/NO LIM..stp
Program: SoundTrackerPro
Title: NO LIMIT (REMIX DJD)!!!
Warnings: Sample 14: loop is out of bounds
чушь вместо музыки
./cmd_test --alsa ./samples/trd/CHIMORAN.TRD
чушь вместо музыки
./cmd_test --alsa ./samples/ts/DncDick.pt3
Module:
Author: krb 2k6
CRC: efaa8386
Filename: ./samples/ts/DncDick.pt3
Program: Vortex Tracker
Title: Dancing dick
Warnings: Pattern 2: Line 16: Channel 2: duplicated envelope
Pattern 2: Line 58: Channel 2: duplicated envelope
Pattern 2: Line 60: Channel 2: duplicated envelope
Pattern 2: Line 62: Channel 2: duplicated envelope
Pattern 4: Line 0: Channel 2: duplicated envelope
Pattern 5: Line 0: Channel 2: duplicated envelope
Pattern 5: Line 32: Channel 2: duplicated envelope
Pattern 7: Line 16: Channel 2: duplicated envelope
Pattern 7: Line 52: Channel 2: duplicated envelope
Pattern 7: Line 56: Channel 2: duplicated envelope
чушь вместо музыки
Пробовал почти все мелодии из тестов, приводил только по 1й из директории. Для остальных мелодий из директории ситуация аналогичная. Те директории которые не привел в пример - работают нормально.
Кажется, понял в чем трабл... Работа с битовыми полями не кроссплатформенна и не стандартизирована. Буду удалять...
Можешь проверить патч для chi-треков? Если сработает, буду остальные делать.
DLL и минимального функционала годного для использования в трекере в этом году видимо уже не ждать? :(
Попробовал последнюю svn версию собрать. В /src/sound/backends/wav_backend.cpp есть 2 ошибки:
241 строка ошибки во всех трёх итераторах. Правильная строка такая:
std::transform((*buffer.begin()).begin(), (*buffer.end()).end(), (*Buffer.begin()).begin(), &swapBytes<Sample>);
Ну и в следующей строке в конце лишняя скобка.
Когда собрался zxtune123 я так и не понял как заставить его чего-нить поиграть. Пишет какую-то чушь в консоль и все.
О! Благодарствую!
Для мака бекендов еще нету (попробовал в виртуалке MacOSX поднять- тупит все жутко и тупо не понял как svn поставить, gcc & make вроде есть).
Что пишет в консоль?
Для конверсии в вав надо набрать чтото типа:
Пока поддерживаются только STC&PSG плугины модулей, Hobeta&Raw плугины контейнеров как самые простые. Обкатаю на них все, буду дальше двигаться.Код:./zxtune123 --quiet --wav filename=test.wav --file <path_to_file>
Ну я вобщем-то тоже не под маком это все проверяю а под линухом. Просто у меня машина на PowerPC. Под маком свн вроде ставится вместе с XCode. Да и маки современные один хрен на интеле.
ПС: поправь все-таки мэйкфайлы, чтобы они сами определяли тип машины и в зависимости от этого убирали нафиг -march= из параметров гцц. На ППЦ такого параметра нет, есть -mcpu=, -mabi=altivec, -maltivec.
Мейки подфиксил. Автодетекта нет и не будет- я на одной и той же машине делаю разные сборки.
Сделай себе файлик make/platforms/linux_ppc.mak на основе linux.mak, подхачь как надо и в файле default.mak выстави дефолтную платформу на linux_ppc чтоб не указывать каждый раз- будет тебе щастье)
ЗЫ. А что в консоль-то выводит? Раз у тебя линукс, так обычный OSS должон работать.
Чтото наподобие
?Код:[Sound::Enumerator]: Registered backend 'oss'
[Sound::Enumerator]: Registered backend 'null'
[Sound::Enumerator]: Registered backend 'wav'
[Core::Enumerator]: Registered container Raw
[Core::Enumerator]: Registered implicit container Hobeta
[Core::Enumerator]: Registered player PSG
[Core::Enumerator]: Registered player STC
[zxtune123]: Trying backend oss
[Sound::Enumerator]: Creating backend 'oss'
[zxtune123]: Success!
[IO::Enumerator]: Registered provider 'file'
[IO::Enumerator]: Opening uri 'samples/pt3/Speccy2.pt3'
[IO::Enumerator]: Used provider 'file'
[Core::Enumerator]: Resolved path ''
[Core::Enumerator]: Detecting modules in data of size 8045, path ''
[Core::Enumerator]: Checking container plugin Raw for path ''
[Core::Enumerator]: Detecting modules in data of size 8045, path ''
[Core::Enumerator]: Checking implicit container Hobeta at path ''
[Core::Enumerator]: Checking module plugin PSG at path ''
[Core::Enumerator]: Checking module plugin STC at path ''
[Core::Enumerator]: Detecting modules in data of size 8044, path '1.raw'
[Core::Enumerator]: Checking container plugin Raw for path '1.raw'
[Core::Enumerator]: Checking implicit container Hobeta at path '1.raw'
[Core::Enumerator]: Checking module plugin PSG at path '1.raw'
[Core::Enumerator]: Checking module plugin STC at path '1.raw'
...
Это дебажный вывод, ты собрал отладочную версию. Для сбора релизной надо make mode=release делать.
Плюс сейчас даже в дебажной версии такой вывод делается только по требованию, но все равно собирай релизную- она гораздо быстрее работает.
Что поддерживается на текущий момент можно узнать при запуске с ключом --list-plugins. Ключ --help как обычно даст полный хелп по ключам. Руководство напишу позже.
Первый публичный билд новой версии.
Что нового?
* практически полностью переписанная архитектура
+ полноценное CLI-приложение zxtune123
+ гибкие настройки практически всего
Ограничения текущей версии (ревизия 384):
* плееры: STC,PT2,PT3,PSG,PDT
* контейнеры: Hobeta,TRD,Hrust1x,Hrust2x,Hrip,Raw (сканер)
* вывод звука: win32,oss,wav,null (для бенчмарков),aylpt
* конверсия: raw для всех (рипалка), psg/zx50 для чиповых
Для получения справки:
Прошу заинтересованных потестировать и сообщить о желаемых фичах.Код:zxtune123 --help
Качать
В репозитории есть. А также http://trd.speccy.cz/system/PDT.ZIP (модули от переделанного Prodigi Editor by Witchcraft for DMA UltraSound Card не понимаются). С интерполяцией лучше звучит:)
При сборке утреннего SVN'а на паверной машине под линухом:
/zxtune/src/sound$ make
Building library sound
mkdir -p ../../obj/linux/debug/sound
mkdir -p ../../lib/linux/debug
g++ -O0 -mcpu=7450 -mabi=altivec -maltivec -g3 -D__STDC_CONSTANT_MACROS -DOSS_SUPPORT -funroll-loops -funsigned-char -fno-strict-aliasing -W -Wall -Wextra -ansi -pipe -I../../include -I../../src -I../.. -c -MMD impl/mixer.cpp -o ../../obj/linux/debug/sound/mixer.o
impl/mixer.cpp: In member function ‘Error<unnamed>::FastMixer<InChannels>::SetMatri x(const std::vector<boost::array<double, 2u>, std::allocator<boost::array<double, 2u> > >&) [with unsigned int InChannels = 4u]’:
impl/mixer.cpp:174: instantiated from here
impl/mixer.cpp:136: error: no matching function for call to ‘bind(<unresolved overloaded function type>, boost::arg<1>&, unsigned int)’
impl/mixer.cpp: In member function ‘Error<unnamed>::FastMixer<InChannels>::SetMatri x(const std::vector<boost::array<double, 2u>, std::allocator<boost::array<double, 2u> > >&) [with unsigned int InChannels = 3u]’:
impl/mixer.cpp:174: instantiated from here
impl/mixer.cpp:136: error: no matching function for call to ‘bind(<unresolved overloaded function type>, boost::arg<1>&, unsigned int)’
impl/mixer.cpp: In member function ‘Error<unnamed>::FastMixer<InChannels>::SetMatri x(const std::vector<boost::array<double, 2u>, std::allocator<boost::array<double, 2u> > >&) [with unsigned int InChannels = 2u]’:
impl/mixer.cpp:174: instantiated from here
impl/mixer.cpp:136: error: no matching function for call to ‘bind(<unresolved overloaded function type>, boost::arg<1>&, unsigned int)’
impl/mixer.cpp: In member function ‘Error<unnamed>::FastMixer<InChannels>::SetMatri x(const std::vector<boost::array<double, 2u>, std::allocator<boost::array<double, 2u> > >&) [with unsigned int InChannels = 1u]’:
impl/mixer.cpp:174: instantiated from here
impl/mixer.cpp:136: error: no matching function for call to ‘bind(<unresolved overloaded function type>, boost::arg<1>&, unsigned int)’
make: *** [../../obj/linux/debug/sound/mixer.o] Ошибка 1
В рамках проекта по захвату^W проверке сборки на разных платформах, выложил билд по ревизии 334 под все платформы и компиляторы, до которых смог дотянуться:
- msvc 2003 (win32)
- msvc 2005 (win64)
- gcc/mingw (win32; кстати, результат работает быстрее, чем msvc аж на 20%, хотя и весит больше, что не так важно)
- gcc (linux i686)
- gcc (linux x86_64)
Из нового- поддержка конфигурационных файлов, чтоб не пихать постоянно длинные опции в командную строку.
собрал svn336
если при запуске рядом нету zxtune.conf, то виснет
если есть zxtune.conf (из поставки, полностью закоменнтированный), то вылетает с ошибкой
единственное, что работает в обоих случаях - это --help
прописал zxtune.core.aym.type=0, заработало
было б хорошо, если бы не было такой привязки к конфиг-файлу, чтоб если не удалось прочесть какой-то параметр, то использовалось бы некое дефолтное значение для него
и если нет конфига совсем, то тоже, чтоб все параметры брались умолчальные
ну или ошибки более verbose были :)
еще я вывод звука не смог запустить, только конвертацию в wav
но тут может дело в том, что я OSS из ядра выкинул (правда, ALSA его эмулирует), и в том, что у меня аж 3 alsa-устройства в системе, и из них дефолтное не первое
Было б хорошо, если б можно было сказать что-то в духе --wav filename=- и получить wav-файл прямо на stdout. Чтоб скармливать через пайп aplay
Хотя не, это костыль какой-то... это ж плеер, а не конвертер, тут и так много чего в stdout пишется :)
Да, у меня тоже все нормально собралось, а заиграло только после того, как я поставил в конфиге zxtune.core.aym.type=0. Это не есть гут.
Странно. Он пытается сначала искать рядом, потом в домашней директории (~/zxtune/zxtune.conf). Если не нашел, будет использовать дефолты. Ошибка будет выдаваться, если конфиг был явно задан и отсутствует.
Какая ошибка? Развал или пишет в аутпут просто? Если развал, можешь стек отладчика показать?
Пока только oss/wav/null для линукса. Поскольку oss отсутствует, будет юзаться null (ибо не требует параметров и работает всегда). Для wav требуется задавать параметр, потому дефолтным быть не может. Вывод в stdout сделать можно, но тогда сложно проконтролировать отсутствие другого вывода, да и не вав это будет, а сырой поток, ибо заголовок не выдашь.
---------- Post added at 10:18 ---------- Previous post was at 10:17 ----------
"Главный критерий ошибки как ошибки- ее повторяемость":) Ща посмотрю в чем дело.
---------- Post added at 10:49 ---------- Previous post was at 10:18 ----------
Пофиксил вроде. Заодно поменял, чтоб конфиг искался в ~/.zxtune/zxtune.conf для единообразия.
просто виснет
в strace было видно, что пытается искать zxtune.conf в домашней директории, а потом уходит в вечное ожидание какого-то фьютекса
я не особо силен в программировании звука, как вывод через OSS работает? через /dev/dsp?
просто эти устройства ALSA эмулирует, но у меня первым идет чуть ли не тв-тюнер, а рабочая звуковуха в районе /dev/dsp2
номер устройства в zxtune вроде можно задавать, надо с этим поиграться
---------- Post added at 13:20 ---------- Previous post was at 13:16 ----------
да нафиг это :)
вот когда будет отдельная либа для декодирования, тогда и будет иметь смысл отдельное приложение для такого вывода сделать
а счас городить из плеера swiss army knife какой-то, имхо, не стоит :)
Пропиши в конфиге zxtune.sound.backends.oss.device=/dev/dsp2 и микшер соответствующий
Потрассировал. Там была ошибка- std::ifstream'у скармливается просто директория. И почему-то он это хавает... Сейчас работает? У меня, по крайней мере, основные кейсы все прошли.
да, счас все ок
разве что если запустить без параметров, то выводит как будто сообщение об ошибке
в релизной версии то же самое, только уточнения в скобках нетКод:eltaron@home:~/src/zxtune$ bin/linux/debug/zxtune123
No files to process.
Code: ZXT#00
At: 9edfe44c (source.cpp:157, Initialize)
--------