Вверх ↑
Этот топик читают: Гость
Ответов: 1535
Рейтинг: 176
#31: 2010-08-30 11:12:13 ЛС | профиль | цитата
Вот! Примечателен он тем, что алгоритм кодирования, как мне кажется, в нём меняется. Последние строки текстового блока, вообще подчинены распространённому алгоритму.

http://www.hiasm.com/forum_serv.php?q=56&id=1722
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 16884
Рейтинг: 1239
#32: 2010-08-30 16:47:18 ЛС | профиль | цитата
Вечером посмотрю (сейчас на работе )
------------ Дoбавленo в 16.47:
ser_davkin, А эту строку инфо смотрел - For "Roland SC-88 Pro" (GS) ?
Так что со всеми претензиями к производителям синтезетора Roland.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1535
Рейтинг: 176
#33: 2010-08-31 09:13:34 ЛС | профиль | цитата
А вот этот ещё интереснее! Караоке проигрыватель Vanbasco's отображает английский текст (не транскрипцию), а если извлечь текст "нашим" алгоритмом, то текст на русском. Похоже остальные из 35 карфайлов заточены под своеобразный алгоритм. Где бы его найти

http://www.hiasm.com/forum_serv.php?q=56&id=1727
------------ Дoбавленo в 22.24:
Выяснил! второй текст забит в мета-тег FF05, алгоритм тот же (стандартный), но как быть с русским текстом?
------------ Дoбавленo в 09.13:
Эврика! В каждом текстовом блоке нужно просто отсеч всё после нулей и всё! Жаль только самому себе рейтинг не подымешь.

Add(MultiElement,6586670,434,147)
{
@Hint=#14:Тег FF01, FF05|
AddHint(-18,54,90,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,14521828,21,21)
{
EventCount=1
WorkCount=1
Width=916
Height=319
link(doWork1,6840948:doOpen,[(45,27)(45,55)])
}
Add(For,11328692,427,140)
{
Start=1
Step=2
InData=0
link(onEvent,1047240:doCopy,[])
link(onStop,13410739:doEvent1,[(470,153)(470,258)])
}
Add(Copy,1047240,511,140)
{
Count=4
link(onCopy,2185974:doCompare,[])
link(Str,2605609:Var2,[])
link(Position,15952115:Var3,[(524,93)])
}
Add(If_else,2185974,553,140)
{
Op1=String(FF01)
link(onTrue,11367187:doWork2,[])
link(onFalse,12121326:doCompare,[])
}
Add(MathParse,5142040,672,70)
{
MathStr="%1 + 4"
ResultType=0
Point(reCalc)
link(X1,9643148:Var3,[(678,44)])
}
Add(Copy,8909672,672,140)
{
Count=2
link(onCopy,6474743:doConvert,[])
link(Str,12550593:Var2,[])
link(Position,5142040:reCalc,[])
}
Add(GetDataEx,2605609,511,112)
{
Angle=3
link(Data,1656941:Value,[(480,117)(480,188)(307,188)])
}
Add(GetDataEx,15952115,497,88)
{
Angle=3
link(Data,11328692:Position,[(403,93)(403,181)(433,181)])
}
Add(Convertor,6474743,714,140)
{
Mode=5
link(onResult,3172288:doOperation,[])
}
Add(Copy,8892528,805,140)
{
link(onCopy,778308:doWork1,[])
link(Str,12550593:Var3,[(811,117)])
link(Position,15224790:reCalc,[])
}
Add(GetDataEx,12550593,672,112)
{
Angle=3
link(Data,2605609:Var3,[])
}
Add(StrCat,1566078,581,210)
{
Point(doClear)
link(Str1,10961198:Var1,[(587,198)(568,198)(568,261)])
}
Add(GetDataEx,10961198,581,256)
{
link(Data,1566078:Result,[])
}
Add(Stream2Hex,7430455,581,273)
{
Mode=1
Point(Position)
link(onResult,7825033:doConvert,[])
link(Data,10961198:Var2,[])
}
Add(Stream2Hex,7825033,623,273)
{
Mode=4
Point(Position)
link(onResult,11593055:doReplace,[])
}
Add(Math,3172288,756,140)
{
OpType=2
Op2=2
ResultType=0
link(onResult,8892528:doCopy,[])
}
Add(Replace,3037024,833,273)
{
SubStr="/"
DestStr="\r\n"
link(onReplace,12574855:doReplace,[])
}
Add(Replace,12574855,875,273)
{
SubStr="\"
DestStr="\r\n\r\n"
link(onReplace,14521828:onEvent1,[(918,279)(918,27)])
}
Add(Replace,11593055,665,273)
{
SubStr="@T"
DestStr="\r\n"
link(onReplace,2910872:doReplace,[])
}
Add(Replace,2910872,707,273)
{
SubStr="@L"
DestStr="\r\n"
link(onReplace,6339562:doReplace,[])
}
Add(Hub,13410739,511,252)
{
OutCount=3
link(onEvent1,7430455:doConvert,[(553,258)(553,279)])
link(onEvent2,1566078:doClear,[(553,265)(553,223)])
}
Add(Memory,1656941,301,140)
{
@Hint=#10:Здесь блок|16:с информацией и |15:с текстом песни|
link(onData,14720984:doLength,[])
AddHint(-51,-67,91,39,@Hint)
}
Add(Length,14720984,343,140)
{
link(onLength,11328692:doFor,[])
}
Add(MathParse,15224790,805,70)
{
MathStr="%1 + 6"
ResultType=0
Point(reCalc)
link(X1,9643148:Var1,[(811,33)(587,33)])
}
Add(Replace,7192113,245,140)
{
SubStr="FF01FF01"
DestStr="FF01"
link(onReplace,1656941:doValue,[])
}
Add(Replace,6339562,749,273)
{
SubStr="@K"
DestStr="\r\n"
link(onReplace,13893298:doReplace,[])
}
Add(Replace,13893298,791,273)
{
SubStr="mid"
DestStr="mid\r\n\r\n"
link(onReplace,3037024:doReplace,[])
}
Add(GetDataEx,9643148,581,39)
{
Angle=3
link(Data,15952115:Var1,[(503,44)])
}
Add(BlockFind,12902020,77,140)
{
StartBlock="4D54726B"
EndBlock="FF2F00"
link(onSearch,7934278:doCompare,[])
}
Add(StrMask,6053798,189,168)
{
Mask="*FF01*"
link(onTrue,14521044:doWork3,[(233,181)])
}
Add(StrMask,7934278,133,140)
{
Mask="*FF05*"
link(onFalse,6053798:doCompare,[(177,146)(177,174)])
link(onTrue,14521044:doWork2,[])
}
Add(HubEx,14521044,229,147)
{
Angle=3
link(onEvent,7192113:doReplace,[(233,146)])
}
Add(If_else,12121326,602,147)
{
Op1=String(FF05)
link(onTrue,11367187:doWork3,[(655,153)])
}
Add(HubEx,11367187,651,140)
{
link(onEvent,8909672:doCopy,[])
}
Add(MultiElement,778308,854,140)
{
@Hint=#6:Фильтр|
link(onEvent1,1566078:doStrCat,[(898,146)(898,188)(543,188)(543,216)])
AddHint(-12,-31,55,13,@Hint)
}
BEGIN_SDK
Add(EditMulti,3336466,21,21)
{
EventCount=1
WorkCount=1
Width=489
Height=179
link(doWork1,12546681:doValue,[(45,27)(45,76)])
}
Add(Memory,12546681,70,70)
{
link(onData,5785377:doLength,[])
}
Add(For,4989567,203,70)
{
Start=1
Step=2
InData=0
link(onEvent,508834:doCopy,[])
link(onStop,7538839:doEvent1,[(259,83)(259,146)])
}
Add(Copy,508834,266,70)
{
Count=2
link(onCopy,323171:doCompare,[])
link(Str,12546681:Value,[(272,50)(160,50)(160,114)(76,114)])
link(Position,4989567:Position,[(279,58)(244,58)(244,114)(209,114)])
}
Add(If_else,323171,315,70)
{
Op2=String(00)
link(onTrue,4989567:doStop,[(357,76)(357,37)(191,37)(191,83)])
link(onFalse,8215654:doStrCat,[])
}
Add(StrCat,8215654,392,77)
{
Point(doClear)
link(Str1,15262046:Var1,[(398,65)(379,65)(379,121)])
}
Add(DoData,13362810,385,140)
{
link(onEventData,3336466:onEvent1,[(471,146)(471,27)])
link(Data,15262046:Var2,[])
}
Add(GetDataEx,15262046,385,116)
{
Angle=1
link(Data,8215654:Result,[(398,121)])
}
Add(Length,5785377,119,70)
{
link(onLength,4989567:doFor,[])
}
Add(Hub,7538839,322,140)
{
link(onEvent1,13362810:doData,[])
link(onEvent2,8215654:doClear,[(364,153)(364,90)])
}
END_SDK
Add(Stream2Hex,7720206,133,49)
{
Point(Position)
link(onResult,12902020:doSearch,[(177,55)(177,113)(64,113)(64,146)])
link(Data,6840948:Stream,[(139,37)(114,37)(114,96)(76,96)])
}
Add(FileStream,6840948,70,49)
{
link(onLoad,7720206:doConvert,[])
}
END_SDK
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
Голосовали:Леонид
Ответов: 8887
Рейтинг: 823
#34: 2010-08-31 09:31:44 ЛС | профиль | цитата
ser_davkin, [flood]Давно так не смеялся [/flood]
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#35: 2010-08-31 09:56:49 ЛС | профиль | цитата
[flood]
ser_davkin писал(а):
Выяснил! второй текст забит в мета-тег FF05
Открываем Америку !
nesco тебя давно туда посылал http://ru.wikipedia.org/wiki/MIDI , а ты видно ссылку принял за ругательство.
Там и про то, что ты "Выяснил !" и про "Эврика!" написано (между прочим, на русском языке...)
[/flood]

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1535
Рейтинг: 176
#36: 2010-08-31 22:26:33 ЛС | профиль | цитата



карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 194
Рейтинг: 2
#37: 2018-11-08 01:25:33 ЛС | профиль | цитата
Помогите создать простой караоке плеер.
http://forum.hiasm.com/topic/67160

--- Добавлено в 2018-11-08 01:29:23

Не могу понять где kar файл хранит информацию о времени текста
Слог начинается с FF01... есть текст, а где время?
http://forum.hiasm.com/getfile/38504

Редактировалось 2 раз(а), последний 2018-11-08 01:29:23
карма: 0

0
Ответов: 1535
Рейтинг: 176
#38: 2018-11-08 15:07:11 ЛС | профиль | цитата
lisnic, не знаю, как можно вычислить время, не пробовал.
Мне нужно было только выдернуть текст, поэтому на временные метки, такты и прочее я не обращал внимание. Я просто находил блок FF01 далее следовало число, обозначающее длину текста. И так по циклу, пока не натыкался на код FF2F, что означало конец трека. И всё.

Но могу дать ссылку, где более менее подробно об этом рассказывается. Должно помочь.
http://www.muzoborudovanie.ru/articles/midi/midi5.php

Редактировалось 2 раз(а), последний 2018-11-08 15:11:49
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 194
Рейтинг: 2
#39: 2018-11-10 03:59:41 ЛС | профиль | цитата
ser_davkin, пока не разобрался, как из "81 55" сделать время

kar time
карма: 0

0
Ответов: 2193
Рейтинг: 673
#40: 2018-11-10 14:57:45 ЛС | профиль | цитата
lisnic писал(а):
как из "81 55" сделать время
А почему вы хотите сделать время из этого? У вас темп записан как FF 51 09 27 C0.
А можете свой player1.kar выложить?

Редактировалось 2 раз(а), последний 2018-11-10 15:23:30
карма: 10

0
Ответов: 2193
Рейтинг: 673
#41: 2018-11-10 17:33:08 ЛС | профиль | цитата
Понял что вы пытаетесь вычесть. Смотрите тут: http://www.muzoborudovanie.ru/articles/midi/midi2.php (Байты данных).
Вкратце: если один байт, то это число максимум 127 так как отнимется первый бит у байта. Если числа два, то отнимаем у каждого байта по первому биту, умножаем первое на 128 и прибавляем второе число.
sla8a писал(а):
А можете свой player1.kar выложить?


Редактировалось 3 раз(а), последний 2018-11-10 17:42:30
карма: 10

0
Ответов: 194
Рейтинг: 2
#42: 2018-11-10 19:49:29 ЛС | профиль | цитата
sla8a, вот файл. Мне надо определить время слова "Mi". В Cakewalk мне показывает время 00:00:02:09
http://forum.hiasm.com/getfile/38506

Редактировалось 1 раз(а), последний 2018-11-10 19:49:55
карма: 0

0
Ответов: 2193
Рейтинг: 673
#43: 2018-11-10 22:48:26 ЛС | профиль | цитата
lisnic, раньше мне не приходилось считать точное время, так что могу ошибаться. Но вот как это вижу. В вашем файле
player1kar.PNG

во втором блоке (треке) первая пауза равна 460 вторая 213.
Подглядывая на формулу у меня получается:
460 * (600000 / 120) / 1000 = 2300 (2,3 секунды)
213 * (600000 / 120) / 1000 = 1065 (1,065 секунды)
Выходит что Mi появится на 2,3 секунде, а на 3,365 секунде (2,3 + 1,065) появится Fa.

А вообще почитайте про формат файла midi поподробней. Ваша задача сильно отличается от задачи ТС (ser_davkin), в том плане что она сложнее (обратите внимание на последний абзац в вашем скриншоте выложенном постом выше).

Редактировалось 1 раз(а), последний 2018-11-10 22:50:12
карма: 10

0
Ответов: 194
Рейтинг: 2
#44: 2018-11-12 04:04:45 ЛС | профиль | цитата
sla8a, большое спасибо...
Только я не понял, откуда ---460---, ---213--- ?
карма: 0

0
Ответов: 2193
Рейтинг: 673
#45: 2018-11-12 10:57:13 ЛС | профиль | цитата
lisnic писал(а):
Только я не понял, откуда ---460---, ---213--- ?

sla8a писал(а):
Смотрите тут: http://www.muzoborudovanie.ru/articles/midi/midi2.php (Байты данных).


Редактировалось 1 раз(а), последний 2018-11-12 10:58:38
карма: 10

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)