🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
20 messages
20 total messages Started by apl Sun, 02 Jul 2017 13:38
odtwarzanie sztucznego sygnału
#345949
Author: apl
Date: Sun, 02 Jul 2017 13:38
5 lines
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
#345950
Author: J-23
Date: Sun, 02 Jul 2017 19:33
15 lines
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
#345966
Author: Roman Tyczka
Date: Mon, 03 Jul 2017 09:06
14 lines
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
#345967
Author: apl
Date: Mon, 03 Jul 2017 19:59
4 lines
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
#345951
Author: apl
Date: Mon, 03 Jul 2017 20:35
3 lines
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
#345952
Author: J-23
Date: Mon, 03 Jul 2017 22:05
12 lines
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
#345968
Author: m
Date: Tue, 04 Jul 2017 13:46
10 lines
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
#345954
Author: Roman Tyczka
Date: Tue, 04 Jul 2017 14:18
11 lines
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
#345955
Author: apl
Date: Tue, 04 Jul 2017 20:29
3 lines
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
#345956
Author: Romek
Date: Tue, 04 Jul 2017 21:55
4 lines
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
#345957
Author: apl
Date: Tue, 04 Jul 2017 22:16
3 lines
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
#345953
Author: apl
Date: Tue, 04 Jul 2017 22:56
3 lines
1449 bytes
Dzięki, szukam czegoś bezpłatnego.
Pozdrawiam i udanych wakacji życzę
apl
Re: odtwarzanie sztucznego sygnału
#345958
Author: Romek
Date: Tue, 04 Jul 2017 23:09
5 lines
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
#345959
Author: apl
Date: Wed, 05 Jul 2017 07:16
3 lines
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
#345961
Author: apl
Date: Wed, 05 Jul 2017 07:33
1 lines
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
#345962
Author: Roman Tyczka
Date: Wed, 05 Jul 2017 19:31
26 lines
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
#345963
Author: apl
Date: Wed, 05 Jul 2017 22:43
8 lines
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
#345964
Author: Roman Tyczka
Date: Thu, 06 Jul 2017 08:59
18 lines
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
#345965
Author: apl
Date: Fri, 07 Jul 2017 20:42
2 lines
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
#345969
Author: jh
Date: Tue, 26 Sep 2017 20:00
29 lines
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