Автор Тема: Исходник Метронома  (Прочитано 2381 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #15 : Мая 03, 2007, 19:26:16 »
sapun

Выложенные тут исходники я не смотрел, но единственный вариант получить стабильный и точный метроном - непрерывно генерировать аудио поток и посылать его на аудиокарту.
Всё несложно: на каждую секунду выделяешь (если в CD качестве) 44100 * 2 канала * 2 байта на сэмпл = 176400 байтовый буффер, заполняетшь его тишиной (нулями) а потом берёшь сэмплы щелчков и расставляешь их так, чтобы соответствовали по времени. Например если расставлять их по 4 на такой секундный буффер (позиции сэмплов 0, 11025, 22050 и 33075) , то получатся щелчки четвертными в темпе 60. Вдвое плотнее - темп 120 и т.д. арифметика простая.
Всё остальное типа виндушный таймер и тому подобные методы для реально точного метронома не годятся - чересчур зависят от загруженности процессора.

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #16 : Мая 04, 2007, 14:50:57 »
Спасибо, но я ничего не понял..

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #17 : Мая 04, 2007, 20:45:07 »
Спасибо, но я ничего не понял..

Странно, я постарался максимально упрощённо описать.

А чего ты ожидал?

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #18 : Мая 04, 2007, 22:02:55 »
Я думал это как-то проще - задать нужное время задержки звука-семпла, и изменять его, тем самым задавая темп(примерно такой алгоритм я встретил в инете). Только я не знаю как время задержки пересчитать в темп.
А твой метроном написан по тому алгоритму, что ты написал в предъидущем посте?

Оффлайн Kanti

  • Новичок
  • *
  • Сообщений: 52
  • Репутация: +11/-5
  • Зарегистрированный
Re: Исходник Метронома
« Ответ #19 : Мая 04, 2007, 22:57:53 »
Винда, если верить Рихтеру, отмеряет временные интервалы с погрешностью 10мс. Вытесняющая многозадачность. :) Так что метроном будет съезжать. Особенно в быстрых ритмах и при сильной загрузке проца. А Армен толково придумал: чуть-чуть попариться, сформировать поток и пульнуть его прямо в звуковуху. У звуковухи погрешности нет..

Время задержки правильно считать так:
Timer1.Interval:=60000 div TrackBar1.Position;
Мог бы и сам подумать. :)

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #20 : Мая 04, 2007, 23:26:13 »
Сыпасибо. А Арменовкую придумку как будет время реализую. А в диплом дерьмо воткну. :)
Всем Спасибо.

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #21 : Мая 04, 2007, 23:32:04 »
Я думал это как-то проще - задать нужное время задержки звука-семпла, и изменять его, тем самым задавая темп(примерно такой алгоритм я встретил в инете).

Kому задать? Kому менять?

А твой метроном написан по тому алгоритму, что ты написал в предъидущем посте?

Да.

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #22 : Мая 04, 2007, 23:38:22 »
менять время задержки с помощю собственного таймера.

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #23 : Мая 04, 2007, 23:39:19 »
Винда, если верить Рихтеру...

Проблема исходит не от этих 10мс. Будь там хоть 1 наносекунда, всё равно бы не годилось - время, выделяемое потокам, от частоты квантования не сильно зависит, тут всё делает менеджер потоков. А он никому ничего не должен - винда не ОС реального времени. Вот и выделяет как Бог на душу положит.
Так что я думаю любая программа, которой нужен предсказуемый вывод аудио, должна делать так, как я описАл, чтобы переложить задачу управления временем на саунд карту - она-то как раз и является риалтайм устройством - на многих даже возможность подключения внешнего генератора времени есть для точного синха с другими устройствами.

P.S. Kстати Рихтер правильный мужик - говорят джазрок играет на барабанах. :)

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #24 : Мая 04, 2007, 23:44:32 »
Но тогда получается данный процесс будет блокиповать вывод звука из другого потока?

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #25 : Мая 04, 2007, 23:49:48 »
Только на допотопных синглдуплексных картах. Все современные, даже дешёвые, карты позволяют выводить одновременно несколько потоков. И не только выводить но и вводить/выводить одновременно.

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #26 : Мая 04, 2007, 23:53:37 »
В недоработанных системах вывода звука типа ALSA или OSS это может глючить.

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #27 : Мая 05, 2007, 00:00:59 »
А разве мы не о винде говорим?

Оффлайн sapun Автор темы

  • Завсегдатай
  • ***
  • Сообщений: 395
  • Репутация: +167/-129
  • Shit Happends
Re: Исходник Метронома
« Ответ #28 : Мая 05, 2007, 00:06:32 »
О винде. Это я отвлёкся. Я вообщето в лине живу. В винду для записи, или учёбы вылезаю.  А насчёт звуковух - слышал я что в висте что-то странное замутили - софтовая звуковая система, которой до фене железо. Будь у тебя C-Media или SB Live воспроизводит одинаково.

Оффлайн Armen

  • Ветеран форума
  • ******
  • Сообщений: 6845
  • Репутация: +466/-72
  • Или Армен
    • http://guitar.armenm.com
Re: Исходник Метронома
« Ответ #29 : Мая 05, 2007, 00:12:22 »
Насчёт Линукса я не в курсе - я там вообще не в теме. Но, честно говоря, не думаю, что у звуковой системы могут быть проблемы - там всё достаточно примитивно.

И насчёт Висты, в этом плане, тоже не в курсе - честно говоря не очень ясно, что означает "воспроизводит одинаково".