Конференция "Media" » Декодировка и синтез звукового потока [D7, WinXP]
 
  • FILCHERD © (18.08.10 16:00) [0]
    Люди. Есть такая задача. Нужно создать программу, которая будет захватывать звук (с микрофона), разделять его на пики и записывать в массив. Допустим, частота дискретизации 44100Гц значит программа обработая звук запишет в массив 44100 значений замера звука. За следующую секунду программа просто перепишет массив аналогичным образом. Далее этот массив обработает некий алгоритм и уже из полученных данных синтезирует звук, и выведет его через динамики.
    Я сам пытался разобраться в этом на примере исходников, но так ничего и не понял. Помогите пожалуйста, а то в мультимедии на Делфи Я новичок. :)
  • Сергей М. © (20.08.10 15:15) [1]

    > так ничего и не понял


    Что конкретно не понял ?
  • FILCHERD © (20.08.10 15:42) [2]
    Как это реализовать. Там вроде API функциями орудовать надо. Пытался разобраться по исходникам. Могу выложить или ссылки кинуть.
  • FILCHERD © (20.08.10 15:51) [3]
  • Сергей М. © (20.08.10 15:55) [4]

    > Там вроде API функциями орудовать надо


    Нечего новичку лезть в WinAPI.
    Используй готовые сторонние дельфийские компоненты, например, New Audio Components
  • FILCHERD © (20.08.10 16:13) [5]
    По WinAPI хоть документация есть, а у этих New Audio Components всё на английском. Хотя, если ты знаешь как это с помощью New Audio Components сделать, буду рад услышать.
  • Сергей М. © (20.08.10 16:20) [6]
    Учи английский, без него никуда.
  • FILCHERD © (20.08.10 16:24) [7]
    Инглиш то знаю, а доков по компонентам не густо.
  • Сергей М. © (20.08.10 16:37) [8]

    > Инглиш то знаю


    Если знаешь, то в чем проблема ?
    На сайте производителя этого пакета компонентов есть онлайн-версия документации.
  • FILCHERD © (20.08.10 17:23) [9]
    Но там не написано как разбивать и синтезировать звуковой поток по сэмплам. Не наугад же искать функцию типа RenderSample() или GetSample(). Если знаешь чего по этим компонентам, то можешь подсказать.
  • Сергей М. © (20.08.10 17:49) [10]
    Ну возьми компоненты попроще, если NAC совсем уж новые ворота

    http://sourceforge.net/projects/deaudio/

    Там достаточно понятная даже для новичков событийная модель
  • FILCHERD © (20.08.10 19:19) [11]
    Мда... Опять не то. Ну во первых там нечего качать. Во вторых вряд ли
    "This set of audio components will allow you to play, record, and compress audio data." поможет Мне распотрошить поток на семплы... Ну а в третьих опять те же примеры. Незная теории не поднять самолёт в воздух...
  • FILCHERD © (20.08.10 19:21) [12]
    Похоже опять прийдётся сношаться с API и мучать знакомых, знакомых с Делфи... :)
  • Сергей М. © (20.08.10 21:29) [13]
    http://www.torry.net/authorsmore.php?id=2148

    > распотрошить поток на семплы

    Не надо ничего "потрошить". Все уже "распотрошено".
  • Pavia © (22.08.10 21:11) [14]

    > Нечего новичку лезть в WinAPI.Используй готовые сторонние
    > дельфийские компоненты, например, New Audio Components

    Плохой совет. В вин API все чисто и прозрачно. Или почти.

    А чтобы было понятно советую почитать Ритхера.
    Лучше два буфера один обрабатываешь во второй пишешь. потом меняешь местами.
  • FILCHERD © (23.08.10 10:58) [15]
    А кто этот Ритхер и где его взять? Я ведь даже основ аудио в делфи не знаю, имею только небольшие теоретические представления об этом.
  • FILCHERD © (24.08.10 02:18) [16]
    А буфер это массив? Как из него можно переписывать данные и записывать в него? Мне бы примеры кода по обработке звука. В New Audio Components нашёл много интересных компонентов, да вот как-то дело не продвигается. Непонятно как с этим работать. Функции кагбе не те, которые Я хотел бы видеть...

    А насчёт аудио... Как Я себе это представляю сейчас опишу. Буду опираться на New Audio Components, т.к. WinAPI Я вообще не знаю. Ежели чего неправильно поправляйте.
    Итак. Сначала программа должна инициализировать устройство. В NewAC устройство выбирается по номеру (DeviceNumber). Далее каким-то неизведанным Мне алгоритмом (по крайней мере функции DXAudioIn.Run нет, а сам по себе DXAudioIn не даёт о себе знать) должен активироваться DXAudioIn и начать запись семплов в буфер. Буфер (по-моему) это некий массив, который служит для хранения значений замера звука (семплов) и перезаписывается каждый раз, когда запись доходит до конца. Тоесть если частота дискретизации 44100Гц и буфер размером больше третьего... шутка. :) размером 44100 значений (0..44100), то он будет обновляться каждую секунду. Если на 22050 значений, тогда обновление каждую 0.5 секунду и.т.д.
    Выводится аудио похожим способом (по моему). Данные берутся из буфера, преобразуются в сигнал, смешиваются с другими в Виндовс, через ЦАП звуковухи импульсы идут в динамик, а потом летят к нам в ухо, что уже не особенно важно.:)
    Дык вот вернёмся к нашим баранам. Меня интересует несколько вещей.
    1)Как заставить DXAudioIn работать на Меня.
    2)Как из DXAudioIn буфера скопировать данные в массив.
    3)Как заставить уже DXAudioOut Мне подчиняться, и куда ему, в какой буфер (если есть) вставлять Мой массив и как.
    Напомню. Входной массив обрабатывает "некий алгоритм" (это уже не важно) и выдаёт в выходной.

    Чем смогите помогите. Буду рад всему. Не обязательно это будет New Audio Components. Можно и API, но тут Я уже врядли разберусь, хотя... В общем любая помощь будет кстати. Но помните. В мультимедии Я ышо нуб. :)
  • Сергей М. © (24.08.10 09:47) [17]

    > Мне бы примеры кода по обработке звука. В New Audio Components


    Ну там же демо-проект AudioRecorder.dpr есть, в нем демонстрируется и запись и воспроизведение - чем он тебе не пример ?


    > 1)Как заставить DXAudioIn работать на Меня


    Он ни на кого кроме тебя не работает.
  • FILCHERD © (24.08.10 20:07) [18]
    Не работает этот DXAudioIn вообще. Его наверное как-то надо активировать.
    И проекта такого в Моей папке нет. Есть другие, но это не то.
    Сергей М. Я вижу ты толковый человек, и наверняка разбираешься в New Audio Components. Дык подскажи Мне пожалуйста как читать из буфера АКТИВНОГО DXAudioIn и заставить воспроизводить DXAudioOut массив значений сэмплов. А то эти буфера вообще непонятная штука, как и компоненты.
  • Сергей М. © (25.08.10 09:54) [19]

    > проекта такого в Моей папке нет


    Не знаю в какой такой "твоей", но папка Demo в штатном комплекте поставки пакета deAudio-компонентов быть обязана.

    http://delphi-lab.ucoz.ru/load/0-0-0-33-20
  • FILCHERD © (25.08.10 12:46) [20]
    Не. Я deAudio с http://www.torry.net/authorsmore.php?id=2148 качал. Там это дело вообще ~162Мб занимает. А в New Audio Components такого проекта нет. Всё верно.
  • FILCHERD © (25.08.10 13:16) [21]
    Мдауж! Теперь у Меня 3 пакета компонентов! New Audio Components, deAudio и AudioLab, и ни один из них Мне помочь не может потому, что Я не знаю, как из этой каши достать буфера и заставить компоненты работать! Вот и вся проблемма.!
  • Сергей М. © (25.08.10 15:13) [22]
    Ты демо-проект AudioRecorder посмотрел ? Работает ?
  • FILCHERD © (25.08.10 18:44) [23]
    Работает то работает, да не в файл Мне надо что то писать. Блин, чувак помоги кодом. Ведь задача не такая сложная, как Я думаю. Но в куче неизвестных компонентов, функций и типов данных истину сложно найти.
    Всего то читать из буфера записи в массив и запись из массива в буфер воспроизведения...
  • Сергей М. © (25.08.10 19:39) [24]

    > Блин, чувак


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


    > помоги кодом


    Код у тебя перед твоим чувачьим носом - в том самом демо-проекте.
    Переделать его для твоей задачи элементарно, надо только мозжечёк включить. Ничего там сложного. Да и справка есть.
  • 0x00FF00 © (25.08.10 20:57) [25]

    > Сергей М. ©   (25.08.10 19:39) [24]


    > надо только мозжечёк включить

    не сочтите за грубость, глубокоуважаемый сэр, но я вынужден Вас поправить: мозжечок.

    =)
  • Сергей М. © (25.08.10 21:20) [26]

    > 0x00FF00 ©   (25.08.10 20:57) [25]


    Благодарю Вас, сэр, Ваша поправка к месту.
  • FILCHERD © (25.08.10 22:41) [27]
    Сергей М. Тоже мне тут умник нашёлся! Я между прочим не в укор тебе писал всё это и не преследовал цель оскорбить тебя! Думаешь ты тут самый умный?! Да?! Это конечно не форум какой-нибудь игры Counter-strike, а приличное место и оскорблять Я никого не собирался, но запомни одну простую вещь ведь всё, что мы делаем к нам же и возвращается, а "умно" оскорбить могут многие, в том числе и ты решив, наверное, что  это будет забавно сделать с тем, кто пару дней назад залез в байду под названием "аудио в Делфи" и отчаявшись начал прибегать к такому панибратству в твоём отношении...
    Может ты и считаешь себя царём и богом, да вот только "Мастер Делфи" мог бы и просто привести пример такого ЭЛЕМЕНТАРНОГО кода, который даже новичок поймёт за "простоту событийной модели", а не развозить тему на сто бессмысленных сообщений при том, что Я не требовал Мне всё разъяснять. Просто код...
    И ещё. Ты конечно можешь сказать, что Я такая неблагодарная скотина (что уже сделал) и не понимаю, что якобы ты делаешь всё правильно и что если человек сам разберётся в теме, то он лучше её усвоит... НО! Надо правильно читать вопрос! Не объяснения, а КОД! Ведь ты тоже когда-то был нубом в Делфи и тоже задавал вопросы, и, наверное тоже писал программу с алгоритмом, который тебя не особо интересовал, но он был нужен.
    Вот и всё. Кстати. Ставя себя выше других надо адекватно оценивать ситуацию и понимать who is who не только в интернете. Ведь в инете ты "Мастер Делфи", а по жизни? Глист сушёный в скафандре с неудачной личной жизнью. Может Я и не прав, да вот только кто Я? Пацанчег из падваротни или сын мафиози? Или мэра? А? Ты ведь не знаешь так ведь? Так что будь аккуратен в выражениях именно ТЫ! Ненавижу когда меня оскорбляют не по теме! Я тебя не запугиваю (хотя ты скажешь, что и не боишься какого-то "сопляка") а говорю: Интернет тебя и твою личную жизнь не скроет и тебе придётся выключить компьютер и продолжить своё ничтожное существование... человечешко!!! Тьфу!!!!
  • Сергей М. © (25.08.10 23:34) [28]
    Песня)
  • Сергей М. © (25.08.10 23:37) [29]
    Ты считаешь, что с такой анкеткой

    Login: FILCHERD
    Реальное имя: Бандит
    Дата рождения: 09.09.9999 знак зодиака: Дева
    Город: Ирак
    Домашняя страница: http://www.fuck-you.com
    Пол: Мужской
    Образование: другое
    Увлечения / хобби
    Убийства, грабёж.
    Интересное о себе
    Убийца и вор! Хахаха.

    можно блинчувачить ?)
  • FILCHERD © (26.08.10 09:06) [30]
    Не, ну а чё, хорошая анкета. Про какую песню ты там говоришь? Сам виноват. Я к тебе просто обратился, а ты это всё перевернул и извратил, типо Я тебя унизить хочу.
  • FILCHERD © (26.08.10 09:10) [31]
    И нечего нос задирать и ставить себя выше других. По крайней мере заслуг то твоих не видно, разве что эмблемка "Мастер Делфи"(М).
  • 0x00FF00 © (26.08.10 11:28) [32]

    > типо Я тебя унизить хочу

    "Я" с заглавной. Переводная копипаста с английского детектед?

    ЗЫ,
    FILCHERD, что конкретно неясно с примером?
    Нужно, чтобы было от чего плясать.

    Писать весь код за тебя здесь едва ли кто-то станет, такова уж специфика ресурса, смирись.
    Ну, разве что ЮЗ вдруг снова продемонстрирует аттракцион неслыханной щедрости =)

    Так что или разбирайся и задавай вопросы (рассчитывая лишь на объяснения, но не на готовый кусок исходника), или ищи более подходящий ресурс.
  • FILCHERD © (26.08.10 12:44) [33]
    0x00FF00 ты первый заметил про аналог английского!:) Хоть ты адекватно разговариваешь. Ну, и на том спасибо.
  • QAZ (26.08.10 13:21) [34]

    > FILCHERD

    ты где живеш ? город
  • Сергей М. © (26.08.10 15:38) [35]

    > а чё, хорошая анкета


    Вот по "а чё" к тебе и отношение.
    Встречают-то по одежке)
    К "чуваку" и отношение "чувацкое".
    Или для тебя это новые ворота ?)
  • FILCHERD © (26.08.10 15:52) [36]
    Ирак, Багдад написано же. Ну да всё с вами понятно пару словечек про буфера, "чё" и Я уже не человек... Ладно. Помощи от вас Я больше и не дождусь так, что Гуд бай и тема Оффтоп!
  • Сергей М. © (26.08.10 16:24) [37]

    > Ирак, Багдад написано же


    Изволишь чтобы тебе перевели на "иракско-багдадский" справку к событию TdeCustomAudioIn.OnAudioRecorded ?)
    Не жирно будет ?)
    Может все же для сам сподобишься вникнуть в суть написанного там ?
  • FILCHERD © (26.08.10 18:13) [38]
    Не жирно не жирно. Прям не обсуждение, а перепалка какая-то! А про это событие первый раз слышу.
  • DiamondShark © (21.09.10 12:20) [39]
    Действительно, песня.

    FILCHERD, скажи, что в ЭТОМ:
    http://msdn.microsoft.com/en-us/library/dd798630(VS.85).aspx
    может быть непонятного? Четыре функции и две структуры?
 
Конференция "Media" » Декодировка и синтез звукового потока [D7, WinXP]
Есть новые Нет новых   [120157   +156][b:0][p:0.001]