Inhoudsopgave:

Oscilloscoopmuziek: 7 stappen
Oscilloscoopmuziek: 7 stappen

Video: Oscilloscoopmuziek: 7 stappen

Video: Oscilloscoopmuziek: 7 stappen
Video: Oscilloscope Music - (Drawing with Sound) - Smarter Every Day 224 2024, November
Anonim
Image
Image
Achtergrond
Achtergrond

Inleiding: deze Instructable moet voldoen aan een vereiste voor het documentatiegedeelte van het microcomputer-interfacing-project aan de Utah State University.

Stap 1: Achtergrond

Achtergrond:

Een oscilloscoop wordt gebruikt om een spanningssignaal weer te geven en te meten dat is uitgezet tegen de tijd. Een oscilloscoop in XY-modus zet een signaal uit tegen een ander signaal, vergelijkbaar met een parametrische vergelijking. Dit project gebruikt een oscilloscoop in XY-modus om beelden weer te geven die door een geluidsbestand zijn geproduceerd.

Stap 2: Origineel idee

Orgineel idee
Orgineel idee
Orgineel idee
Orgineel idee

Het oorspronkelijke idee voor het project was om een oude Cathode Ray Tube (CRT) televisie om te bouwen tot een XY-oscilloscoop en die te gebruiken om de beelden weer te geven. Dit kan door de afbuigspoelen los te koppelen. Wanneer u de horizontale spoelen loskoppelt, verschijnt er een verticale lijn en wanneer u de verticale spoel loskoppelt, verschijnt er een horizontale lijn. Ik hoefde alleen maar de audiobron aan te sluiten op de afbuigspoelen en ik had een XY-oscilloscoop. Helaas liep ik tegen verschillende problemen aan.

Stap 3: Ondervonden problemen

Problemen tegengekomen
Problemen tegengekomen
Problemen tegengekomen
Problemen tegengekomen
Problemen tegengekomen
Problemen tegengekomen

Een van de problemen die ik tegenkwam, waren de veiligheidsvoorzieningen. De tv kon detecteren dat de afbuigspoelen waren losgekoppeld en niet konden worden ingeschakeld. Dit om te voorkomen dat de elektronenstraal een gat in de fosfor op het scherm brandt. Ik heb de weerstand van de spoelen gemeten en er een weerstand overheen geplaatst. Door de hoge spanningen brandde de weerstand meteen doormidden. Ik probeerde het opnieuw met een hogere nominale weerstand, maar dat werkte ook niet. Ik heb op een aantal forums online gelezen over hoe een andere set afbuigspoelen op de originele tv kan worden aangesloten, dus ik vond een andere tv en sloot de afbuigspoel op de mijne aan. De impedantie was niet hetzelfde, dus hij ging niet aan. Na wat meer onderzoek ontdekte ik dat oudere tv's niet over de veiligheidsfunctie beschikten en het kon me niet schelen of de afbuigspoelen waren losgekoppeld. Ik heb een in 2000 geproduceerde tv kunnen vinden die leek te werken. Ik kon een paar eenvoudige vormen op het scherm krijgen, maar alles wat ingewikkelder was dan een cirkel zou zwaar vervormd zijn. Uiteindelijk stopte deze tv met werken en bleven de zekeringen doorslaan.

Ik heb een kleine tv kunnen vinden die in 1994 is gemaakt. Deze tv werkte redelijk goed, maar ik kon de juiste oriëntatie van het beeld niet krijgen, zelfs niet toen ik de signalen in elke combinatie verwisselde. Het had ook dezelfde problemen als de andere tv en zou geen ingewikkelde beelden produceren. Na veel onderzoek kwam ik erachter dat het probleem was dat ik een vectorafbeelding op een rasterweergave probeerde te produceren. Een rasterweergave is een scherm dat zeer snel horizontaal scant en dan verticaal langzamer. Een vectorweergave gebruikt lijnen om afbeeldingen te produceren. Ik heb tutorials gevonden over het converteren van een rasterweergave naar een vectorweergave, maar het proces was gevaarlijk en zou lang duren.

Stap 4: Oplossing

Oplossing
Oplossing

Na al deze problemen kon ik een vrij eenvoudige oplossing vinden; een XY-oscilloscoop-emulatorprogramma dat audio als invoer nam. Toen ik dit programma eenmaal had gevonden, schakelde ik over van focussen op het maken van een oscilloscoop naar het maken van een manier om een audiobestand van een afbeelding te produceren om op een oscilloscoop weer te geven.

Oscilloscoop-emulator

Stap 5: Randdetectie en Matlab-programma

Randdetectie en Matlab-programma
Randdetectie en Matlab-programma

Hier is een basisstroomschema van mijn programma. Het begint met een afbeelding die in het EdgeDetect.m MATLAB-programma wordt geladen. Dit programma converteert het naar een grijsschaalbeeld en detecteert vervolgens de randen in het beeld. De XY-coördinaten van de gedetecteerde randen worden in twee arrays geplaatst die worden omgezet in een geluidsbestand.

Stap 6: Voorbeeld: Instructables Robot

Hier is een voorbeeld van het proces met de instructables-robot. Download eerst een afbeelding van de instructables-robot en sla deze op als "image.png" in uw MATLAB-werkmap (dezelfde plaats als "EdgeDetect.m"). Zorg ervoor dat de afbeelding niets bevat dat u wilt detecteren, anders kan het een heleboel onnodige coördinaten aan uw geluidsbestand toevoegen. Voer het EdgeDetect-programma uit en de afbeelding wordt geconverteerd naar grijswaarden en de randen worden gedetecteerd en opgeslagen als een geluidsbestand met de naam "vector.wav". Open vervolgens het geluidsbestand in Audacity of een ander geluidsbewerkingsprogramma. Open uw oscilloscoop-emulatorprogramma (link in vorige stap), stel de samplefrequentie in op 192000 Hz, druk op start, klik op de microfoonknop en selecteer de optie line in. Druk in Audacity op "shift + spatiebalk" om het geluidsbestand in een lus af te spelen. Het beeld zou op de oscilloscoop-emulator moeten verschijnen.

Stap 7: Problemen oplossen/voorbeeldbestanden

Bij het ontwikkelen van dit programma moest ik een aantal instellingen in het programma aanpassen. Hier zijn enkele dingen om te controleren als het niet werkt:

- Zorg ervoor dat uw audio-uitgang wordt ingevoerd in uw line-in op uw computer en dat u 2 aparte (links en rechts) audiokanalen hebt

-Als de afbeelding niet wordt gelezen door het MATLAB-programma, moet u deze mogelijk in Paint bewerken en als een ander formaat opslaan.

- Zorg ervoor dat u op regel 61 van de code de nummers van het randdetectiescherm opneemt. Het programma plaatst meestal een rechthoek om het geheel die u kunt uitknippen door deze te wijzigen van "i=1:length(B)" in "i=2:length(B)". Als u specifieke nummers heeft die u wilt opnemen, maar niet allemaal wilt opnemen, kunt u vierkante haken gebruiken om specifieke nummers te krijgen: "[1 3 6 10 15 17]"

-Als de afbeelding er wankel uitziet en de onderdelen overal zitten, moet u mogelijk het aantal monsters verminderen door "N" op regel 76 aan te passen. Hoe eenvoudiger de afbeelding, hoe lager N kan zijn, maar het zou hoger moeten zijn als de afbeelding ingewikkeld is. Voor de robot heb ik N=5 gebruikt.

-Je kunt ook "Fs" aanpassen op regel 86. Hoe hoger de bemonsteringsfrequentie, hoe beter het beeld eruit zal zien, maar sommige geluidskaarten kunnen geen hogere bemonsteringsfrequenties aan. Moderne nummers hebben een bemonsteringsfrequentie van ongeveer 320000 Hz.

Aanbevolen: