Thread View: pl.comp.lang.delphi
20 messages
20 total messages
Started by apl
Sun, 02 Jul 2017 13:38
odtwarzanie sztucznego sygnału
Author: apl
Date: Sun, 02 Jul 2017 13:38
Date: Sun, 02 Jul 2017 13:38
5 lines
1575 bytes
1575 bytes
Witam, chciałbym odtwarzać w czasie rzeczywistym w postaci dźwięku sztucznie generowany sygnał. Standardowy "Media player" pozwala odtwarzać tylko próbki pobierane ze wskazanego pliku typu .wav. Czy ktoś z kolegów mógłby mi podpowiedzieć, ewentualnie podzielić się kodem w tym problemie? Pozdrawiam. P.S. Pracuję z Delphi 2005. http://main3.amu.edu.pl/~apl/index.html
Re: odtwarzanie sztucznego sygnału
Author: J-23
Date: Sun, 02 Jul 2017 19:33
Date: Sun, 02 Jul 2017 19:33
15 lines
1652 bytes
1652 bytes
W dniu 02.07.2017 o 15:38, apl pisze: > Witam, > chciałbym odtwarzać w czasie rzeczywistym w postaci dźwięku sztucznie generowany sygnał. Standardowy "Media player" pozwala odtwarzać tylko próbki pobierane ze wskazanego pliku typu .wav. Czy ktoś z kolegów mógłby mi podpowiedzieć, ewentualnie podzielić się kodem w tym problemie? > Pozdrawiam. > P.S. Pracuję z Delphi 2005. > http://main3.amu.edu.pl/~apl/index.html > Witam, Piszesz o dośc głębokim temacie nie znając a przynajmniej tak wnioskuje po sposobie zadania pytania nawet podstaw. Napisz co konkretnie chcesz uzyskać i może wtedy uda się pomóc Pozdrawiam J-23
Re: odtwarzanie sztucznego sygnału
Author: Roman Tyczka
Date: Mon, 03 Jul 2017 09:06
Date: Mon, 03 Jul 2017 09:06
14 lines
1384 bytes
1384 bytes
On Sun, 2 Jul 2017 06:38:58 -0700 (PDT), apl wrote: > chciałbym odtwarzać w czasie rzeczywistym w postaci dźwięku sztucznie generowany sygnał. Standardowy "Media player" pozwala odtwarzać tylko próbki pobierane ze wskazanego pliku typu .wav. Czy ktoś z kolegów mógłby mi podpowiedzieć, ewentualnie podzielić się kodem w tym problemie? > Pozdrawiam. > P.S. Pracuję z Delphi 2005. > http://main3.amu.edu.pl/~apl/index.html To Ci powinno pomóc: http://www.delphiarea.com/products/delphi-packages/waveaudio/ -- pozdrawiam Roman Tyczka
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Mon, 03 Jul 2017 19:59
Date: Mon, 03 Jul 2017 19:59
4 lines
1672 bytes
1672 bytes
Dzięki, próbowałem to ruszyć, ale niczego nie da się uruchomić bo są odwołania do modułów, których nie posiadam, tj.: WaveUtils,WaveStorage, WaveIO,WaveOut,WavePlayers Pozdrawiam apl
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Mon, 03 Jul 2017 20:35
Date: Mon, 03 Jul 2017 20:35
3 lines
1833 bytes
1833 bytes
No, powiedzmy, generuję w pętli while kolejne wartości funkcji sinus, podaję do tego częstotliwość próbkowania i oczekuję, że usłyszę to natychmiast przez głośnik PC. Zakładam oczywiście, że odtwarzacz będzie sobie wybierał dane z jakiegoś własnego bufora dopełnianego z mojego programu. Chciałbym wpływać na słyszaną częstotliwość poprzez modyfikację parametru "częstotliwość próbkowania". Mógłbym oczywiście generować sygnał wav i odtwarzać go np. za pomocą Audacity, no ale wolałbym mieć to we własnym środowisku. Pozdrawiam apl
Re: odtwarzanie sztucznego sygnału
Author: J-23
Date: Mon, 03 Jul 2017 22:05
Date: Mon, 03 Jul 2017 22:05
12 lines
2047 bytes
2047 bytes
W dniu 03.07.2017 o 22:35, apl pisze: > No, powiedzmy, generuję w pętli while kolejne wartości funkcji sinus, podaję do tego częstotliwość próbkowania i oczekuję, że usłyszę to natychmiast przez głośnik PC. Zakładam oczywiście, że odtwarzacz będzie sobie wybierał dane z jakiegoś własnego bufora dopełnianego z mojego programu. Chciałbym wpływać na słyszaną częstotliwość poprzez modyfikację parametru "częstotliwość próbkowania". Mógłbym oczywiście generować sygnał wav i odtwarzać go np. za pomocą Audacity, no ale wolałbym mieć to we własnym środowisku. > Pozdrawiam > apl > Myślę że to jest odp na Twój problem co prawda nie wiem czy Twoje Delphi się tu jeszcze złapie ale próbuj http://www.mitov.com/products/audiolab#components Pozdrawiam J-23
Re: odtwarzanie sztucznego sygnału
Author: m
Date: Tue, 04 Jul 2017 13:46
Date: Tue, 04 Jul 2017 13:46
10 lines
1334 bytes
1334 bytes
W dniu 2017-07-03 o 21:59, apl pisze: > Dzięki, próbowałem to ruszyć, ale niczego nie da się uruchomić bo są odwołania do modułów, których nie posiadam, tj.: > WaveUtils,WaveStorage, WaveIO,WaveOut,WavePlayers > Pozdrawiam > apl > A tutaj byles ? http://www.delphiarea.com/products/delphi-packages/waveaudio/ M
Re: odtwarzanie sztucznego sygnału
Author: Roman Tyczka
Date: Tue, 04 Jul 2017 14:18
Date: Tue, 04 Jul 2017 14:18
11 lines
1281 bytes
1281 bytes
On Mon, 3 Jul 2017 13:35:09 -0700 (PDT), apl wrote: > Chciałbym wpływać na słyszaną częstotliwość poprzez modyfikację parametru > "częstotliwość próbkowania". Ale wiesz o tym, że częstotliwość słyszana i częstotliwość próbkowania mają tyle wspólnego ile węgiel kamienny z kamieniem węgielnym? -- pozdrawiam Roman Tyczka
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Tue, 04 Jul 2017 20:29
Date: Tue, 04 Jul 2017 20:29
3 lines
1809 bytes
1809 bytes
No nie do końca, kolego. Komputer musi mieć jakieś odniesienie czasowe, aby móc w odpowiednich odstępach czasowych dokładać kolejną próbkę do montowanego sygnału analogowego. Jest nim właśnie informacja o częstotliwości próbkowania, czyli ile czasu upłynęło od poprzedniego pomiaru. Słyszalny w efekcie ton jest wprost proporcjonalny do owego parametru. Tym sposobem można zrealizować modulację częstotliwościową. Pozdrawiam. apl
Re: odtwarzanie sztucznego sygnału
Author: Romek
Date: Tue, 04 Jul 2017 21:55
Date: Tue, 04 Jul 2017 21:55
4 lines
1763 bytes
1763 bytes
Jeśli częstotliwość generowanego sygnału chcesz uzależnić tylko od częstotliwości próbkowania, to kiepsko to wyjdzie zwłaszcza dla niskich częstotliwości. Poczytaj o DDS (Direct Digital Synthesis). Romek
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Tue, 04 Jul 2017 22:16
Date: Tue, 04 Jul 2017 22:16
3 lines
1873 bytes
1873 bytes
Szczerze mówiąc, tego chwytu nie próbowałem, ale wierność odtworzenia kształtu nie zależałaby od częstotliwości. Można tu ingerować bezpośrednio w definicje sygnału, ale wtedy kryterium Kotielnikowa Shanona się kłania, wysokie składowe rzucają się na niskie i słychać charakterystyczne przy-szepty.No, ale skoro zwracasz mi uwagę, to chyba coś wiesz na ten temat z praktyki? Pozdrawiam apl
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Tue, 04 Jul 2017 22:56
Date: Tue, 04 Jul 2017 22:56
3 lines
1449 bytes
1449 bytes
Dzięki, szukam czegoś bezpłatnego. Pozdrawiam i udanych wakacji życzę apl
Re: odtwarzanie sztucznego sygnału
Author: Romek
Date: Tue, 04 Jul 2017 23:09
Date: Tue, 04 Jul 2017 23:09
5 lines
2939 bytes
2939 bytes
Na wyjściu przetwornika DA zawsze musi znajdować się filtr analogowy. Aby skutecznie odfiltrować niskie częstotliwości elementy LC takiego filtru powinny mieć znaczne wartości a to pociąga za sobą ich rozmiary. Alternatywą są filtry aktywne (ale to jest gruby temat). Zauważ, że nawet dobrej klasy urządzenia audio mają problem z odfiltrowaniem zakłóceń 50 Hz z zasilacza (objawia się to słyszalnym przydźwiekiem). W przypadku generatorów DDS wymagania co do filtru na wyjściu można ograniczyć zwiększając częstotliwość próbkowania a częstotliwość generowanego sygnału regulować poprzez ilość próbek w okresie. W ten sposób działa wiele generatorów sygnałowych (np. HP Agilent 3324A). Urządzenia takie, podobnie jak generatory analogowe, mogą generować wiele sygnałów: sin, prostokąt, trójkąt, piła, ... ale również taki których wytworzenie w układach analogowych jest znacznie trudniejsze i b. kosztowne. Firma Analog Devices produkuje rodzinę układów (np. AD9851), które wykorzystują tą technikę i mają zastosowanie w telekomunikacji. Nie wiem jak dokładnie działają karty audio i czy pozwalają na dowolną zmianę częstotliwości próbkowania. Ze względu na filtr na wyjściu sądzę, że nie. DDS pozwoli Ci regulować częstotliwość - nawet płynnie (sweep). Romek
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Wed, 05 Jul 2017 07:16
Date: Wed, 05 Jul 2017 07:16
3 lines
1839 bytes
1839 bytes
Taaa. Wszystko to przerabiałem majstrując samemu przetworniki AD i DA w erze przedinformatycznej. Z tego, co piszesz, wynika, że konstruktorzy powielają stare pomysły. Pozdrawiam, apl
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Wed, 05 Jul 2017 07:33
Date: Wed, 05 Jul 2017 07:33
1 lines
2211 bytes
2211 bytes
P.S. Ogólnie biorąc nie jest tak, że nie mogę osiągnąć swojego celu jakimiś okrężnymi drogami. Miałem nadzieję, że ktoś podpowie mi jak zmusić standardowy komponent Media Player do pobierania danych z RAM, a nie tylko z pliku. Ponieważ parametrem jego sterowania jest częstotliwość próbkowania (rate), który pobiera z nagłówka pliku wav, stąd mój pomysł, aby wykorzystać go do bieżącego sterowania.
Re: odtwarzanie sztucznego sygnału
Author: Roman Tyczka
Date: Wed, 05 Jul 2017 19:31
Date: Wed, 05 Jul 2017 19:31
26 lines
2002 bytes
2002 bytes
On Tue, 4 Jul 2017 13:29:45 -0700 (PDT), apl wrote: > No nie do końca, kolego. Komputer musi mieć jakieś odniesienie czasowe, > aby móc w odpowiednich odstępach czasowych dokładać kolejną próbkę do > montowanego sygnału analogowego. Komputer pracuje na modulacji PCM, gdzie częstotliwość próbkowania jest stała, a częstotliwość dźwięku zależy od wartości chwilowej sygnału zarejestrowanego na przetworniku A/D. > Jest nim właśnie informacja o > częstotliwości próbkowania, czyli ile czasu upłynęło od poprzedniego > pomiaru. Słyszalny w efekcie ton jest wprost proporcjonalny do owego > parametru. Czyli wg Ciebie zwiększanie częstotliwości próbkowania zwiększa wysykość dźwięku? Innymi słowy dźwięk zarejestrowany z wysokim próbkowaniem nie może być niski? Ciekawe. > Tym sposobem można zrealizować modulację częstotliwościową. Nie stosowaną w kartach audio, lecz np. analogowym radiu FM. -- pozdrawiam Roman Tyczka
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Wed, 05 Jul 2017 22:43
Date: Wed, 05 Jul 2017 22:43
8 lines
2083 bytes
2083 bytes
, > Czyli wg Ciebie zwiększanie częstotliwości próbkowania zwiększa wysykość > dźwięku? Innymi słowy dźwięk zarejestrowany z wysokim próbkowaniem nie może > być niski? Ciekawe. > Tak, jeśli np. próbkowałeś sygnał z częstotliwością 1000 Hz, a poinformujesz maszynę, że robiłeś to z częstotliwością 2000 Hz, to odtworzony na podstawie tej informacji dźwięk będzie dwukrotnie wyższy, czyli np. z 70 Hz zrobi dźwięk 140 Hz Pozdrawiam, apl
Re: odtwarzanie sztucznego sygnału
Author: Roman Tyczka
Date: Thu, 06 Jul 2017 08:59
Date: Thu, 06 Jul 2017 08:59
18 lines
2024 bytes
2024 bytes
On Wed, 5 Jul 2017 15:43:11 -0700 (PDT), apl wrote: > , >> Czyli wg Ciebie zwiększanie częstotliwości próbkowania zwiększa wysykość >> dźwięku? Innymi słowy dźwięk zarejestrowany z wysokim próbkowaniem nie może >> być niski? Ciekawe. >> > Tak, jeśli np. próbkowałeś sygnał z częstotliwością 1000 Hz, a poinformujesz maszynę, że robiłeś to z częstotliwością 2000 Hz, to odtworzony na podstawie tej informacji dźwięk będzie dwukrotnie wyższy, czyli np. z 70 Hz zrobi dźwięk 140 Hz Heh... a jeśli w czasie jazdy wyjdziesz z samochodu to się zabijesz... chyba nie o tym była mowa, co? Jakie znaczenie dla tematu ma fakt, że źle odtwarzasz próbkę? Chciałeś odtwarzać sztucznie generowany dźwięk, podałem Ci bilbiotekę, która to robi, a Ty piszesz, że jak jej źle użyjesz to będzie źle działać. No brawo, tylko po co o tym gadać? -- pozdrawiam Roman Tyczka
Re: odtwarzanie sztucznego sygnału
Author: apl
Date: Fri, 07 Jul 2017 20:42
Date: Fri, 07 Jul 2017 20:42
2 lines
2159 bytes
2159 bytes
Kolego, nie zrozumiałeś mnie. Chodzi o zamierzone sterowanie F0 z sygnału mowy. F0 mogę mierzyć na bieżąco, a chciałbym go usłyszeć w formie czystego tonu. Ma to znaczenie w badaniach psychoakustycznych. P.S. Zauważyłem, ze wielu kolegów pobrało zamieszczony na mojej stronie WWW software. Zainteresowanym mam przyjemność zakomunikować, że zamieściłem tam nowa wersję programu Spectrum (v.3.), jego pełny i skrócony opis oraz program czytający wyniki działania programu Spectrum
Re: odtwarzanie sztucznego sygnału
Author: jh
Date: Tue, 26 Sep 2017 20:00
Date: Tue, 26 Sep 2017 20:00
29 lines
2467 bytes
2467 bytes
W dniu 2017-07-02 o 15:38, apl pisze: > Witam, > chciałbym odtwarzać w czasie rzeczywistym w postaci dźwięku sztucznie generowany sygnał. Standardowy "Media player" pozwala odtwarzać tylko próbki pobierane ze wskazanego pliku typu .wav. Czy ktoś z kolegów mógłby mi podpowiedzieć, ewentualnie podzielić się kodem w tym problemie? > Pozdrawiam. > P.S. Pracuję z Delphi 2005. > http://main3.amu.edu.pl/~apl/index.html > https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680(v=vs.85).aspx i https://msdn.microsoft.com/en-us/library/windows/desktop/dd743679(v=vs.85).aspx Ale to nie do końca rozwiąże Twój problem. Skuteczniej jest skorzystać z darmowego OpenASIO, albo łatwiej pisząc dosyć prosty kawałek kodu oparty o MMSystem, czyli funkcje waveOutXXX. Otwierasz urządzenie audio, przygotowujesz bufory i wysyłasz je do urządzenia audio, odegrane bufory wracają do aplikacji, znowu zapełniasz je danymi i tak dopóki nie zatrzymasz urządzenia. Podczas zapełniania bufora wpisujesz sobie to, co wyliczysz. Są gotowce: https://github.com/CHERTS/newac, albo do freeware'u biblioteki Un4een - BASS, czy też dawno nie rozwijany projekt Delphi SIO & VST https://sourceforge.net/projects/delphiasiovst/files/ gdzie możesz skorzystać z niskolatencyjnego sterownika ASIO i dostaniesz już gotowe narzędzia do do podwójnego buforowania i wtyczek VST, gdzie w zasadzie pozostanie podpiąć (gotowy) generator i w callbackach wypełniać danymi bufor do odegrania. jh
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads