Jump to content
Annons

Genererade vågformer lagras med vikningseffekt, varför?


Signia

Recommended Posts

Om jag beordrar ett program att skapa en fil, och generera vågform i filen - vågform som brus eller olika geometriska former, sågtand, fyrkant osv - så lagras även vikningseffekt (aliasing). Begriper inte riktigt varför det blir så?

Vågformerna är ju inte "inspelade", eller processade på nåt sätt. Dom är ju 'genererade', både i- och för det format dom lagrats i.

Har provat Wavelab, Sound Forge, Sox .. alla gör likadant. Och dom geometriska vågformerna är klockrena i oscilloskop med. Helt utan avvikelser.

Någon som kan hjälpa till att förstå varför det här uppstår? Har extremt svårt att tro det är handhavande-fel.

Exempel 96khz/24bit

(varning för obehagligt o starkt ljud)

/S

Redigerat av Signia
Link to comment
Dela på andra sajter

Annons

Om jag beordrar ett program att skapa en fil, och generera vågform i filen - vågform som brus eller olika geometriska former, sågtand, fyrkant osv - så lagras även vikningseffekt (aliasing). Begriper inte riktigt varför det blir så?

Vågformerna är ju inte "inspelade", eller processade på nåt sätt. Dom är ju 'genererade', både i- och för det format dom lagrats i.

Om det är aliasing så är det med stor sannolikhet avsaknad av korrekt filtrering vid generering/sampling.

(Har inte möjlighet att kolla eller lyssna på filen nu ikväll)

Link to comment
Dela på andra sajter

Postat (redigerat)

Om det är aliasing så är det med stor sannolikhet avsaknad av korrekt filtrering vid generering/sampling.

(Har inte möjlighet att kolla eller lyssna på filen nu ikväll)

Så generationen kör rent teoretiskt, och tar ingen hänsyn till formatet den alstrar inom alls?

Om grund- eller övertoner skulle överstiga Nyqvist (eller högsta frekvens) så ... ahaaa .. den anpassar inte, som du säger.

Generationsprocessen bara kör sitt teoretiska race, och om värdet den ska generera teoretiskt överstiger lagrings-frekvensens högsta-värde, så ... vad? ... Ah, den skriver väl helt enkelt in högsta värdet som formatet tillåter bara, högsta siffran som frekvensen tillåter? Den låter formatet kapa till saker o ting själv.

Men tycker i så fall ändå att ... aliasing eller annan distorsion borde uppstå först vid uppspelning, men inte liksom lagras i själva filen ... (?)

Redigerat av Signia
Link to comment
Dela på andra sajter

Om jag beordrar ett program att skapa en fil, och generera vågform i filen - vågform som brus eller olika geometriska former, sågtand, fyrkant osv - så lagras även vikningseffekt (aliasing). Begriper inte riktigt varför det blir så?

Jag är inte säker på att jag uppfattar vad du menar men:

Kan det ha att något göra med att den vågform du genererar inte är oändligt lång?

Låt oss ta en sågtand som exempel. De övertoner vi brukar se i bilder gäller bara för en oändligt lång signal utsträckt över tid.

När man begränsar i tid händer följande:

I tidsplanet multiplicerar man en sågtandsvåg med ett fönster (som är durationstiden av din verkliga sågtand)

som har värdet 1 så länge du har din sågtand och 0 för alla övriga tider (en lång fyrkantspuls)

I frekvensplanet ska man göra en convolution av Fourierfransformerna av sågtanden (den oändligt långa) och Fouriertransformen

av fönstret (en puls) vilket är en sincfunktion (ser ut som en bläckfisk).

Resultatet blir inte en helt ren sinus signal utan frekvenser "runt om" (se bild nedan)

Pröva gärna med att spela in t ex en 100Hz sinus-signal av olika längd

(eftersom den har enklast möjliga frekvensspektrum)

1) kort signal på kanske en sekund eller minsta möjliga.

2) och sedan på 3 min.

Blir det skillnad när du analyserar med frekvensspektrum (och det borde det bli)

beror det på teorin så att säga och inte i grunden på att programmet gör något konstigt med filter eller så.

(Däremot finns det filtreringar för att minska "svansarna" men det är liksom steg 2.)

Googla t ex på sinc function, convolution, fouriertransform, om det nu var detta du menade,

om du vill veta mera om detta.

Återkom gärna om du hade ngn nytta av detta. 🙂

post-16865-0-91965800-1395994851.gif

Redigerat av laban1
Link to comment
Dela på andra sajter

Ah, den skriver väl helt enkelt in högsta värdet som formatet tillåter bara

Ja, det tycker jag låter som en rimlig hypotes.

Troligtvis är det några övertoner som kommer med.

Testa att generera en ren sinus.

Men tycker i så fall ändå att ... aliasing eller annan distorsion borde uppstå först vid uppspelning, men inte liksom lagras i själva filen ... (?)

Nej, aliasing uppstår vid själva samplingen/inspelningen/genereringen.

Signalen måste vara korrekt filtrerad *innan* samplingen sker annars funkar inte teoremet.

(Du kan också räkna ut aliasing-frekvensen förenklat:

aliasingfrekvens = samplingsfrekvensen - frekvensen_som_hamnar_över_halva_samplingsfrekvensen

kolla även "undersampling" om du är intresserad)

Link to comment
Dela på andra sajter

Jag är inte säker på att jag uppfattar vad du menar men:

Kan det ha att något göra med att den vågform du genererar inte är oändligt lång?

Låt oss ta en sågtand som exempel. De övertoner vi brukar se i bilder gäller bara för en oändligt lång signal utsträckt över tid.

När man begränsar i tid händer följande:

I tidsplanet multiplicerar man en sågtandsvåg med ett fönster (som är durationstiden av din verkliga sågtand)

som har värdet 1 så länge du har din sågtand och 0 för alla övriga tider (en lång fyrkantspuls)

I frekvensplanet ska man göra en convolution av Fourierfransformerna av sågtanden (den oändligt långa) och Fouriertransformen

av fönstret (en puls) vilket är en sincfunktion (ser ut som en bläckfisk).

Resultatet blir inte en helt ren sinus signal utan frekvenser "runt om" (se bild nedan)

Pröva gärna med att spela in t ex en 100Hz sinus-signal av olika längd

(eftersom den har enklast möjliga frekvensspektrum)

1) kort signal på kanske en sekund eller minsta möjliga.

2) och sedan på 3 min.

Blir det skillnad när du analyserar med frekvensspektrum (och det borde det bli)

beror det på teorin så att säga och inte i grunden på att programmet gör något konstigt med filter eller så.

(Däremot finns det filtreringar för att minska "svansarna" men det är liksom steg 2.)

Googla t ex på sinc function, convolution, fouriertransform, om det nu var detta du menade,

om du vill veta mera om detta.

Återkom gärna om du hade ngn nytta av detta. 🙂

Det skulle kunna ha med det i sig att göra med, med fasen.

Om jag ställt in att sågtandsvåg ska genereras i 440hz och filen ska vara bestämd tidslängd, då slutar inte alltid vågformen precis vid fullbordad cykel - beroende på fas förstås. Den klipps av, så ljudet slutar när vågformen är nån annanstans än på nollan. Då blir det ju miffo som skulle ställa till med oönskad oväsen. Troligtvis knäppljud. Men är filen kort, och man loopar den, då kan det nog bli bi-ljud i sidband och shit vid uppspelning.

Men jag tror inte det är det som det handlar om i det här fallet.

I övrigt förstår jag att du talar om att den generator jag använder mig av kan använda sig av FFT-begränsning som skapar problem. Jag tror inte dom jag provat använder sig av FFT vid generation. Det är oftare vid analys som FFT-transformer tillämpas.

Link to comment
Dela på andra sajter

Det skulle kunna ha med det i sig att göra med, med fasen.

Om jag ställt in att sågtandsvåg ska genereras i 440hz och filen ska vara bestämd tidslängd, då slutar inte alltid vågformen precis vid fullbordad cykel - beroende på fas förstås. Den klipps av, så ljudet slutar när vågformen är nån annanstans än på nollan.

Effekten finns även i högsta grad om du har perfekt nollgenomgång i perioderna ! (det blir förstås något värre om du kapar mitt i).

De fouriertransformerna vi är vana att se för periodiska signaler gäller oändligt långa signaler och är alltså en teoretisk konstruktion. I verkligheten får du resultat av typen som visats på bilden i mitt inlägg, med svansar på sidorna

Gör gärna mitt föreslagna test, nyfiken på vad du får för resultat. 🙂

Det är bäst som jag skriver att utgå från en ren sinussignal,

du kan då tydligare tolka resultatet eftersom fouriertransformen blir en "spik"

eftersom du bara har en frekvens i sinus t ex 100Hz.

Redigerat av laban1
Link to comment
Dela på andra sajter

Postat (redigerat)

Ja, det tycker jag låter som en rimlig hypotes.

Troligtvis är det några övertoner som kommer med.

🙂

Nej, aliasing uppstår vid själva samplingen/inspelningen/genereringen.

Signalen måste vara korrekt filtrerad *innan* samplingen sker annars funkar inte teoremet.

Det är helt enkelt så att det är skillnad mellan användarens önskade slutresultat, och den mer tekniskt kallhamrade inställningen av programmet.

Jag hade inte föreställt mig att nån skulle erbjuda en funktion för att alstra en ren vågform, och då leverera en massa avvikelser/överflöd på köpet. Att det kan dista eller bli övertoner genom högtalaren förstår man ju, det är ju önskvärt som t.ex. vid fyrkant/sågtand/triangel och alla vågformer med skarpa kanter. Men att dessa skulle lagras inne själva filen liksom ... finns det nån som vill ha det?

Det finns inte ens en filtreringsfunktion erbjuden i något program som erbjuder användaren att skapa en vågform heller.

Nu börjar jag låta som Nilsson: Behöva filtrera bort inspelat/genererat material för att det ens ska låta bra? Fan för det digitalas över-pragmatiska värld. 😛

Redigerat av Signia
Link to comment
Dela på andra sajter

Postat (redigerat)

Gör gärna mitt föreslagna test, nyfiken på vad du får för resultat. 🙂

Det är bäst som jag skriver att utgå från en ren sinussignal,

du kan då tydligare tolka resultatet eftersom fouriertransformen blir en "spik"

eftersom du bara har en frekvens i sinus t ex 100Hz.

Okej, kan ja göra. Men för alternativ 1, vill du ha fil-längd som överensstämmer med våglängden? Så att cykeln slutar på noll, eller är det skitsamma?

EDIT: här är 3 min i alla fall: länk

Redigerat av Signia
Link to comment
Dela på andra sajter

Okej, kan ja göra. Men för alternativ 1, vill du ha fil-längd som överensstämmer med våglängden? Så att cykeln slutar på noll, eller är det skitsamma?

Det är väl bättre att båda går genom nollan, så utesluter man att resultatet skulle bero på

att man inte har nollgenomgång som du var inne på.

Jag var väl med testet mer inne på att du gör en Fouriertransform av båda exempelfilerna och jämför.

Man tror mer på resultat som man tagit fram själv, eller hur? 🙂

Link to comment
Dela på andra sajter

Postat (redigerat)

Det är väl bättre att båda går genom nollan, så utesluter man att resultatet skulle bero på

att man inte har nollgenomgång som du var inne på.

Jag var väl med testet mer inne på att du gör en Fouriertransform av båda exempelfilerna och jämför.

Son of a bitch. Skillnad syns. Begränsningarna i vår modellering av fysiologiska fenomen gör sig påminda.

I fallet med vikningseffekten för vågformerna ovan, så var det inte så att jag såg dom, visuellt, utan jag hörde dom. Det är det jag vill råda bot på.

Om dom sen ser snygga ut eller inte, det får bli en sekundär fråga 🙂

Man tror mer på resultat som man tagit fram själv, eller hur? 🙂

Mjao, nja, det vette farao. 😛

Har gjort så många prov tester och shit där man varit 100 på att man gjrt o förstått rätt, och man tror nog mer på 'det felaktiga' bara för man utförde det själv haha .. bara för det följde den logik som man själv dittills läst på eller använde sig av.

Se bara på mig och den här tråden t.ex. 😛

Redigerat av Signia
Link to comment
Dela på andra sajter

🙂

Det är helt enkelt så att det är skillnad mellan användarens önskade slutresultat, och den mer tekniskt kallhamrade inställningen av programmet.

Jag hade inte föreställt mig att nån skulle erbjuda en funktion för att alstra en ren vågform, och då leverera en massa avvikelser/överflöd på köpet.

Det är det som är grejen, ju mer exakt funktionen alstrar vågformer som innehåller många övertoner desto fler "avvikelser" genereras ifall filtreringen inte görs korrekt när man sedan skall sampla ner den.

Det låter kanske inte intuitivt men det är mycket logiskt om man undersöker det.

Sen kan man alltid analysera med FFT för att kolla efter andra problem men det blir i en annan ände och det är några påståenden som inte stämmer i sammanhanget (vilket jag kommenterade tidigare).

Bara så ni är medvetna om det.

Det är inte så svårt konceptuellt även om det kräver lite ansträngning att få till en tydlig förklaring (utan en whiteboard irl). 🙂

Link to comment
Dela på andra sajter

Bli medlem (kostnadsfritt) eller logga in för att kommentera

Du behöver vara medlem för att delta i communityn

Bli medlem (kostnadsfritt)

Bli medlem kostnadsfritt i vår community genom att registrera dig. Det är enkelt och kostar inget!

Bli medlem nu (kostnadsfritt)

Logga in

Har du redan en inloggning?
Logga in här.

Logga in nu
×
×
  • Skapa ny...