Уважаемые программисты подскажите как из двух wav файлов сделать один. Всем кто ответит бубу очень признателен. Вот исходный код в чем там может быть ошибка. С помощью кода из 2 файлов (один музыка, другой голос) 1 получить можно, но голосовые данные воспроизводятся с шипением.
Здравствуйте, Semester, Вы писали:
S>Уважаемые программисты подскажите как из двух wav файлов сделать один.
Привести к общему формату и сложить амплитуды.
S>Вот исходный код в чем там может быть ошибка.
Вы действительно считаете, что другим подписчикам больше нечем заняться, кроме копания в Вашем исходном коде, который написан по не пойми какому алгоритму? Вам могут ответить на конкретные вопросы, а приводить код отнюдь не из пяти строк и спрашивать, где ошибка — это уже чересчур.
Евгений Музыченко wrote: > > > Привести к общему формату и сложить амплитуды.
Женя, ну и терпелив же ты. Это уже третий одинаковый вопрос за последний
месяц.
Здравствуйте, Vzhyk, Вы писали:
V>Евгений Музыченко wrote: >> >> >> Привести к общему формату и сложить амплитуды. V>Женя, ну и терпелив же ты. Это уже третий одинаковый вопрос за последний V>месяц.
Спасибо большое что откликнулись. Сижу рядом с другими программерами, а никто ничего не знает. Корпоративная солидарность, отсутствует полностью.
Превести к общему формату я могу, вроде как амплитуды складываю, а когда начинаю воспроизводить полученный файл в том месте, где должен быть текст шипение.
SongMix.RecordValue = 0; //Данные которые пишутся в 3 файл [тип DWORD]
SongMix.FirstValue — данные из 1 файла [тип DWORD]
SongMix.FirstValueSecondValue — данные из 2 файла [тип DWORD]
SongMix.RecordValue = (SongMix.FirstValue) + (SongMix.FirstValueSecondValue);
И что делать 3 день бьюсь. Если у вас есть какой нибудь пример вышлите пожалуйста.
Semester wrote: > > Спасибо большое что откликнулись. Сижу рядом с другими программерами, а > никто ничего не знает. Корпоративная солидарность, отсутствует полностью.
Мдас? Москва? И как так можно работать?
> > Превести к общему формату я могу, вроде как амплитуды складываю, а когда > начинаю воспроизводить полученный файл в том месте, где должен быть > текст шипение. > > SongMix.RecordValue = 0; //Данные которые пишутся в 3 файл [тип DWORD] > SongMix.FirstValue — данные из 1 файла [тип DWORD] > SongMix.FirstValueSecondValue — данные из 2 файла [тип DWORD] > SongMix.RecordValue = (SongMix.FirstValue) + > (SongMix.FirstValueSecondValue); >
Так и складывай, только учитывай, что может быть переполнение. В случае
переполнения, ставь максимальное значение амплитуды (в зависимости от
разрядности оцифрованного сигнала), не забудь про знак.
Если не важна корректность громкости, можешь при сложении разделить на
количество слагаемых.
Здравствуйте, Vzhyk, Вы писали:
V>Semester wrote: >> >> Спасибо большое что откликнулись. Сижу рядом с другими программерами, а >> никто ничего не знает. Корпоративная солидарность, отсутствует полностью. V>Мдас? Москва? И как так можно работать?
V>http://rsdn.ru/forum/NewMsg.aspx?mid=2431381
>> >> Превести к общему формату я могу, вроде как амплитуды складываю, а когда >> начинаю воспроизводить полученный файл в том месте, где должен быть >> текст шипение. >> >> SongMix.RecordValue = 0; //Данные которые пишутся в 3 файл [тип DWORD] >> SongMix.FirstValue — данные из 1 файла [тип DWORD] >> SongMix.FirstValueSecondValue — данные из 2 файла [тип DWORD] >> SongMix.RecordValue = (SongMix.FirstValue) + >> (SongMix.FirstValueSecondValue); >> V>Так и складывай, только учитывай, что может быть переполнение. В случае V>переполнения, ставь максимальное значение амплитуды (в зависимости от V>разрядности оцифрованного сигнала), не забудь про знак. V>Если не важна корректность громкости, можешь при сложении разделить на V>количество слагаемых.
Такой вопрос переполнение это когда получаемое значение выходит за границу типа данные ?
То есть получается мне сначала нужно получить значения, потом их перебрать найти max,
и далее заменить то что выходит за границу max значением. И только потом складывать и записывать.
Здравствуйте, Semester, Вы писали:
S>То есть получается мне сначала нужно получить значения, потом их перебрать найти max, S>и далее заменить то что выходит за границу max значением. И только потом складывать и записывать.
Ой, е-мое... Неужели так трудно взять листок бумаги, нарисовать на нем несколько графиков, сложить математически, и посмотреть, что получается? Если уж совсем не ориентируетесь ни в электротехнике, ни в математике — взять звуковой редактор (тот же Audacity, бесплатный) и поэкспериментировать?
Граница — это край диапазона значений, представимого выбранной разрядностью. Для 16-разрядных отсчетов граничными будут значения -32768 и +32767, для 32-разрядных — -2147483648 и +2147483647. Не нужно ничего перебирать и искать — ограничение нужно выпоолнять, складывая каждую пару отсчетов.