DSP програмиране

9 отговора 0 прегледа
#1

DSP програмиране

някой да се е занимавал с DSP програмиране (DSP - digital signal processing).

по-конкретно - обработка на wave буфери - различни логики за филтри, ефекти и т.н. ?

Отговор
в отговор на Ц++ #2

Re: DSP програмиране

Какво по-точно те интересува? Директната манипулация на wave-потока не е най-приятното и лесно нещо, по-тъпото е, че и DirectShow е същата боза. Но има начини ...

Mixy
Отговор
в отговор на Mixy #3

Re: DSP програмиране

точно директната манипулация ме интересува. като например налагания на low-pass филтри, ресемплирания (от по-високо ниво, не линейни), и т.н.

мисля че тук ще трябва повечко да попрочета за FFT (fast fourier transform), което би се ползвало, но не знам откъде да почна (пък и модела на трансформация е доста оптимизиран и със загуби).

това по-конкретно ми е интересно. в свободното си време бутам едно проектче по въпроса и идва времето, когато да почна да позадълбавам в детайлите (където мога разбира се).

Отговор
в отговор на Ц++ #4

Re: DSP програмиране

Директната манипулация на wave буферите под Win32 е възможна само ако си пускаш музиката със собствен плеър. В смисъл, зареждаш буфер, обработваш го и го плейваш. Това е и най-чистия подход, но е доста трудоемък. Другия вариант е същото нещо, но през DirectShow. Там вече не ти е нужен собствен плеър, защото можеш да прехванеш който и да е медиен поток (при съответните настройки). И последно - можеш да напишеш DSP плъгин за WinAmp. Самите манипулации са чиста математика (дискретни структури, числени методи, FFT и т.н.), с тях не мога да ти помогна много, но Google би трябвало да може. Иначе, има доста свободни библиотеки по въпроса, вкл. и компоненти на Delphi. Хвърли око на deAudio, DSMixer, Wave Audio pack, както и на DSP API-то на NullSoft за WinAmp плъгини.

Успех!

Mixy
Отговор
в отговор на Mixy #5

Re: DSP програмиране

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

Директната манипулация на wave буферите под Win32 е възможна само ако си пускаш музиката със собствен плеър. В смисъл, зареждаш буфер, обработваш го и го плейваш. Това е и най-чистия подход, но е доста трудоемък.

да директна манипулация правя. и аз си мислех че е трудоемък и кофти да се направи, но от един експеримент и опит и лека полека стигнах доста далече:

[линк]
[линк]
[линк]

като цяло wave-table синтеза работи добре (с всичките познати опции). разчита и зарежда до момента SF2 (SoundFont), инструменти на различни тракери (FastTracker, ImpulseTracker, Composer 669), разбира се WAV и AU файлове. въобще звуци откъдето искаш намираш, зареждаш и използваш като инструменти (автоматично се ресемплират и транспонират в конкретния тон, с криви на затихване, volume envelope, panning, delay/attack/hold/decay/release/sustain и т.н. опции ... въобще както каза доста математика).

това, което последно му добавих е поддръжка на VST филтри (за разлика от DirectX филтрите, VST филтрите са в хиляди пъти в повече, благодарение на насочеността си). с поддръжката на VST вече му отворих архитектурата и функционалността до невъобразими размери (засега само VST ефекти/филтри, но скоро ще добавя и VST инструменти, само да финализирам track editor-а).

само че, това което осъзнавам е, че има нужда от compressor и limiter на всеки канал. и вместо да се мъчиш да закачаш по 2 VST филтъра (един компресор и един лимитер) ще е добре да са като опции вградени в самата програмка. по удобно е. затова ми трябва обаче да понавляза малко в тази насока и да попрочета.

Отговор
в отговор на Ц++ #6

Re: DSP програмиране

Да, наистина е най-добре ако има с кого да поговориш и да споделиш идеи и решения. Аз също се занимавам с разработка на аудио-софтуер в свободното си време, но в малко по-различна насока. А свободното време за целта все не достига и ... абе знаеш как е . Scr-шотовете са доста добри - поздравления! Относно компресиорите и ограничителите - задължително ли е да са софтуерни? Новите SB X-Fi карти разполагат с много мощни процесори и ако ти се занимава, можеш да им хвърлиш едно око и да видиш, дали не е възможно да изнесеш част от обработките директно на хартдиерно ниво. Аз обаче още не съм стигнал до тях и едва ли мога да помогна с нещо конкретно. Но давай смело напред и ако изникне нещо свиркай, пък ще помагаме с каквото можем.



Mixy
Отговор
в отговор на Mixy #7

Re: DSP програмиране

след като написах поста и го погледнах и ми се изправиха косите!
защото малко дълъг се получи този пост, но реших, че трябва да отбележа и спомена всичките тези детайли, че да се приодбие представа за концепцията, тъй като може би доста неясно и объркано подхвърлих във форума темата и след това пуснах повече инфо за проектчето над което се бъхтя за забавление напоследък


ами идеята ми е всичко да е софтуерно така че да работи на всякаква обикновена звукова карта.

значи последите години (като фен) се забавлявам с Cubase на Steinberg. най-вече силно ползвам MIDI интерфейсите му, защото имам SoundBlaster LIVE! Platinum с динамично заредими звуци. разбира се, този модел не сработва на обикновени карти, а и като отбележим че ако си намеря един инструмент като WAV файл и искам да го заредя в звуковата си карта трябва да стартирам един куп софтуери (Vienna напр.) за да го запиша като SoundFont и т.н. и т.н.

от друга страна пък съм от ученическите си години фен на FastTracker който софтуерно рендва звуците и в това отношение е много по-гъвкав.

и така се стигна до идеята да се пробвам да направя този хибрид, който засега само приятели могат да тестват, но скоро смятам да пусна и първата публична бета версия (макар и още доста недовършена), само да ошлайфам VST детайлите.

идеята на проекта е да предостави средата на Cubase (традиционната на секвенсърите) обаче със СОФТУЕРНО емулиране на wave-table синтеза. плюс, разбира се, VST филтрите (а и след това един ден и VST инструментите).

има такова богатство от VST филтри, че могат да се постигнат какви ли не ефекти вече и неща (има хиляди безплатни лимитери, компресори, reverb-филтри и т.н., които може да се ползват). и НЕ ТРЯБВА да се слиза въобеще на хардуерно ниво, не само защото целта е 100% софтуерен синтез, но и защото има НЕВЕРОЯТНО огромно богатство от VST филтри, които всеки може да ползва.

искам тази програмка да може да я ползва всеки на домашния си компютър с най-проста и обикновена звукова карта. самата концепция е да е хибрид между секвенсър и тракер (като MIDI изцяло се изолира и емулира на софтуерно ниво с каквито си щеш звуци за инструменти откъдето си набавиш).

като цяло - нито преоткривам топлата вода (VST филтри, wave-table синтез, и т.н.), нито се мъча да правя нещо ново и революционно. просто СМЯТАМ, че трябва да има един по-приятен и лек хибрид от всичко, което до момента познаваме в тази насока и то да е 100% софтуерно.

дори track-editor-а още не съм го финализирал, защото искам да има 2 начина за редактиране - Cubase-ски и FastTracker-ски (все едно и също е - ноти, но в различен редакторски интерфейс представени).

ЕТО ЗАТОВА не искам да се мисли за хардуерни ускорители и особености, защото до момента колкото са ми помагали (като фен музикант), толкова са ме и спъвали щом разчитам на тях и автоматизацията им (а и зависимостта на софтуера от тях, прави крайно ограничена аудиторията и полезността му).

Отговор
в отговор на Ц++ #8

Re: DSP програмиране

Ясно, разбрах те, идеите ти са добри!



Mixy
Отговор
в отговор на Ц++ #9

Re: DSP програмиране

Далеч съм от темата, но браузвайки си, преди дни ми попадна един сайт, и разчитайки домейн-а, предполагам че е на българи. Доколкото виждам, пак казвам далеч съм от темата, хората предлагат палитра от компоненти за това. URL е
[линк] Може пък да откриеш нещо интересно

Отговор
в отговор на Ивaнчo #10

Re: DSP програмиране

ще погледна да видя дали нещо ще свърши работа ! благодаря !

Отговор