Problem z napisaniem korektora przy użyciu BASS.dll

Problem z napisaniem korektora przy użyciu BASS.dll
T1
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:10
0

Witam, mam korektor dźwięku zrobiony w Delphi za pomocą biblioteki BASS.DLL. Otóż moim problemem jest to, że gdy przechodzę do następnego/poprzedniego czy klikam przycisk stop, a później play to cały korektor muszę ustawiać od nowa mimo iż paski na korektorze nie zmieniają swojego położenia(ustawienia są takie same). Poniżej przedstawiam Wam drodzy dzy forumowicze kod , którego używam w trackbarze, którego używam do zmiany ustawień dźwięku

Kopiuj
    BASS_FXGetParameters(fx[0], @p);
    p.fgain := TrackBar1.position;
    BASS_FXSetParameters(fx[0], @p);

a w przycisku np dalej mam takie coś:

Kopiuj
       {tu jest equalizer dokladnie poczatek}
  fx[0] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[1] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[2] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[3] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[4] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[5] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[6] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[7] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[8] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[9] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_PARAMEQ, 1);
  fx[10] := BASS_ChannelSetFX(Chan, BASS_FX_DX8_REVERB, 1);
    // Set equalizer to flat and reverb off to start
     p.fGain := 0;
  p.fBandwidth := 18;
  p.fCenter := 80;
  BASS_FXSetParameters(fx[0], @p);
  p.fCenter := 170;
  BASS_FXSetParameters(fx[1], @p);
  p.fCenter := 310;
  BASS_FXSetParameters(fx[2], @p);
  p.fCenter := 600;
  BASS_FXSetParameters(fx[3], @p);
  p.fCenter := 1000;
  BASS_FXSetParameters(fx[4], @p);
  p.fCenter := 3000;
  BASS_FXSetParameters(fx[5], @p);
  p.fCenter := 7000;
  BASS_FXSetParameters(fx[6], @p);
  p.fCenter := 12000;
  BASS_FXSetParameters(fx[7], @p);
  p.fCenter := 14000;
  BASS_FXSetParameters(fx[8], @p);
  p.fCenter := 16000;
  BASS_FXSetParameters(fx[9], @p);

  BASS_FXGetParameters(fx[10], @pR);
  pR.fReverbMix := -96;
  pR.fReverbTime := 1500;
  pR.fHighFreqRTRatio := 0.1;
  BASS_FXSetParameters(fx[10], @pR);
  EQenable := True;
     {tu jest equalizer dokladnie koniec}
    // play both MOD and stream, it must be one of them! :)
    BASS_ChannelPlay(chan, False);
    pf.Visible:=true;



begin

  BASS_FXGetParameters(fx[0], @p);
  p.fgain := TrackBar1.position;
  BASS_FXSetParameters(fx[0], @p);

  BASS_FXGetParameters(fx[1], @p);
  p.fgain := TrackBar2.position;
  BASS_FXSetParameters(fx[1], @p);

  BASS_FXGetParameters(fx[2], @p);
  p.fgain := TrackBar3.position;
  BASS_FXSetParameters(fx[2], @p);

  BASS_FXGetParameters(fx[3], @p);
  p.fgain := TrackBar4.position;
  BASS_FXSetParameters(fx[3], @p);

  BASS_FXGetParameters(fx[4], @p);
  p.fgain := TrackBar5.position;
  BASS_FXSetParameters(fx[4], @p);

  BASS_FXGetParameters(fx[5], @p);
  p.fgain := TrackBar6.position;
  BASS_FXSetParameters(fx[5], @p);

  BASS_FXGetParameters(fx[6], @p);
  p.fgain := TrackBar7.position;
  BASS_FXSetParameters(fx[6], @p);

  BASS_FXGetParameters(fx[7], @p);
  p.fgain := TrackBar8.position;
  BASS_FXSetParameters(fx[7], @p);

  BASS_FXGetParameters(fx[8], @p);
  p.fgain := TrackBar9.position;
  BASS_FXSetParameters(fx[8], @p);

  BASS_FXGetParameters(fx[9], @p);
  p.fgain := TrackBar10.position;
  BASS_FXSetParameters(fx[9], @p);

głównie chodzi mi o drugą część kodu czyli

Kopiuj
  BASS_FXGetParameters(fx[0], @p);
  p.fgain := TrackBar1.position;
  BASS_FXSetParameters(fx[0], @p);
 

itp.
Nie zapamiętuje mi tego jak są ustawione trackbary...
POMOCY PROSZĘ;(;(;(

edytowany 1x, ostatnio: flowCRANE
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Przeanalizuj sobie przykładowy kod w podkatalogu FXTest. Tam również po wczytaniu pliku i zmianie ustawień, a późnej wczytaniu innego lub tego samego pliku - mamy te same ustawienia. Wynika, to z tego, że parametry tam są ustawiane dopiero przy poruszaniu TrackBarami. Przy wczytywaniu są domyślne, a może inaczej nie można. Chociaż nie wiem. Bo nigdy pod BASS'em nie musiałem bawić się w Equalizery. Ale ja rozwiązał bym to tak, że dostosował bym kod z tego przykładu do swoich potrzeb. Czyli pozostawił zmianę parametrów w zdarzeniu OnChange dla tych trackbarów. Jednak po BASS_ChannelPlay wywołał te zdarzenia zmiany z poziomu kodu. Czyli dla tego akurat przykładu zrobił po prostu, tak jak pokazałem poniżej. Ale moze coś lepszego doradzą Tobie tutaj bardziej doświadczeni w zabawie z bass.dll. Ja ostatnio piszę jedynie player modułów, dostosowany pod swoje preferencje i nie przewiduje tam konieczności zabawy z equalizerem, bo dla mnie to zbędność :/ Także ekspertem nie jestem. Ewentualnie zawsze możesz spróbowac uzyskać dodatkową pomoc na oficjalnym forrum supportu w języku angielskim.

Kopiuj
  TrackBar1.OnChange(TrackBar1);
  TrackBar2.OnChange(TrackBar2);
  TrackBar3.OnChange(TrackBar3);
  TrackBar4.OnChange(TrackBar4);

Pozdrawiam.
edytowany 2x, ostatnio: olesio
T1
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:10
0

Oki to chwilka, przetestuję i zobaczę czy działa

edytowany 1x, ostatnio: flowCRANE
olesio
Dla przykładu zadziałalo. Być może zależy jak używa się funkcji z "rodziny" BASS_FX...
flowCRANE
@tomcio19950 - nie cytuj całego postu, jeśli odpowiadasz bezpośrednio pod nim;
T1
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:10
0

Niestety nie działa;(;(;(;(

Może podam adres do pobrania tego odtwarzacza?

olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

W tym przykładzie działa na pewno. Podkreślam po raz 86564844. Nie podaje niesprawdzonych rozwiązań w swoich postach. Chyba, że napisalem inaczej. A nie wiem co masz u siebie w OnChange. I nie wiem o jaki odtwarzacz Tobie chodzi. Mój jest w trakcie tworzenia i nie wiem czy później udostępnie. A jeżeli już to tylko w formie exeka raczej. Miałem na myśli przykład z podkatalogu "delphi\fxtest" w archiwum z pakietem dostępnym wraz z windowsową wersją bass.dll - dostepnym na: http://www.un4seen.com/download.php?bass24


Pozdrawiam.
edytowany 1x, ostatnio: olesio
T1
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:10
0

Kolego właśnie z tego przykładu przed chwilą testowałem to. A w OnChange mam

Kopiuj
  BASS_FXGetParameters(fx[3], @p);
    p.fgain := TrackBar3.position;
    BASS_FXSetParameters(fx[3], @p); 
edytowany 1x, ostatnio: flowCRANE
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

No to masz inny kod niż w oryginalnym przykładzie. Miałeś sprawdzić na przykładzie i później dostosować jego kod do siebie. Ja sprawdziłem i działa. Nie wiem jakiego przedziału oczekuje funkcja BASS_FXSetParameters, ale w kodzie przykładowym jest zupełnie inaczej. Więcej nie jestem w stanie Tobie pomóc, bo uparcie robisz po swojemu zamiast najpierw przeanalizować przykład i operować na jego kodzie. Jak pisałem, nie podaje niesprawdzonych rozwiązań. Chyba, że o tym wspomnę.

Kopiuj
procedure TForm1.TrackBar1Change(Sender : TObject);
begin
  BASS_FXGetParameters(fx[1], @p);
  p.fgain := 15 - TrackBar1.position;
  BASS_FXSetParameters(fx[1], @p);
end;

procedure TForm1.TrackBar2Change(Sender : TObject);
begin
  BASS_FXGetParameters(fx[2], @p);
  p.fgain := 15 - TrackBar2.position;
  BASS_FXSetParameters(fx[2], @p);
end;

procedure TForm1.TrackBar3Change(Sender : TObject);
begin
  BASS_FXGetParameters(fx[3], @p);
  p.fgain := 15 - TrackBar3.position;
  BASS_FXSetParameters(fx[3], @p);
end;

procedure TForm1.TrackBar4Change(Sender : TObject);
var
  v : integer;
begin
  v := TrackBar4.position;
  BASS_FXGetParameters(fx[4], @pR);
  // give exponential quality to trackbar as Bass more sensitive near 0
  pR.fReverbMix := -0.012 * v * v * v; // gives -96 when bar at 20
  BASS_FXSetParameters(fx[4], @pR);
  Label5.Caption := inttostr(20 - TrackBar4.position);
end;

Pozdrawiam.
edytowany 1x, ostatnio: olesio
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)