Кстати очень жаль, что lmms, конкретно в ubuntu 16.04, очень падучая. Чуть не туда нажал крашится. Даже просто нормально прослушать встроенные треки не дает. Иногда вообще хрипит. Альса, пульса, сдл. Может есть какой рецепт чтоб стабильно работала? У вас она как, стабильна? Какая версия, дистибутив?Вот бэктрейс. Просто слушал Root84-TrancyLoop.mmpz, ничего не трогал, через минуту крашнулось.Ну, видно что "memset.S: Нет такого файла или каталога". Собрать транк с гитхаба? Может мейтейнет накосячил, просто пересобрать?
Хм, интересно. Значит убунтовцы как всегда... Надо попробовать в лайф режиме Росы загрузиться. А почему ты с Мигеи ушел?
... может есть у кого "справка" о том как из файла формата mmp вытянуть время трека? в милли/микро/секундах-с ...
Program received signal SIGSEGV, Segmentation fault.[Switching to Thread 0x7fffb63a7700 (LWP 14077)]0x000000000050d712 in AutomatableModel::controllerValue(int) const ()(gdb) bt#0 0x000000000050d712 in AutomatableModel::controllerValue(int) const ()#1 0x0000000000566af8 in FxMixer::masterMix(float (*) [2]) ()#2 0x000000000054666a in Mixer::renderNextBuffer() ()#3 0x00000000005468f4 in Mixer::fifoWriter::run() ()#4 0x00007ffff68bae3f in () at /usr/lib64/libQtCore.so.4#5 0x00007ffff7bc5645 in start_thread () at /lib64/libpthread.so.0#6 0x00007ffff43fadfd in clone () at /lib64/libc.so.6
void TimeDisplayWidget::updateTime(){ Song* s = Engine::getSong(); switch( m_displayMode ) { case MinutesSeconds: m_majorLCD.setValue( s->getMilliseconds() / 60000 ); m_minorLCD.setValue( ( s->getMilliseconds() / 1000 ) % 60 ); m_milliSecondsLCD.setValue( s->getMilliseconds() % 1000 ); break; case BarsTicks: int tick; tick = ( s->getMilliseconds() * s->getTempo() * (DefaultTicksPerTact / 4 ) ) / 60000 ; m_majorLCD.setValue( (int)(tick / s->ticksPerTact() ) + 1); m_minorLCD.setValue( ( tick % s->ticksPerTact() ) / ( s->ticksPerTact() / s->getTimeSigModel().getNumerator() ) +1 ); m_milliSecondsLCD.setValue( ( tick % s->ticksPerTact() ) %( s->ticksPerTact() / s->getTimeSigModel().getNumerator() ) ); break; default: break; }}
... по своему вопросу про время нашел вот такой код, который связывает тики и время ...
... вечерком сброшу файлик со скриптом для дальнейшего обсуждения ...
... добавил во вложение предварительный вариант импорта mmp в кривые анимации ...... это небольшое дополнение в раздел File->Import ...... после вызова процедуры импорта создаётся пустой объект с pattern-секциями, у для которых добавлены анимированные свойства "custom properties" на основании параметров note(pos,len) ...... ключи анимации расставляются с текущей позиции, кривая имеет линейные сегменты со смещением offset, которое задаётся через меню импорта ...
from bpy_extras.io_utils import ImportHelperclass LMMPPatternToScene(bpy.types.Operator, ImportHelper): """Load *.mmp""" bl_idname = "import.lmmp_pattern_to_scene" bl_label = "LMMP Pattern to Scene" bl_description = "Imports notes from LMMP files into 3D Scenes" bl_options = {'REGISTER','PRESET', 'UNDO'} filename_ext = ".mmp" filter_glob = StringProperty( default="*.mmp", options={'HIDDEN'}, ) Offset = FloatProperty(name="Offset Frame", description="Offset frame", min=0, default=1) DefaultTicksPerTact = FloatProperty(name="Default Ticks Per Tact", description="Default ticks per tact", min=16, default=192) def draw(self, context):