purebasic.info

PureBasic forum
Текущее время: Ср янв 17, 2018 6:03 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Сб авг 08, 2015 9:53 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11077
Благодарил (а): 4 раз.
Поблагодарили: 384 раз.
Артём писал(а):
Unity3D
Зачем для такой простой графики нужен 3D движок?

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Пн авг 10, 2015 3:41 pm 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Пётр писал(а):
Артём писал(а):
Unity3D
Зачем для такой простой графики нужен 3D движок?

чтобы скомпилить на андроид :wink:

SereZa писал(а):
и еще момент. насколько я понял в VGM Music Maker инструмент создается путем кручения кучи параметров. видимо можно получить любое звучание, если знать куда крутить :) вот собственно вопрос: не существует ли специальной таблицы этих параметров для VGM для каждого из 127 midi инструментов? чтобы звучание как можно ближе к PC звучанию миди. понятно что Ямаха какая-нить рулит, и там миди звучит гораздо круче - однако хотелось бы поближе к PC варианту...

Скажи на кой тебе нужно деревянное звучание миди инструментов?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Пн авг 10, 2015 5:27 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
так нынешние конвертеры даже этого не делают. поэтому мне бы 100% попадание, чтоб как слышно как миди играет - точно так-же и запилить в редакторе :) два набора дали... где в одном чуть лучше, где в другом... а бывает оба варианта фигня. и то после конвертации все равно фигня выходит. где-то косяк.. не пойму где...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Вт авг 11, 2015 4:03 am 
Не в сети
GameC@Soft
Аватар пользователя

Зарегистрирован: Сб сен 22, 2007 12:45 pm
Сообщений: 1085
Откуда: Я из лесу вышел, и сразу зашел, в босоножках дырявых и взлядом ночным.
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
pablov писал(а):
Артём писал(а):
После ноты летят вниз, а тебе надо нажимать на нужные ноты на экране, и ты играешь уже Бетховена к Элизе...

Что-то у вас нажатие клавиш ну никак с мелодией не совпадают. Вы бы выложили скомпилированное приложение, а мы бы сами попробовали Людвига сыграть. А так - фотошоп какой-то

Пожалуйста: https://play.google.com/store/apps/deta ... iano&hl=ru

_________________
"Самый большой глюк в PureBasic - это твоя голова...." (с) Артем
Мой сайт: http://feelzone.org.ua/


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Вт авг 11, 2015 11:58 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6220
Благодарил (а): 16 раз.
Поблагодарили: 173 раз.
Пункты репутации: 48
Артём писал(а):
А я делал пианинко для андроида.. )

По ходу у программиста там номер 13-й :D
Главное хороший художник, а в крупных играх со смыслом, и сценарист и музыкант.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Вт авг 11, 2015 12:06 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
подскажите можно ли эту либу для миди перевести на юникод? не хочет работать с юникодной галкой :( viewtopic.php?f=8&t=437&start=15#p81295

проглядел команды, что там используются - понадеялся, что видимо где-то флаг надо доуказать чтоб читал не юникодно, а обычно - однако что-то не нашел к какой команде такой флаг можно указать.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Ср авг 19, 2015 12:24 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
из-за ограничений целевого формата, куда я намеревался конвертировать, а именно 1/24 наименьшая нота, а хотелось бы 1/128, плюнул и решил переделать всю математику. то есть если раньше массив запоминал только ноты и их длительности, что в конечном итоге из-за этой неточности приводили к рассинхронам ближе к концу трека, то теперь длинна массива равняется длине миди файла в тиках, или как там оне... и соответственно куча нулей в массиве и процентов 5 наверное всего под полезную нагрузку в виде нот.

однако в конечном итоге надо будет все равно пожать массив, чтобы он умещался в эти 1/24.

какая стратегия тут должна быть? мне на ум приходит пока что "сжимать" скажем с шагом в 5. что-то типа был:
00000 00000 00000 00100 00004

стал:
0 0 0 1 0 4

рассинхрон конечно будет, однако я надеюсь что скажем шаг в 5 - это достаточно мелко в масштабе этих мидишных "тиков". однако тут возникает второй вопрос - а коим образом отслеживать тогда скорость проигрывания? сейчас, массив без сжатия может играть с минимальным Delay - Delay(1), и то этого уже недостаточно для некоторых песен, что они начинают играть мееееееедленно :) пожатие массива должно будет помочь, однако я и с расжатым массивом то невдуплил каким образом высчитывать Delay, а уж с пожатым вообще мозг зависает... с миди должно помочь некое Delta Time, и я даж вроде какую-то статью нашел... только ничерта не понял - ну это как обычно... уж тем более там какие-то три темпа, а не один http://nokturnal.pl/home/atari/midi_delta . еще одна заморочка. хотя эти три мне вроде как знакомы - в сонаре я всегда удивлялся, почему значение bpm вроде как одно, а из-за пометки одного из трех темпов будет играть быстрее или медленнее.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Чт авг 20, 2015 9:28 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 354
Благодарил (а): 13 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
SereZa писал(а):
невдуплил каким образом высчитывать Delay, а уж с пожатым вообще мозг зависает... с миди должно помочь некое Delta Time, и я даж вроде какую-то статью нашел... только ничерта не понял - ну это как обычно... уж тем более там какие-то три темпа, а не один http://nokturnal.pl/home/atari/midi_delta . еще одна заморочка. хотя эти три мне вроде как знакомы - в сонаре я всегда удивлялся, почему значение bpm вроде как одно, а из-за пометки одного из трех темпов будет играть быстрее или медленнее.


Наверное тебе нужно вот это. В твоем случае BPM нужно переводить в Delay().
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
#MSEC         = 60000.0
#step_zoom  = 32 ; шаг минимальной ноты 1/32
Procedure Thread_Timer_Start(ll.l)
 
  Protected Ti
 
  While _Quit=0
    LockMutex(Mutex)
    ;d=ElapsedMilliseconds()-Ti
    With Timer
 
          PlayMidi(\MS)
         
          \MS=\MS+1
        del=(#MSEC/bpm)/#step_zoom
        Delay(del)
       
        ; Loop
        If \MS>MidiFile\len
          \MS=0
          MidiFile\inx_com=0
        EndIf
   EndWith
                  delta.f=(#MSEC/BPM)/96
                  SetCursorPosition(TimeToPix(Timer\MS*delta,ZooMX,BPM))
      UnlockMutex(Mutex)
 
  Wend
 
 
EndProcedure


Шаг можно укоротить и до 1/128 :wink:

А про автоматизацию темпа все просто. Ставишь метки по времени или по тикам (как там тебе удобно) и указываешь какой BPM. Если хочешь изнения про исходили по огибающей, то каждый шаг (в мс или тиках) изменения темпа корректируется по формуле. :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Вт авг 25, 2015 12:00 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
оказалось сам дурак :) громкость оказывается хоть и приходит с этим ивентом, но там нужен дополнительный параметр - 7. в моем случае там была 1 и это был некий модулятор чего-то там... буржуи подсказали :)

по поводу расчета делей у меня эта формула:
todelaytik = 100 * ( deltatime / (tempo / 10000) ) )
Delay(1000/todelaytik)

10000 - 1% от миллиона микросекунд в 1 секунде.
tempo / 10000 узнаем сколько % от секунды звучит 1/4 секунды
deltatime / % - узнаем сколько в 1% мидитиков
100 * 1% - узнаем сколько всего мидитиков в 1 секунде
1000/todelaytik - узнаем сколько миллисекунд выставлять в делее между тиками.

однако минимальное значение Delay(1), а эта формула может родить какойнить 0.45 результат скажем. то есть в этом случае мелодия будет проигрываться куда медленней, чем задумано. точнее с этим ограничением на целые числа в делей - при любом раскладе песня будет звучать в неверном темпе, но при если меньше 0 - то звучание даже близко не то.

для решения проблемы я решил попытаться пожать массив тиков, например кратно 5. и тогда формула изменяется:
todelaytik = (100 * ( deltatime / (tempo / 10000) ) )) / 5

после этого песни зазвучали практически как надо, разве что процентов на 5-10% медленнее. но это куда лучше чем % так 100 или все 200 медленнее оригинала :)

хотелось бы конечно научить делей делать паузы из 0.45... для более точно попадания...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Ср авг 26, 2015 1:49 pm 
Не в сети
GameC@Soft
Аватар пользователя

Зарегистрирован: Сб сен 22, 2007 12:45 pm
Сообщений: 1085
Откуда: Я из лесу вышел, и сразу зашел, в босоножках дырявых и взлядом ночным.
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Пункты репутации: 0
kvitaliy писал(а):
Артём писал(а):
А я делал пианинко для андроида.. )

По ходу у программиста там номер 13-й :D
Главное хороший художник, а в крупных играх со смыслом, и сценарист и музыкант.


Не понял шутку))

_________________
"Самый большой глюк в PureBasic - это твоя голова...." (с) Артем
Мой сайт: http://feelzone.org.ua/


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Синтез MIDI
СообщениеДобавлено: Пн дек 04, 2017 12:01 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1576
Откуда: Алматы
Благодарил (а): 12 раз.
Поблагодарили: 39 раз.
Пункты репутации: 5
из-за того, что 5.60 не поддерживает обычный, не юникодный режим - очень надо перевести миди библиотеку в юникод. начал ковырятся и сразу-же первый затык:
Код:
1
2
3
4
5
#MIDI_Chunk_Header = 'dhTM'
Debug #MIDI_Chunk_Header
 
;28147944353169485 юникод
;1684558925        обычный



эээ... а что там подразумевалось под этим самым 'dhTM', взятым в апострофы? что-то я несколько в танке :) перевод строки в цифровые значения?

***

приготовился такой ковырятся в малознакомом коде пол ночи... а тут выясняется что просто впилив #MIDI_Chunk_Header = 1684558925 вместо того что было и второй параметр также - и все заработало. даж как-то ощущаю себя обманутым :))) мож все-таки раскачаюсь допрограммить свой шедевр. ну не лежит душа и все тут. все тяжелые моменты вроде родил, все какие надо лисапеды изобрел, доделка осталась и все. запал пропал и не возвращается скатина.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB