Оплескваме фазовия осцилоскоп в Orinj

Качено от mic на Fri, 03/30/2018 - 11:02

Превод от: Screwing up the Orinj phase oscilloscope

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

Един стилизиран осцилоскоп

Фазовият осцилоскоп е описан в нашия Речник. Забележи, че описанието се концентрира върху простите сигнали – тези, които се състоят от прости вълни, като една синусоида. Тези прости сигнали в правилно проектираните осцилоскопи произвеждат красиви криви (криви на Лисажу). Вземи нещо по-сложно и красивите криви на Лисажу се разпадат в сложни петна.

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

Следващата естествена стъпка бе да разложим действителните леви и десни сигнали в компонентите на техните преобразувания на Фурие. Можем тогава да вземем създадените компоненти (амплитуди, фази, честоти) и да възстановим сигнала с целта да го изрисуваме в осцилоскопа. Това, както се оказа, също бе безсмислено. Защо да разлагаме и възстановяваме сигнала, когато вече имаме самия сигнал? Можем направо да изрисуваме самия сигнал.

Има всъщност някаква полза от разлагането и възстановяването на сигнала.

  • Първо, можем да вземем едно малко преобразуване – да кажем от 100 точки – но вместо да рисуваме възстановения сигнал за 100 точки, да го изрисуваме за 1000 точки, което ще направи по-завършени, по-симетрични криви. Алтернативата е да вземем 1000 точки от оригиналния сигнал, което няма да произведе красиви криви. Или пък можем да вземем 100 точки и да ги повторим за един периодичен сигнал, но резултатът няма да е много изгладен.
  • Второ, ако вземеш едно малко преобразуване на Фурие на сигнала, особено при един сигнал с ниски честоти, можеш да получиш доста голям първи компонент на преобразуването (на постоянната амплитуда). Това ще измести графиката на осцилоскопа в един от ъглите. При възстановяването на сигнала, можеш да върнеш графиката на осцилоскопа като пренебрегнеш този компонент.

Ориентацията на фазовия осцилоскоп

Винаги е по-добре да имаш един осцилоскоп, който изглежда като следния

Един диагонален фазов осцилоскоп

вместо един като следния.

Един хоризонтален-вертикален фазов осцилоскоп

В първия осцилоскоп, лявото е вляво и дясното е вдясно. Един сигнал, в който двата канала са едни и същи, ще бъде в средата като една вертикална линия. Тази линия ще клони към лявата или дясната ос, когато амплитудата съответно на левия или десния канал стане по-голяма в сравнение на амплитудата на другия канал.

Да се произведе една графика обаче, която е завъртяна на 45 градуса, е изчислителен кошмар, особено ако пространството не е точно квадратно. Така, половин ден бе изгубен за да се оправи изложението на графиката, така че: а) графиката да е правилна; б) пространството да е квадратно.

Един фазов осцилоскоп в реално време

Както се оказа, структурата на ефектите в Orinj не поддържа наблюдението на сигнали в реално време. Това има смисъл. Ефектите в Orinj са създадени за да преработят сигнала преди този сигнал да е изпратен към изхода за свирене. Тези ефекти работят в "реално време", в смисъл че звуковите данни не са преработени предварително и запазени на твърдия диск, а оригиналните звукови данни се четат от твърдия диск, преработват се с ефектите и се изпращат за свирене по време на свиренето. Все още обаче има забавяне между времето, в което ефектът работи със звуковите данни и времето, в което тези звукови данни са изпратени към изхода. Ако звуковите буфери на Orinj са големи, това забавяне може също да е голямо. Дължината на звуковите буфери в Orinj могат да е от няколко милисекунди до няколко секунди.

Фазовият осцилоскоп, който приготвяме сега, работи в псевдо реално време. Самият ефект работи със звуковите данни и запазва информация по същия начин, както всички други ефекти. Графиката на осцилоскопа взема тази информация в определени точки във времето, приблизително тогава, когато звуковите данни се свирят. Тези части на софтуера обаче са независими една от друга. А и не могат правилно да се синхронизират, защото структурата на ефектите в Orinj не позволява достъп до времето на свирене.

Това означава, че графиката на осцилоскопа може от време на време да покаже данни преди съответното свирене или пък може от време на време да чака за данни, и да изглежда замръзнала на една и съща картинка. Можем да променим структурата на ефектите в Orinj и да позволим достъп до времето на свирене, но това прилича да е прекалено. В края на краищата, никой не се интересува от графиката на фазовия осцилоскоп в прецизно определени точки във времето.

Преобразуването на Фурие

Нямам извинение за тези грешки, но ето ги тук:

  • Успях да объркам как се използва фазата, изчислена с преобразуването – cos(2 π f (t – τ) ли е за някаква фаза τ или cos(2 π f t – θ) за някаква фаза θ? Трябва да се второто.
  • Спомних си, че преобразуването на един сигнал от реални стойности дата излишна информация. Втората половина от амплитудите и фазите на компонентите е същата, като първата половина. Опитах се да пренебрегна втората половина. Не можеш да пренебрегнеш втората половина при възстановяването на сигнала.

И какво сега?

Фазовият осцилоскоп е почти готов. Един (предварителен) пример за него е тук (върху сигнал от два напълно различни ляв и десен канал).

Фазовият осцилоскоп в Orinj

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

автори: mic

Добави нов коментар

Filtered HTML

  • Freelinking helps you easily create HTML links. Links take the form of [[indicator:target|Title]]. By default (no indicator): Click to view a local node.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.