| Autor |
Beitrag |
delphistart
      
Beiträge: 119
|
Verfasst: Sa 29.09.07 10:19
Hallo,
Ich möchte gerne mit Delphi einen Ton über die Soundkarte (nicht den PC-Speaker) wiedergeben. Es sollte möglich sein z.B. eine Folge von
2ms. C - 15ms. F - 23ms. pause - 50ms D ...
Ich habe schon viel gegoogelt und gelesen mit MIDI usw. habe aber noch nichts gefunden was mir wirklich weiter hilft. Vielleicht hat ja jemand von euch einen passenden Link für mich. Moderiert von jasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 29.09.2007 um 11:20
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 29.09.07 10:38
Siehe hier: www.noeska.com/doal/
Dann noch
de.wikipedia.org/wiki/Tonleiter
Und die Formel
f = 440 * 2 ^ ((n-8)/12)
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Sa 29.09.07 11:29
Danke für die Hilfe aber das hift mir nicht weiter. Eventuell verstehe ich den ersten Link nur nicht weil er auf Englisch ist, aber ich finde auch so keine Befehle dort mit dehnen mir Delphi einen Ton macht...
Die Tonleite in Hz ümrechnen wäre ja kein Problem, das kann ich auch, aber grig ich das dann zur Sounsdkarte und als TON da raus mit Delphi? Da liegt mein Problem.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 29.09.07 11:35
Im Ersten Link wird genau das erklärt, wie Du einen Ton auf die Soundkarte bekommst. Und so schwer ist das Tutorial von Noeska ja nun auch nicht zu verstehen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 12:21
Delphi-Hilfe
| Zitat: |
Unit
Windows
Syntax
[Delphi] function Beep(dwFreq: Cardinal; dwDuration: Cardinal): LongBool;
Beschreibung
Beep generiert ein Nachrichtensignal mit einer Qt-API.
|
Also: Windows.Beep(440,500) oder so ähnlich 
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Sa 29.09.07 12:31
Ja, Beep ist mir schon bekannt, aber damit geht die Wiedergabe doch nur über den PC-Speaker oder? Ich brauche aber die Ausgabe über die Soundkarte
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 12:41
stimmt, geht über den Speaker, ich such mal, irgendwo hab ich auch ne Routine für die Soundkarte.
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Sa 29.09.07 13:07
BenBE hat folgendes geschrieben: | | Im Ersten Link wird genau das erklärt, wie Du einen Ton auf die Soundkarte bekommst. Und so schwer ist das Tutorial von Noeska ja nun auch nicht zu verstehen. |
Ich war wie ich jetzt festgestellt habe wirklich etwas vorschnell mit meiner Antwort. Habe erst jetzt www.noeska.com/doal/lesson1.aspx gefunden.
Werde das gleich mal probieren.
DANKE!
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 13:08
so, habs gefunden, im Anhang die Unit. Es wird ein Sound generiert und im Speicher abgelegt, der dann über sndPlaySound ausgegeben wird.
Einloggen, um Attachments anzusehen!
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Sa 29.09.07 13:21
delphistart hat folgendes geschrieben: | BenBE hat folgendes geschrieben: | | Im Ersten Link wird genau das erklärt, wie Du einen Ton auf die Soundkarte bekommst. Und so schwer ist das Tutorial von Noeska ja nun auch nicht zu verstehen. |
Ich war wie ich jetzt festgestellt habe wirklich etwas vorschnell mit meiner Antwort. Habe erst jetzt www.noeska.com/doal/lesson1.aspx gefunden.
Werde das gleich mal probieren.
DANKE! |
Wenn ich das jetzt richtig verstanden habe, dann brauche och dafür die Töne in .wav-Dateien. Damit ist das Ganze für mich nicht tauchlich. Ich mussdie Töne wie mit Beep erzeugen aber über die Soundkarte wiedergeben können.
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 13:23
schau in die von mir im Anhang gepostete procedure, die macht genau das 
|
|
delphistart 
      
Beiträge: 119
|
Verfasst: Sa 29.09.07 13:26
TProgger hat folgendes geschrieben: | | so, habs gefunden, im Anhang die Unit. Es wird ein Sound generiert und im Speicher abgelegt, der dann über sndPlaySound ausgegeben wird. |
Bekomme fehler: Datei nicht gefunden al.dcu, ähnliches Problem habe ich auch bei dem anderen Hilfeansatz. Woher bekomme ich die Datei. Kann die nirgends finden.
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 13:30
die unit al.dcu ist doch eine OpenAL-Unit, die wird in meiner Unit/Procedure doch gar nicht gebraucht und steht auch nicht in der uses-Anweisung.
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 13:35
so, hier nochmal nen komplettes project im Anhang. Mehr kann ich nun wirklich nicht tun 
Einloggen, um Attachments anzusehen!
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 29.09.07 13:44
Auf der oben von Noeska verlinkten Seite findest Du unter Downloads die benötigten Dateien: www.noeska.com/doal/downloads/openal.zip
Einfach entpacken.
Das Tutorial (Lesson 1) beschreibt die Grundlegende Funktionsweise. In Lesson 11 wird auch die Software-Synthese von Tönen noch etwas genauer erklärt. Will man diese nicht selber ausführen (was an sich nicht kompliziert ist), muss man auf vorgefertigte WAV-Sounds (oder andere Formate) zurückgreifen. In Lesson 11 ist aber auch noch einiges über die Physiologie erklärt, wodurch man die Sounds "angenehmer" klingen lassen kann.
Insgesamt unterscheided sich dieses Vorgehen von der MMSystem-Version von TProgger nicht allzu sehr, außer, dass sie:
1. Platform-unabhängig
2. nahezu ohne Latenzen
3. vollständig lückenlos beim aneinanderreihen von Tönen
ist.
@TProgger: In deiner Unit ist sogar ein semantischer Fehler bzgl. der oberen Grenzfrequenz drin. Laut Abtasttheorem liegt die maximale Wiedergabe-Frequenz nicht bei 60% der Sampling-Rate, sondern bei höchstens 50%. Da bei Integer-Wiedergabe aber zusätzlich durch Rundungsfehler Aliasing-Effekte auftreten, können schon bei etwa 40% hörbare Stör-Effekte auftauchen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
TProgger
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: Sa 29.09.07 14:13
@BenBE:
Mag sein, jedenfalls funktioniert es, das wurde mal verwendet für ein Programm zum Morsezeichen lernen/üben. Und Fehler lassen sich ja korrigieren 
|
|