|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
QBMaik
Anmeldungsdatum: 17.09.2004 Beiträge: 67 Wohnort: 25899 Niebüll
|
Verfasst am: 12.10.2004, 20:36 Titel: Mikrofonerkennung mit Qbasic? |
|
|
Das würde mich sehr interessieren. Könnte man mit QBasic übers Mikrofon Audioaufzeichnungen machen und diese im Waveformat speichern?
Das wäre schon toll. Ist es dann auch möglich, die Frequenz mit Hertz als Zahlenwert zu messen?
Gibt es irgendwelche Engines, die sich mit QBasic per Schnittstelle verbinden lassen, die also so funktionieren wie die direct sound for qb libraries? |
|
Nach oben |
|
|
E-P-S
Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 12.10.2004, 20:58 Titel: |
|
|
prinzipiell ist es möglich Audio Daten auch mit QB aufzuzeichnen.
Einschränkung: Die Soundkarte muß DOS kompatibel sein, also von DOS - sprich von QB aus ansprechbar sein.
Ob eine der zahlreichen LIB's sowas unterstützt ist allerdings fraglich - ich hab's zumindest nicht im Kopf ob das eine hergibt.
Hertz Zahlen kann man aber nicht messen. Jedenfalls nicht mit nem Mikro. Die Frequenz in der Wave Dateien erstellt werden legt man beim aufzeichnen bzw. erstellen selbst fest. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 13.10.2004, 00:29 Titel: Würd schon gehen |
|
|
Also ich schließe mich EPS an, aber ich glaub da braucht man nicht mal ne LIB.. es gibt da einen bestimmten Port, an dem man einfach die vom Mikrofon kommen Audiosignale als Byte abrufen kann.
Bloß leider weiß ich im Moment nicht, welcher Port das ist .. kann aber mal nachgucken. Aber im ABC-Archiv hab ich glaubich mal sowas gefunden, da musste mal suchen.
Ich weiß noch genau, dass ich mal so ein Programm gemacht hatte, und als Sounddatei gespeichert war das ergebnis echt... beRAUSCHEND _________________
|
|
Nach oben |
|
|
E-P-S
Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 13.10.2004, 01:42 Titel: |
|
|
von QB aus ist das natürlich machbar unter der oben genannten Voraussetzung.
Er hatte aber nach ner LIB gefragt.
Ich hab mal ein Prog geschrieben um Waves auszugeben, aufzeichnen wäre aber genau so möglich.
Man muß sich nur ein wenig mit der Programmierung des DSP (Soundchip) beschäftigen. Am besten mal googeln.
ABER ACHTUNG:
Ich hab mir damals meine Soundkarte dabei zerschossen - ja sowas ist möglich. Gut aus heutiger Sicht war es kein Verlust (16-Bit Sound) aber bei den Karten die heute eingebaut sind (wenn nicht sogar Onboard) wäre das echt schade. Also lieber mit ner alten rumtesten. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 13.10.2004, 14:13 Titel: Beispiel |
|
|
Ok, also mit einer LIB kann ich dir auch nicht weiterhelfen, aber ich hab hier mal ein Beispielprogramm zusammengeschnippelt, welches Daten vom Mic holt und sie auf dem SB gleich wieder ausgibt.
Allerdings ist die Samplingrate verdammt gering
Code: | DECLARE FUNCTION samplebyte% (bp%)
DECLARE SUB writedsp (byte%, bp%)
DECLARE SUB sbreset (bp%)
CONST TrigLevel = 110
'$DYNAMIC
bp% = &H220
CALL sbreset(bp%)
WAIT &H22C, &H80, &HFF
OUT &H22C, &HD1
DO
i% = samplebyte(bp%)
WAIT &H22C, &H80, &HFF
OUT &H22C, &H10
WAIT &H22C, &H80, &HFF
OUT &H22C, i%
LOOP WHILE INKEY$ = ""
WAIT &H22C, &H80, &HFF
OUT &H22C, &HD3
REM $STATIC
FUNCTION samplebyte% (bp%)
CALL writedsp(&H20, bp%)
datavail% = bp% + 14
dly:
IF INP(datavail%) AND &H80 = 0 THEN GOTO dly
datread% = bp% + 10
bt% = INP(datread%)
samplebyte% = bt%
END FUNCTION
SUB sbreset (bp%)
dspreset% = bp% + 6
OUT dspreset%, 1
FOR t% = 1 TO 10
a% = INP(dspreset%)
NEXT t%
OUT dspreset%, 0
dspread% = bp% + 10
FOR t% = 1 TO 10
a% = INP(dspread%)
NEXT t%
END SUB
SUB writedsp (byte%, bp%)
dspcmd% = bp% + 12
FOR t% = 1 TO 8
q% = INP(dspcmd%)
NEXT t%
OUT dspcmd%, byte%
END SUB
|
_________________
|
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|