Die Soundkarte im Informatikunterricht © 2001 Klaus J. Koch, Marburg

Slides:



Advertisements
Ähnliche Präsentationen
Anwendungen mit dem PC Schreibprogramme
Advertisements

Spektrale Analysen in EMU-R: eine Einführung
Die Installation von Windows 95 erfordert etwas Vorarbeit: Als erstes müssen Sie mit einer Windows 95 Startdiskette den Computer booten.... Dabei wird.
Surfen im Internet.
SEITE 1 Stichpunkte Erläuterungen
Referat zum Thema: Soundkarte Von Julian Weger IT-Klasse 2482.
Computeria Zürich Treff vom 1. März 2006 alle eigenen Daten sichern Ein Vortrag von René Brückner.
10. Grundlagen imperativer Programmiersprachen
Puck eine visuelle Programmiersprache für die Schule
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
Die Soundkarte.
Die Soundkarte Von Patrick Gaschler.
Objektorientierung mit VBA
Sortierverfahren Richard Göbel.
Starten von Multi-Speech Starten des Systems: n PC einschalten n Icon für Multi-Speech auf dem Desktop anklicken n Multi-Speech Main Program wählen Sitzung.
Spektrale Analysen in EMU-R: eine Einführung
Katja Bode MOdulator Der, Die, Das DEModulator.
Polymorphie (Vielgestaltigkeit)
Präsentationen: Multimedia Video Audio Objekte (OLE) Steuerelemente Startseite.
Vorlesung 3: Verschiedenes Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Batch-Programmierung Grundlagen
Hörbilderbuch Ein Baustein zur Medienbildung
DVG Klassen und Objekte
Digital Audio Medientyp digital audio representation
Interrupt Bei dem Transport von Daten zu einem Speichermedium oder zu einer Schnittstelle, muss der PC seine aktuelle Arbeit unterbrechen Man bemüht sich,
Delphi Eine objektorientierte Programmiersprache © Beushausen 2000.
Ende Christian SeitzJochen Braun. Ende Der CMOS Standard Chip.
Medienverarbeitung I, WS 99/00 Simon Barkow, Gunnar Kiesel
Ordner- und Dateistrukturen in Windows 7 (Teil 1)
So gelangt Ihre Ansage auf Ihren Anrufbeantworter
Wenn Sie während des Kurses zur Kaffeemaschine gehen müssen, erstattet Ihnen der Chef die Reisekosten.
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
Steuerung externer Komponenten über ein USB-Interface.
Die Zeichentabelle Zum Einfügen von Sonderzeichen
Aufbau eines Rechners, Hard- und Software
Vortrag D. Braun, Praktikum. Übersicht Pleopatra API Pleopatra Tools Twitter Demonstration Ausblick.
1. Was ist Hardware? Hardware nennt man alle Geräte und Bauteile, die zu einem Computer gehören – also alles was man am Computer anfassen kann. Bsp: Monitor,
OMRON 1 FINS Befehle schicken mit CX – Server Lite Aufgabe :
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Was ist Multimedia? Multimedia = Nutzungsmöglichkeit verschiedener Medien (Text, Bild, Ton) über ein Gerät (PC) Beispiele Abspielen von Film- oder Musik-CDs.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Effiziente Algorithmen
ARTIKULATIONS- EVALUATIONS-SOFTWARE (AES). 2 Anwendungsziel Mit dieser Software kann auf einfache und spielerische Weise durch das benennen von Motiven.
Wahrscheinlichkeitsrechnung
Grundkonzepte des Programmierens (mit ActionScript)
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
Kalibrierung eines Mikrofons unter DASYLab
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Μ Version 1.0Seite 1µVision Start Debugger Set Breakpoint µVision Debugger.
Datentypen: integer, char, string, boolean
Erste Schritte in DELPHI
Datenspeicherung Gk Informatik Jennifer Hahn Stefanie Svenja Bachmann.
Gefährliche Post Eine kurze Präsentation über die Gefahren von -Anhängen. Klicken Sie hier einmal und lehnen Sie sich zurück.
Back, S.; Weigel, H.: Design for Six Sigma. Hanser, München 2014.
Aufbau und Peripherie eines Computers
Audiowandlung und Formate
Multimedia in Java Thomas Witschel, Kerstin Steinert & Erik Reinhard.
AUDIO im WEB HTML & AUDIO WEB_0302 WEBDESIGN MODUL 03 h.huetter 1 Sound-Dateien können, ebenso wie Video-Dateien, auf mehrere Arten in HTML-Dateien integriert.
Hörbilderbuch Ein Baustein zur Medienbildung
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Ein Leitfaden der erklärt, wie und aus was ein PC-System gebaut ist.
Programmiersprache PASCAL
Objektorientierte (OO) Programmierung
Objektorientierte Programmierung §Klassen §Objekte §Attribute §Eigenschaften §Methoden §Datenkapselung §Ereignisse §Vererbung §Entwicklungszeit §Laufzeit.
Mp3 und co. – Audiobearbeitung am PC. Vorteile Audio am PC Audiofiles lassen sich einfacher verwalten und weiter verarbeiten als Kassettenaufnahmen.
Hardware Nadine Safron.
Die Komponenten Von einem PC.
 Präsentation transkript:

Die Soundkarte im Informatikunterricht © 2001 Klaus J. Koch, Marburg Was ist eine Soundkarte? Verwendung als Analog-I/O in der Schule Vorbereitungen, Programmierung in Delphi Samplen und Darstellen Erfassen und Auswerten Erzeugen und Wiedergeben einer Datei Direkte Ausgabe Weitere Informationsquellen, Diskussion Deutscher Verein zur Förderung des mathematischen und naturwissenschaftlichen Unterrichts Landesverband Hessen, 30. Hessische Landestagung, 5. September 2001 in Marburg, 14:30 Uhr, HS 113

Didaktische Begründung Siehe entsprechende Beiträge aus den 80er Jahren Hohe Motivation bei Schülern (und Lehrern) überzeugende Demonstration des EVA-Prinzips E V A

Was ist eine Soundkarte? (1) Die erste Sound Blaster für IBM-PCs wurde von Creative Labs bereits 1989 eingeführt. http://scitsc.wlv.ac.uk/~e9567075/CP2014/Scards.htm DOS-Treiber verfügbar. Ursprünglich häufigster Einsatzbereich: Aufpeppen von PC-Spielen durch Sound-Effekte. Daher der Game-Port auf jeder Soundkarte. Außerdem Wiedergabe von Audio-CDs. Daher früher oft Anschluß für diverse CD-ROM-Laufwerke vorhanden. Selten benutzt, aber Standard: Eingänge

Was ist eine Soundkarte? (2) Analoge Eingänge: Line Mikrofon Audio-CD Analoge Ausgänge [Line] Kopfhörer [Lautsprecher] Zusätzliche Optionen wie digitale Ein-/Ausgänge, Wavetable, MIDI etc. werden hier nicht behandelt.

Was ist eine Soundkarte? (3) Einige zusätzliche technische Angaben: der Mikrofon-Eingang unterstützt i.a. nur ein Mono-Mikrofon. Auf dem für den zweiten Kanal vorgesehenen Stift liegt oft eine Hilfsspannung (1,5 - 5 V) für Mikrofonvorverstärker. Der ist meist auch erforderlich! Falls kein Lautsprecher-Anschluß vorhanden ist, können an den Line- oder Kopfhörer-Ausgang auch Kleinlautsprecher mit 25 - 50 W angeschlossen werden. An dem GAME-Anschluß liegt u.a. eine Spannung von 5 V. Achtung: Dieser Anschluß ist i.a. nicht abgesichert!

Verwendung als Analog-I/O in der Schule Vorteile: durch Treiber ins Betriebssystem eingebunden, keine Peeks und Pokes hohe Auflösung: 16 Bit hohe Geschwindigkeit: 44100 Samples/s 2 Kanäle Oft ohne Aufpreis enthalten (Notebook) Nachteile: nur für Wechselspannungen ab ca. 20 Hertz für manche Zwecke zu langsam Eingangsempfindlichkeit (modellabhängig) oft zu niedrig

Vorbereitungen, Programmierung in Delphi Einbau und Installation einer Soundkarte (falls noch nicht erfolgt. Gedenket der Interrupts und DMAs!) Beschaffen einer geeigneten Delphi-Komponente (Empfohlen: AudioIO.ZIP* von John Mertus, weil mit Sourcen, verwendbar ab Delphi 2!) und Installation *) zu finden auf: http://homepages.borland.com/efg2lab/Library/Delphi/Graphics/Multimedia.htm

Alternativen zur eigenen Programmierung Verwendung separater Programme zur Kommunikation mit der Soundkarte (Schreiben der erfassten Daten in eine Datei bzw. Ausgabe einer Datei an die Soundkarte), z.B. Cooledit, Goldwave, etc. zur Datenmanipulation, Auswertung, Aufbereitung und Darstellung mit Tabellenkalkulationsprogramm, z.B. Excel

Konventionelle Programmierung ohne Ereignissteuerung Start Konventionelle Programmierung ohne Ereignissteuerung { (time ist die Systemzeit) T=time V=input V speichern, anzeigen, verarbeiten Die Meßwerte sind in konstanten Zeitabständen zu erfassen. Daher muß sichergestellt werden, daß die Anweisungen in der Schleife innerhalb des Zeitintervalls dt abgearbeitet werden können. T=T+dt time<T? ja Stop (Abfrage für Stop fehlt noch)

Samplen und Darstellen (1) Vergessen Sie Peeks und Pokes Unter Windows werden Ressourcen bereitgestellt Die Puffergröße unterliegt den üblichen Systembegrenzungen. Mono, 16 Bit, 22050 Samples/s, Size=1MByte ergibt 22,67 Sekunden. und Botschaften versandt

Samplen und Darstellen (2) function TForm1.AudioIn1BufferFilled(Buffer: PChar; var Size: Integer): Boolean; var SP : ^SmallInt; i, N, v, xMin, xMax : Integer; begin N := Size div 2; // sizeof(smallint) = 2 SP := Pointer(Buffer); xMin := SP^; xMax := xMin; for i := 0 to N-1 do v := SP^; Inc(SP); if xMin > v then xMin := v; if xMax < v then xMax := v; end; if Min > xMin then Min := xMin; if Max < xMax then Max := xMax; TempMax := xMax; if Abs(xMin) > xMax then TempMax := Abs(xMin); Result := TRUE; (aus dem Beispiel des Autors) Diese Methode ermittelt jedesmal, wenn der Puffer gefüllt wurde, den Maximalwert, der in dieser Zeitspanne auftrat.

Samplen und Darstellen (3) Allein durch Ereignissteuerung wird die Hardware natürlich nicht schneller. (Eher im Gegenteil!) Aber: Das Übertragen der Meßwerte vom Eingabeport in den Puffer erfolgt jetzt durch DMA (Direct Memory Access) ohne Beanspruchung der CPU. Die Bedingung „Verarbeitungszeit < Meßintervall“ gilt jetzt nicht für einen Meßwert, sondern gemittelt für N Meßwerte, wobei N die Puffergröße ist.

Samplen und Darstellen (4) function TForm1.AudioIn1BufferFilled(Buffer: PChar; var Size: Integer): Boolean; type puffer = array[0..1023] of SmallInt; var zeiger : ^puffer; i, x, N : Integer; begin N := Size Div 2; zeiger := Pointer(Buffer); i := 0; // zeigt in den Puffer x := 0; // zeigt auf den Oszi-Schirm PaintBox1.Canvas.MoveTo(x,128+zeiger^[i] div 256); while i < N do PaintBox1.Canvas.LineTo(x,128+zeiger^[i] div 256); inc(i); inc(x); end; Result := TRUE; Hier haben wir bereits einen vollständigen Oszillographen. Es fehlen lediglich noch Anweisungen zum Löschen des vorhergehenden Bildschirms und Algorithmen zur Triggerung.

Samplen und Darstellen (5) function TForm1.AudioIn1BufferFilled(Buffer: PChar; var Size: Integer): Boolean; var SP : ^Byte; i, N, v : Integer; const f = 5; begin N := Size; SP := Pointer(Buffer); with Canvas do FillRect(ClientRect); Canvas.Pen.Color := clLime; // zeichne links das Ende von letztem Puffer Canvas.MoveTo(0,128+f*(rechts[0]-128)); for i := 0 to 255 do Canvas.LineTo(i,128+f*(rechts[i]-128)); Canvas.Pen.Color := clRed; // zeichne rechts den Anfang von neuem Puffer v := SP^; Inc(SP); Canvas.LineTo(256+i,128+f*(v-128)); end; SP := Pointer(Buffer); // kopiere das Ende von neuem Puffer Inc(SP,N-256); // in ein temporäres Array for i := 0 to 255 do // rechts[i] := SP^; Inc(SP); Result := TRUE; Vertrauen Sie fremden Puffern? Visuelle Prüfung, ob das Ende des vorausgehenden Puffers mit dem Anfang des folgenden Puffers „stetig“ fortgesetzt wird.

Samplen und Darstellen (6) function TMiniOszi.AudioIn1BufferFilled(Buffer: PChar; var Size: Integer): Boolean; var i, N, v : integer; SP : ^SmallInt; begin Chart1.Series[0].Clear; N := Size div 2; SP := Pointer(Buffer); for i := 0 to N-1 dDo v := SP^; Inc(SP); Chart1.Series[0].AddXY(i, v, '', clBlack) end; result := true; Wer sich die Arbeit mit dem Canvas sparen will, kann einfach die in Delphi enthaltene TChart-Komponente benutzen.

Samplen und Darstellen (7) Beispiel für einen „Freihandversuch“ mit der Soundkarte: Zur Zeit der altmodischen (nichtelektronischen) Telefonapparate gab es Induktionsspulen mit Saugfuß, um eigene Telefongespräche auf dem Cassettenrecorder mitzuschneiden. Diese haben bereits den für die Soundkarte benötigten 3,5mm-Stecker. Falls kein Telefonadapter zur Hand, genügt auch eine 3000-Wdg-Spule aus der Physik-Sammlung mit einem entsprechenden Übergangskabel. Wenn man einen kleinen Magneten an dieser Induktionsspule vorbeiführt, ergibt sich das nebenstehende Bild.

Erfassen und Auswerten (1) Aufgabenbeispiel: Es sollen Ereignisse gezählt werden, die durch folgende Eigenschaften spezifiziert sind: Ein Ereignis hat eine bestimmte Mindestamplitude Zwei Ereignisse werden durch eine Pause von einer bestimmten Mindestdauer unterbrochen, in der die Mindestamplitude nicht erreicht wird.

Erfassen und Auswerten (1a) Impulse sehen in der Realität meist nicht so aus wie einem die Literatur es weismachen will. Zur Definition eines Impulses Abstand Schwelle Die Festlegungen von Schwelle und Abstand sind mehr oder weniger willkürlich.

Erfassen und Auswerten (2) function TForm1.AudioIn1BufferFilled(Buffer: PChar; var Size: Integer): Boolean; var SP : ^SmallInt; i, N, v : Integer; begin N := Size div 2; SP := Pointer(Buffer); for i := 0 to N-1 do v := SP^; Inc(SP); t := pz*N+i; case zustand of BinInPause : WarteAufEreignis; WarteAufPause : WarteAufEreignisEnde; end; inc(pz); Result := TRUE; procedure WarteAufEreignis; begin if abs(v) > MindestAmpl then zustand := WarteAufPause; Shape1.Brush.Color := clRed; inc(zaehler); Label1.Caption := IntToStr(zaehler); tEvent := t; end; procedure WarteAufEreignisEnde; begin if abs(v) > MindestAmpl then tEvent := t; if t - tEvent > PausenDauer then zustand := BinInPause; Shape1.Brush.Color := clGreen; end;

Erfassen und Auswerten (3) Viele akustische Signale, z.B. Musikinstrumente, werden sinnvollerweise in der Frequenzverteilung analysiert. Um dies während der Erfassung durchzuführen, ist die konventionelle diskrete Fourieranalyse zu langsam. Erst mit der Fast-Fourier-Analyse kann in Echtzeit ausgewertet werden. Die zugrundeliegenden Algorithmen sind jedoch i.a. für die Behandlung in der Schule zu komplex.

Erzeugen und Wiedergeben einer Datei Für das programmgesteuerte Abspielen einer Sound-Datei gibt es mehrere Möglichkeiten: Unit MMSystem: SndPlaySound('Clock.wav',0) Unit Classes: TMemoryStream Komponente TMediaPlayer: MediaPlayer1.Filename := 'Clock.wav'; MediaPlayer1. Open; MediaPlayer1. Play;

Aufbau von Dateien im WAV-Format Alle bisherigen Versuche zum effektiven und verlustfreien Komprimieren von Audio-Dateien müssen als gescheitert betrachtet werden. (MP3 ist hochkompliziert und nicht verlustfrei!) Nur so ist es zu erklären, daß das unkomprimierte Windows-Format *.WAV (genauso wie das entsprechenden Graphik-Format *.BMP) nach wie vor so weit verbreitet ist. Die Analyse des Aufbaus gelingt durch Vergleich einiger Audio-Dateien:

Direkte Ausgabe (1) Vergessen Sie Peeks und Pokes Unter Windows werden Ressourcen bereitgestellt und Botschaften versandt

Direkte Ausgabe (2) Ton mit konstanter Frequenz 440 Hz function TForm1.AudioOut1FillBuffer(Buffer: PChar; var Size: Integer): Boolean; var P : ^SmallInt; I, tp, N : Integer; const Freq = 440; begin N := Size div 2; P := Pointer(Buffer); for i := 0 to N-1 do tp := N*AudioOut1.FilledBuffers+i; P^ := Round(MaxShort*Sin(2*pi*tp*Freq/AudioOut1.FrameRate)); Inc(p); end; Result := TRUE; Ton mit konstanter Frequenz 440 Hz Beim Start werden zunächst alle 4 Puffer mit Daten gefüllt. Erst dann wird mit der Ausgabe begonnen. Sobald ein Puffer abgearbeitet ist, fordert er neue Daten an. In der Zwischenzeit wird erst mal der nächste Puffer abgearbeitet.

Direkte Ausgabe (2a) Je nach Qualität von Sound- karte, Endstufe und Belastung SINUS DREIECK sind die Resultate mehr oder weniger zufrieden- stellend. SÄGEZAHN RECHTECK

Direkte Ausgabe (3) Anfangsfrequenz muß vorher festgelegt worden sein. function TForm1.AudioOut1FillBuffer(Buffer: PChar; var Size: Integer): Boolean; var P : ^SmallInt; I, tp, N : Integer; begin Label1.Caption := Format('Frequenz: %8.1f Hz',[freq]); N := Size div 2; P := Pointer(Buffer); for i := 0 to N-1 do tp := N*AudioOut1.FilledBuffers+i; P^ := Round(MaxShort*Sin(2*pi*tp*freq/AudioOut1.FrameRate)); Inc(p); freq := freq*1.000001; end; Result := freq < 20000.0; // stop, wenn 20 kHz erreicht Anfangsfrequenz muß vorher festgelegt worden sein. Ton mit ansteigender Frequenz Diese Methode sollte einen gleichmäßig ansteigenden Ton erzeugen. Klingt aber merkwürdig ...

Direkte Ausgabe (4) function TForm1.AudioOut1FillBuffer(Buffer: PChar; var Size: Integer): Boolean; var P : ^SmallInt; I, tp, N : Integer; fneu : extended; begin Label1.Caption := Format('Frequenz: %8.1f Hz',[freq]); N := Size div 2; P := Pointer(Buffer); for i := 0 to N-1 do inc(sample); tp := N*AudioOut1.FilledBuffers+i; P^ := Round(MaxShort*Sin(2*pi*tp*freq/AudioOut1.FrameRate+phase)); Inc(p); fneu := freq*1.000001; phase := 2*pi*tp/AudioOut1.FrameRate*(freq-fneu)+phase; freq := fneu; end; Result := freq < 20000.0; // stop, wenn 20 kHz erreicht Erst mit einer Phasenkorrektur ergibt sich das gewünschte Ergebnis.

Direkte Ausgabe (5) Beispiel für akustische Täuschungen: Ein Klang, der aus drei Teiltönen besteht; deren Tonhöhe fortlaufend ansteigt. Erreicht ein Ton die obere Frequenzgrenze, so wird sie auf die unter Frequenzgrenze zurückgesetzt, um erneut anzusteigen. Damit dieser Vorgang unkenntlich gemacht wird, wird die Amplitude der Teiltöne an den Frequenzgrenzen auf Null abgesenkt. (nach R. Shepard)

Weitere Informationsquellen (1) W. Stein: Versuche mit der Soundkarte. Aus der Klett-Buchreihe Impulse Physik. ISBN 3127725752 F. Bönsel (Ober-Ramstadt): Schallwellen mit der PC-Soundkarte vermessen. Vortrag auf der 26. MNU-Landestagung am 17.9.97 in Darmstadt S. Schaal, G. Braune: Physik lernen am Fahrrad. Http://www.ipn.uni-kiel.de/aktuell/ipnblatt/ip499/ip499r05.htm Gert Braune (Humboldt-Schule Kiel/IPN): Fachübergreifende Unterrichtsprojekte mit der Soundkarte. Vortrag auf der 47. MNU-Tagung in Bremerhaven am 20.11.2000 Versuchsanleitungen der TU München. http://www.phprakt.mw.tu-muenchen.de/mw/mw_v01.html

Weitere Informationsquellen (2) Using a sound card in QBasic. http://www.fys.nl/~bergmann/soundblaster.html FreeVIEW sound http://www.ines.de/sound.htm Gymnasium Korschenbroich: Messung der Schallgeschwindigkeit mit einer Soundkarte. http://users.aol.com/gykophys/vschall.htm Messungen zum freien Fall mit der Soundkarte. http://users.aol.com/gykophys/ffall.htm Eine Messung zum Dopplereffekt. http://users.aol.com/gykophys/doppler.htm Akustische Täuschungen http://users.aol.com/gykophys/shep.htm

Diskussion Das vorgestellte Material ist abrufbar unter: http://www.physik.uni-marburg.de/didact/mnu/mr2001.html Fortführung der Diskussion in Form einer öffentlichen Mailingliste. e-mail an: soundkarte%klaushilf@mailings.gmx.de