MicFFT – Software per analizzare segnali da scheda audio (Software MS-DOS)

Aperto da INFORADIO, Ven 31 Agosto, 13:19 2018

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Senza nome 1

"In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei" (Disclaimer)

INFORADIO

MicFFT – Software per analizzare segnali da scheda audio (Software MS-DOS)

Disponibile alla seguente pagina: http://www.forumradioamatori.it/download/download-dos/HamSoft/HamSoft.html



MicFFT v1.2
29 luglio 1993

Scritto da Craig M. Walsh
CIS 70701,1614
Internet: Walsh@biovx1.dnet.nasa.gov
          Walsh@129.97.26.1


Introduzione:

MicFFT è un programma che campiona i dati da una scheda audio o
porta analogica-digitale (ADC) indirizzabile e traccia la
caratteristiche spettrali della forma d'onda campionata. Il programma utilizza
un algoritmo Fast Fourier Transform (FFT) per trasformare il
dati campionati (nel dominio del tempo) al dominio della frequenza. Il
il programma ottiene 256 campioni modulati a impulsi (PCM-vedi sotto)
dall'ADC a una frequenza di campionamento definita, quindi traccia il
dati trasformati. MicFFT scorre continuamente tra i campionamenti
e tramando. Pertanto, il programma agisce in qualche modo come un tempo reale
analizzatore di spettro e su macchine veloci con schede audio veloci,
è capace di prestazioni impressionanti. MicFFT può essere paragonato a
analizzatori di spettro trovati su alcuni equalizzatori audio e can
fornire informazioni dettagliate sui componenti spettrali e
intensità relativa delle forme d'onda continue.

Miglioramenti nella versione 1.2:

Il problema principale incontrato da molti di voi con i media
Vision Pro Audio Spectrum 16 è che MicFFT v1.1 non è stato eseguito
correttamente in modalità compatibilità Sound Blaster. Questa versione
ora supporta esplicitamente ProAudio Spectrum 16 (e la maggior parte
probabilmente, l'originale ProAudio Spectrum), e funzionerà anche con
questa scheda in modalità di compatibilità SB senza molti problemi.
Pertanto, se si dispone di un PAS16, si prega di utilizzare l'opzione -B2 quando
eseguire il programma. Questa versione ha anche alcuni miglioramenti
l'interfaccia. Ora, i dati PCM di fase e grezzi possono essere opzionalmente
tracciato, insieme ai dati spettrali. Inoltre, le frequenze possono essere
regolato durante il campionamento, in modo che la frequenza di campionamento ottimale
può essere selezionato per una particolare forma d'onda. Questi miglioramenti
sono relativamente minori, ma mentre sto scrivendo, MicFFT v2.0 è in
i lavori, che avranno caratteristiche molto più impressionanti (come a
interfaccia utente reale, input DMA, routine I / O file, ecc.) Vedi
la sezione, DIREZIONI FUTURE sotto per maggiori informazioni.


Miglioramenti nella versione 1.1:

Dal momento che molti di voi hanno ascoltato la mia richiesta di commenti nell'ultimo
versione, sono stato in grado di ottenere informazioni su quali miglioramenti
includi in questa versione di MicFFT. Il problema principale che ho trovato è stato
che la versione originale di MicFFT non supportava il suono
Carte compatibili Blaster o Sound Blaster, anche se io
presumibilmente potrebbe. Dopo alcune indagini, l'ho trovato
il campionamento sulla scheda SB richiede un bel po 'di codice aggiuntivo
non era incluso nella versione originale di MicFFT. Da
Non ho una scheda SB (ho un Covox Sound Master II e l'am
abbastanza felice fino ad ora!), ho dovuto trovare qualcuno là fuori
con uno per dare una mano. Fortunatamente, Chris Pye ha deciso di aderire
il "team di sviluppo" di MicFFT e ha fornito il campionamento SB
routine (insieme a idee aggiuntive, ecc.) per questo nuovo
versione. Ora, MicFFT v1.2 ha il supporto esplicito per SB 8-bit
carte (il campionamento a 16 bit è, purtroppo, non ancora incluso).
Inoltre, altre carte con compatibilità Sound Blaster
dovrebbe funzionare anche con MicFFT (vedi Compatibilità); lo spero
ora non mangio le mie parole!

MicFFT ha anche una nuova funzione che prevede il congelamento
campionamento della forma d'onda e consente un'analisi dettagliata del congelato
forma d'onda. Questa funzione ha una linea del cursore posizionabile, che
può essere usato per determinare la frequenza e l'ampiezza di a
banda specifica sulla trama. Il programma ha anche una nuova trama
modalità che consente di generare grafici in entrambi i grafici a barre
stile, come implementato nella versione originale o grafico lineare
stile, che produce un output che potrebbe essere più adatto
alcune applicazioni. Anche l'output viene ridimensionato in decibel (dB)
passi. Alcune nuove opzioni di filtro sono state aggiunte a MicFFT
v1.2; Squelch consente di filtrare i rumori spuri al di sotto di un set
soglia; L'involucro Coseno viene utilizzato per ridurre la trasformazione
errori derivanti da campionamento delle discontinuità (vedi Coseno
Busta, sotto). Inoltre, alcuni bug che non lo erano
identificato prima della versione originale sono stati corretti (spero).


Requisiti:

MicFFT è un programma ad alta intensità di elaborazione e richiede un veloce
computer per ottenere risultati rapidi. È stato sviluppato su a
33MHz 486-DX (con coprocessore a virgola mobile incorporato), un Super
Sistema VGA e una scheda audio Covox SoundMaster II. Grafica
le modalità testate includono sia EGA che VGA, quindi entrambe funzioneranno (vedi
Opzioni). MicFFT cercherà un coprocessore (e funzionerà
drammaticamente più veloce se ne viene trovato uno, ma ne emulerà uno se a
coprocessore non è presente. Inoltre, alcuni 286 specifici
il codice è incluso per la velocità e quindi non funzionerà correttamente
su macchine con processori minori. Dal momento che le routine di campionamento
sono a tempo e indipendenti dalla trasformazione e dalla trama,
la velocità di una macchina particolare non dovrebbe influire sulla precisione
di frequenza in uscita in modo significativo, a meno che la frequenza di campionamento
è eccessivamente alto; solo la velocità con cui verranno tracciati i dati
essere influenzato


Schede audio supportate:

Come detto sopra, questa versione di MicFFT supporta esplicitamente il
Covox SoundMaster II (impostazione predefinita), le schede Sound Blaster per 8-
bit di campionamento e le schede ProAudio Spectrum 16. Il suono
Modalità Blaster, che include codice aggiuntivo per l'invio
comandi per controllare le specifiche del campionamento, è disponibile usando
il flag -B1 (vedi Opzioni). Il ProAudio Spectrum 16 (e
forse il ProAudio Spectrum originale) è supportato, e il
l'utente deve specificare l'opzione -B2 sulla riga di comando. Altro
anche le carte possono funzionare, in particolare se alcuni mezzi per il suono
La compatibilità con il blaster è fornita dalla carta. The Pro Audio
Anche la scheda Spectrum 16 funzionerà in modalità SoundBlaster,
dal momento che implementa questa compatibilità nell'hardware del
carta stessa. Ho testato il programma con la scheda PAS16 e
funziona. La compatibilità Covox (impostazione predefinita) probabilmente non lo è
esplicitamente fornito da altri fornitori di schede audio. Tuttavia
può essere generalmente utile a coloro di cui sono in grado le carte
interrogare l'ADC in modo indipendente (senza comandi espliciti per
controllo del campionamento); MicFFT fornisce un mezzo per cambiare il
indirizzo di porta ADC predefinito. Nella modalità Covox, MicFFT semplicemente
cerca i dati su questa porta a una velocità definita utilizzando i tempi
routine nel programma. L'indirizzo di porta predefinito incluso in
il programma è 22F (hex). Questo è in realtà un indirizzo di porta
(0x220h) e offset ADC (0x00F) aggiunti insieme. Se hai un
carta in cui viene fornito un indirizzo di porta nella documentazione, e a
Viene anche fornito l'offset dell'ingresso ADC, basta aggiungere i due insieme (usando
un calcolatore esadecimale) e usa il flag -P per far sapere a MicFFT quale
indirizzo che devi usare. Mi rendo conto che questa discussione potrebbe essere
un po 'tecnico, ma lo fornisco in modo che gli utenti con le carte altro
di quanto sopra menzionato può tentare di capire quali opzioni
alterare. So che l'incompatibilità è frustrante, quindi se tu
avere una carta che non è esplicitamente supportata (e c'è
davvero una lista in crescita), includerò la compatibilità per tale
schede per coloro che possono ottenere il mio codice specifico per il campionamento PCM.
Preferisco avere segmenti di codice breve (in C, o assemblatore se
possibile) da guardare piuttosto che da librerie, dato che ho bisogno di esserlo
in grado di controllare alcuni aspetti del campionamento e ho bisogno di te
fare volontariato per testare il codice modificato. Contattami al
indirizzo fornito (vedi Come contattare l'autore), e lo farò felicemente
discuti le tue esigenze specifiche. (Va notato che io sono
attualmente il porting del programma su Windows. Questo sarà utile,
poiché la compatibilità non sarebbe un problema qui, a condizione che il
l'hardware ha l'impostazione del driver PCM appropriata in Windows.)


Lezione 1. Campionamento PCM:

Il campionamento è un processo in cui un flusso continuo di dati è
suddiviso in blocchi di dati utilizzabili dal sistema di campionamento.
Il campionamento PCM è un processo mediante il quale viene eseguito il polling di questi dati continui
a una tariffa definita. Poiché siamo interessati ai segnali analogici
il più delle volte (il tipo che inserisce le nostre schede audio tramite il
Porta ADC), è necessario prima trasformare i dati da un
rappresentazione analogica a quella digitale. Questo è il lavoro del
ADC. Questo processo è abbastanza complicato, ma è sufficiente dire
che è un valore analogico (da - infinito a + infinito)
trasformato in un valore digitale esplicito. Dal momento che il digitale
il valore può rappresentare solo un valore discreto, ce ne possono essere alcuni
perdita di risoluzione in questa trasformazione. Schede a 16 bit (quali
può rappresentare 64 K diversi livelli di input) sono molto più precisi
a tal fine di carte a 8 bit (che può riprodurre solo 256
diversi livelli). Inoltre, poiché il campionamento PCM presuppone che il
la forma d'onda analogica ha componenti su entrambi i lati dello zero (ad es.
parti negative e positive di un'onda), una metà del digitale
l'intervallo è negativo, l'altra metà positiva. Questo riduce il
numero di possibili ampiezze del valore assoluto digitale di un fattore
di due, che influenza la gamma dinamica (cioè il più basso a
massima ampiezza) di un particolare sistema digitale.

La conversione digitale produce un valore di esempio, e questo viene fatto a
una frequenza di campionamento discreta in modo che punti di un continuo
la forma d'onda analogica è approssimata da un insieme di valori digitali.
Questi valori digitali possono essere memorizzati nella memoria del computer
e riprodotto per riprodurre un'approssimazione dell'originale
forma d'onda analogica. Il processo di ricostruzione di una forma d'onda analogica
da campioni digitali richiede che i campioni vengano "riprodotti"
ad un ritmo simile a quello dei campioni
originariamente ottenuto. Per fare ciò, ogni campione viene trasformato
da un valore digitale a un valore analogico (utilizzando un
convertitore analogico o DAC) e questo viene fatto per tutto il materiale memorizzato
campioni alla frequenza di campionamento prescelta. Quindi, a
l'approssimazione della forma d'onda analogica originale può essere riprodotta.

La precisione del campionamento dipende quindi da due variabili principali:
la frequenza di campionamento e il numero di possibili valori del campione. Il
la frequenza di campionamento può influire sulla precisione poiché definisce il massimo
possibile frequenza dalla forma d'onda originale che può essere
campionato. Il teorema del campionamento di Nyquist stabilisce che il
la frequenza di campionamento deve essere almeno il doppio della frequenza di
componente a più alta frequenza da campionare. Quindi, frequenze
maggiore della metà della frequenza di campionamento (il limite di Nyquist)
non sarà campionato con precisione. Tentando di superare questo
limite introdurrà errori nella forma d'onda campionata. Ottenere
attorno a questa limitazione in sistemi di campionamento pratici (ad es.
registrazione e riproduzione di Compact Disc digitali, ecc.), ingegneri
utilizzare filtri passa-basso che attenuano i segnali delle frequenze
superiore al limite di Nyquist prima del campionamento digitale. Per
CD, che hanno una frequenza di campionamento di 44,1 kHz, questi passa-basso
i filtri iniziano ad attenuarsi a circa 21 kHz e hanno ridotto il
segnale al limite di Nyquist di 22.05 kHz quasi interamente. Così,
un CD può avere dati campionati fino a circa 22 kHz, ma non più in alto, e
è quindi "limitato nella larghezza di banda". Campionamento di frequenze più alte
creerebbe un rumore indesiderato nell'output. (Si noti che 44.1
kHz è scelto perché è il valore più basso per
campionamento accurato dello spettro di frequenze importanti in
segnali musicali; circa da 15 Hz a 20 kHz. Qualsiasi valore più alto sarebbe
essere inutile e richiederebbe un aumento della conservazione dei dati, a
ovvia limitazione per un sistema con due canali PCM digitali
e dati di correzione degli errori inclusi con i dati PCM).

La seconda limitazione al campionamento PCM accurato è correlata al
numero di bit contenuti in ciascun campione. Il materiale campionato CD è 16-
bit PCM. Ciò corrisponde a un intervallo dinamico di circa 96
decibel (dB). I sistemi che utilizzano campioni di dimensioni più piccole lo faranno
ovviamente hanno un range dinamico più basso. Quindi, avranno un
intrinsecamente più alto livello di rumore, e sono inappropriati per
riproduzione ad alta fedeltà del suono. Certo, il compromesso
tra qualità del suono e archiviazione dei dati è un progetto importante
considerazione in qualsiasi sistema PCM.


Lezione 2. Sovrapposizione:

È abbastanza facile capire da che cosa sembra un sinewave
una trama di oscilloscopio. Probabilmente hai sentito cos'è un sinusoide
suona come; piuttosto noioso. Una semplice onda sinusoidale può produrre a
tono. Tuttavia, la maggior parte del suono che ascoltiamo e trova piacevole lo è
molto più contenuto di una singola onda sinusoidale. Strumenti musicali
produrre forme d'onda con una fondamentale (non confondere con la mia
terminologia di seguito; fondamentale qui si riferisce al primario
frequenza creata da uno strumento) frequenza (onda sinusoidale) e a
gruppo di sinewaves armonici a multipli del fondamentale.
Queste "armoniche" danno ad ogni strumento un suono riconoscibile, o
timbro. Quando rompiamo la forma d'onda, è possibile mostrare
che la forma d'onda originale è quindi l'aggiunta del
onda sinusoidale fondamentale e tutte le sue onde sinuose armoniche. Questo
l'aggiunta è chiamata sovrapposizione. Certo, la sovrapposizione può
essere sia additivo, sia distruttivo. Lattina di sovrapposizione distruttiva
in realtà annullare le ampiezze di due forme d'onda (per
esempio, se entrambi hanno la stessa frequenza e ampiezza, ma
sono sfasati di 180 gradi; cioè il picco della prima ondata
corrisponde al fondo del secondo). Se ascolti due
onde sinusoidali riprodotte dal chip FM sulla scheda audio (se
ne hai uno), ascolterai le onde sinusoidali sovrapposte.
Tuttavia, dal momento che l'orecchio è in grado di tirare fuori il discreto
frequenze nel segnale, si sentono due onde sinusoidali (un po 'come
la routine FFT descritta di seguito). Abbastanza pulito, eh?


Lezione 3. Trasformazioni di Fourier:

Molti di voi potrebbero aver visto programmi che eseguono il suono campionato PCM
e invia i dati sullo schermo in modo simile a un oscilloscopio
display. In questo caso, la trama si basa sull'ampiezza rispetto al tempo.
È possibile determinare la frequenza relativa di a
forma d'onda continua variando il tasso di rotazione di tale
oscilloscopio, ma ci sono modi migliori per raccogliere i dati di frequenza
da campioni PCM. Un approccio è quello di passare i dati attraverso un
algoritmo chiamato Fast Fourier Transform (FFT) e per tracciare il
dati risultanti come diagramma di grandezza rispetto alla frequenza. Essenzialmente,
la FFT scorre attraverso un gruppo di campioni ed estrae tutto il
le onde sinusoidali contenute nel periodo di campionamento (delta). Da quando noi
conoscere la frequenza di campionamento (e quindi, il tempo tra i campioni), esso
è possibile assegnare valori di frequenza alle onde sinusoidali
determinato dalla FFT. Quindi, la trasformata di Fourier funziona come il
principio di sovrapposizione al contrario.

La prima onda sinusoidale è la più bassa onda sinusoidale possibile
campionato accuratamente dalla FFT e corrisponde al campionamento
frequenza divisa per il numero di campioni in delta. Mi riferisco a
questo come la frequenza fondamentale della trama, F-fund. Il
la banda di frequenza tracciata è due volte F-fund, e la successiva è 3X, e
presto. Quindi, le bande tracciate continuano per multipli di F-
finanziare fino a raggiungere la frequenza limite di Nyquist (F-Ny), che
incidentalmente ha un numero di banda pari a 1/2 del numero di
campioni in delta (il numero della banda è anche chiamato numero di canale; uno
la banda viene tracciata per ciascuna frequenza visualizzata da MicFFT per a
particolare frequenza di campionamento). Generalmente, i dati vengono tracciati con
ridimensionamento lineare lungo l'asse delle frequenze, il che significa che ciascuno
la banda tracciata rappresenta una frequenza. Tuttavia, dovrebbe essere
notato che le frequenze situate tra due bande discrete lo faranno
essere rappresentati come deflessioni massime delle due bande su entrambi
lato di questa frequenza interveniente. Inoltre, una band uniforme
la frequenza centrata produrrà le deflessioni di quelle bande
adiacente ad esso, si assottiglia mentre ci muoviamo in entrambe le direzioni
la banda centrale. Si dovrebbe usare attenzione quando si attribuisce a
particolare gruppo di frequenze a un particolare intreccio; come te
lavora con MicFFT, avrai un'idea di cosa aspettarti.


Uso MicFFT:

Quando avvii MicFFT con la riga di comando appropriata
argomenti (vedi Opzioni), sarai in grado di iniziare il campionamento
segnali che entrano nell'ADC. Fischio in un microfono collegato
alla scheda audio. Dovresti vedere un picco, corrispondente al
frequenza del fischio. Dal momento che il fischio è prodotto al
labbra, c'è poca interazione con le cavità risonanti di
il corpo che normalmente introduce armoniche nel discorso e
cantando. Quindi, il fischio si avvicina all'onda sinusoidale e può essere
utilizzato per testare MicFFT per forme d'onda semplici. Varia il tono di
il tuo fischio. Riducendo il tono, dovresti vedere questo picco
sposta a sinistra, indicando che la frequenza si sta muovendo
inferiore. Alzando il tono, il picco dovrebbe spostarsi a destra
della trama (notare che il grado di movimento del picco sarà
influenzato dalla frequenza di campionamento scelta). Nota il righello a
il fondo della schermata di trama. Questo righello corrisponde al
multipli della frequenza fondamentale. Quelli sono in bianco,
cinque sono in arancione e dieci in rosso. Puoi usare il righello
per avere un'idea istantanea della frequenza relativa durante il campionamento
(se sei veloce in matematica).

È ora possibile congelare il grafico premendo la barra SPAZIO.
Fai questo mentre continui a fischiare. Una volta che il campionamento ha
fermato e hai uno spettro di frequenza della forma d'onda congelato sul
schermo, è possibile utilizzare i tasti freccia per spostare una linea del cursore intorno
la trama. Sposta la linea del cursore sul picco. Sotto, lo farai
vedere la frequenza di questo picco, nonché l'ampiezza (in
grandezza restituita dalla routine FFT e basata su un massimo di
128; e in dB, relativo a un intervallo dinamico da 1 a 48 dB per
i campioni a 8 bit). Si noti che la densità di potenza è correlata a
l'area sotto il picco; le grandezze mostrate sono solo tracciate
per la banda sotto la linea del cursore.


Tasti per bloccare la finestra:

Per spostare la linea del cursore, utilizzare i tasti LEFT o RIGHT per
movimenti a banda singola. Per accelerare il movimento attorno alla trama,
usa CTRL-LEFT o CTRL-RIGHT per spostare dieci bande per ogni pressione di un tasto.
Per spostarsi all'estremità destra del grafico, premere FINE o PGDN; spostare
fino a sinistra, usa HOME o PGUP. Ritornare a
la modalità di campionamento, premere la barra SPAZIO. Per uscire dal programma a
in qualsiasi momento (durante il campionamento o nella finestra di blocco), premere ESC.


Opzioni:

MicFFT v1.3 ha un numero di opzioni che sono impostate tramite comando
argomenti di linea usando i flag specificati. È anche possibile
imposta alcune di queste opzioni mentre il programma è in esecuzione (vedi
OPZIONI DELLA TASTIERA DURANTE IL CAMPIONAMENTO). Digitando MicFFT al DOS
prompt senza alcun flag eseguirà il programma con il built-in
impostazioni predefinite. È possibile sovrascrivere questi valori predefiniti utilizzando quanto segue
bandiere:

- ?: Visualizza le opzioni della riga di comando. Anche -h.

-f: cambia la frequenza di campionamento. -f25000 cambierà il
frequenza di campionamento a 25 kHz. L'intervallo valido è da 1 Hz (che
ci vorrebbero 256 secondi prima del primo grafico; non
raccomandato ...) e la massima frequenza di campionamento del suono
carta. Per la scheda Covox, questo è 25000 (anche se lo sono stato
in grado di arrivare fino a 34090 Hz prima di ottenere problemi di campionamento).
Per Sound Blaster, questo è 13 kHz. Per il ProAudio
Spettro 16, questo è 88200 Hz (e presumo 44100 Hz per il
ProAudio Spectrum originale). Gioca con questa opzione a
sacco. L'impostazione predefinita è 10000.

-p: modifica l'indirizzo della porta ADC predefinito. L'impostazione predefinita è 22F
(esadecimale), che corrisponde al valore predefinito per la scheda Covox. -
f24fh cambierà in port address / offset 24F. Se usi il
Modalità Sound Blaster (vedi -b flag), il valore predefinito sarà 220. Nota
che se si fornisce un indirizzo esadecimale, utilizzare una "h" seguente
l'indirizzo per indicare che stai utilizzando un indirizzo esadecimale.
Gli indirizzi decimali sono assunti e non richiedono h alla fine.
MicFFT riporterà l'indirizzo scelto, quindi è possibile verificarlo
l'indirizzo corretto è stato selezionato.

-b: cambia la modalità della scheda audio. L'impostazione predefinita è la modalità Covox
(vedi Schede audio, sopra), che è -b0. Per Sound Blaster (o
compatibile), utilizzare -b1. Il ProAudio Spectrum è impostato con -
b2.

-m: modalità di scala. Impostare su -m1 per la modalità di ampiezza massima. In
questa modalità, tutti i dati di ampiezza vengono ridimensionati sulla trama in modo che tutto
le ampiezze sono ridimensionate all'ampiezza del picco più alto in
la trama. Impostare a -m0 per il ridimensionamento dell'ampiezza del registro; ampiezza del log
il ridimensionamento è in dB, quindi questo potrebbe essere più adatto per alcuni segnali.
-m0 è il valore predefinito.

-l: modalità Linea. Impostare su -l1 per la modalità grafico a linee. In questa modalità,
le linee sono tracciate tra i punti corrispondenti alle ampiezze di
bande successive. Impostare su -l0 per la modalità grafico a barre. In questa modalità,
ogni banda di frequenza è tracciata distintamente, dal basso di
la trama per ogni punto di ampiezza. -l0 è il valore predefinito.

-c: busta Cosine. Digitare -c per attivare la busta del coseno
funzione. Questo aggiunge un filtro che ordina i dati da rimuovere
discontinuità alle due estremità della forma d'onda prima di entrare
la routine FFT. Ciò potrebbe produrre una visualizzazione più stabile per
forme d'onda che non cambiano rapidamente e ridurranno il
magnitudo dei dati attorno alle frequenze centrate in modo errato. Sopra
alcuni computer (in particolare quelli senza coprocessori matematici),
questo aumenterà un po 'il tempo di calcolo.

-s: modalità squelch. Per rimuovere il rumore di basso livello dall'input,
per ripulire la trama, usa -s. Questo rimuove qualsiasi campione sopra
e sotto il livello zero. Ad esempio, -s10 rimuoverà tutto il PCM
campioni tra -10 e +10. Usa questa opzione attentamente, poiché
può creare onde quadre, che hanno una varietà di frequenza
componenti che inquinano lo spettro. Non lo consiglio
valori maggiori di, diciamo 10 per campionamento a 8 bit.

-d: Offset DC. Generalmente, le schede a 8 bit rappresentano il livello zero
segnala come 128. Per produrre un'onda AC centrata attorno allo zero,
MicFFT sottrae l'offset DC (128) dai valori di input. esso
è possibile che l'offset CC non sia perfettamente centrato a 128.
Ad esempio, è la mia esperienza che il PAS16 ho provato
in SB la modalità di compatibilità è effettivamente centrata su 108.
Quindi, digitando -d108 sulla riga di comando, il livello zero è
centrato correttamente. Questo è particolarmente importante per il
funzione di inviluppo del coseno, poiché un offset DC di grandi dimensioni produrrà a
corrispondente deflessione della prima banda sulla trama (cioè il
banda di frequenza fondamentale). Se incontri problemi di questo
ordina, si consiglia di sperimentare con questo valore.
Sfortunatamente, questa versione non esegue questo automaticamente.

-e e -v: forza la modalità EGA o VGA, rispettivamente. L'impostazione predefinita è
utilizzare la risoluzione massima del monitor, in base alla modalità
il monitor è impostato su quando viene avviato MicFFT. -e ha più basso
risoluzione, ma potrebbe essere più veloce su alcuni monitor VGA. Anche
produce una trama un po 'più grande. -v è stato aggiunto per coerenza.


Si noti che tutte le opzioni possono essere inserite usando - o /
interruttore. Il caso non è importante, ma non devi includere il bianco
spazi per qualsiasi bandiera particolare, poiché MicFFT ignorerà qualsiasi
opzioni che non sono conformi a questa sintassi. Anche l'ordine non lo è
importante, dal momento che le opzioni sono raccolte e verificate prima
qualsiasi configurazione si verifica Ti consiglio di creare un file batch
ha la configurazione richiesta (ad esempio, porta e stampa
specifiche della modalità) insieme a un paio di% n per consentire ulteriori
parametri da inserire Per esempio:

@ spegnere
REM RUNMF.BAT - Batch per l'esecuzione di MicFFT con set config.
MicFFT -p24Fh -m1 -l1% 1% 2% 3% 4



Opzioni della tastiera durante il campionamento:

MicFFT v1.2 ora ha alcune opzioni che possono essere impostate durante il
periodo di campionamento, piuttosto che richiedere i flag della riga di comando per
tutte le opzioni Il seguente riepiloga l'utilizzo della chiave durante
campionamento. Per informazioni sull'utilizzo delle chiavi in ​​Freeze
Finestra, vedi sopra.

c Cambia la busta del coseno.

l Attiva / disattiva le modalità di tracciamento linee / barre.

m Attiva / disattiva il ridimensionamento dell'ampiezza (lineare o logaritmico).

a Attendere i dati disponibili durante il campionamento (SB
solo modalità).

x Attiva / disattiva la visualizzazione dei dati di fase.

s Attiva / disattiva la visualizzazione dei dati PCM non elaborati.

[] Riduci o aumenta (rispettivamente) il campionamento
frequenza di 10 Hz.

{} Diminuisci o aumenta (rispettivamente) il campionamento
frequenza di 100 Hz.

./ Ridurre o aumentare (rispettivamente) il campionamento
frequenza di 1000 Hz.

<SPAZIO> Blocca il campionamento e visualizza Congela finestra.

<ESC> Esci dal programma.



Prestazioni e note specifiche per l'hardware:

Come affermato sopra, l'accuratezza della frequenza MicFFT non dovrebbe essere
influenzato da diverse velocità della macchina, dal momento che il campionamento è fatto
in un ciclo separato dalle altre routine e utilizza i PC
chip temporizzatore interno 8253 per precisione nel frazionario
intervallo di microsecondi. Tuttavia, la modalità Sound Blaster potrebbe non esserlo
accurato, perché sono necessari un numero di passaggi aggiuntivi
per il campionamento che sicuramente aumenterà il tempo di elaborazione.
Dal momento che non ho una scheda Sound Blaster, non è possibile
per testarlo. Chris Pye, che ha scritto il Sound Blaster
routine, ha osservato problemi di frequenza, ma solo quando il
frequenza di campionamento superata 13 kHz. Prova questo per te stesso. Se
usi un diapason (o qualche altra frequenza stabile
generatore), si dovrebbero ottenere picchi di frequenza approssimativamente simili
a diverse frequenze di campionamento. Tieni presente che qualsiasi errore
introdotto da questa elaborazione aggiuntiva influenzerà l'alto campionamento
aliquote. Quindi, confronta i tassi bassi con tassi molto alti. Se la
la visualizzazione della frequenza è stabile, tutto dovrebbe essere carino
accurate.

In modalità SB, MicFFT esegue il polling della porta ADC (indirizzo predefinito 220)
esadecimale) dopo aver testato la porta disponibile dei dati. I dati disponibili
la porta è impostata in alto quando l'ADC ha campionato e confermato il successivo
campione di input. Tuttavia, è possibile disattivare questo controllo utilizzando il
tasto "a" (come descritto sopra). Questo consentirà al programma di
sovrastampare l'ADC non testando il valore di campionamento successivo. esso
è possibile osservare lo stepping delle scale nei campioni PCM grezzi
utilizzando questo approccio, ma si dovrebbe notare che la precisione di
anche la trama ne risentirà. Ad esempio, questo produrrà
onde sqare, che avranno una varietà di alta frequenza
componenti. Potrebbe essere possibile campionare leggermente più in alto
frequenza, poiché questo ciclo aggiuntivo viene rimosso dal
in lavorazione. Tuttavia, una volta raggiunta la velocità massima di campionamento,
non è possibile ottenere ulteriori informazioni. ho lasciato
questo nel programma proprio come una sorta di "gee-whiz". Se
vuoi fare una seria analisi spettrale, ti suggerirei di non usare
questa caratteristica. Tuttavia, puoi vedere quanto velocemente il programma
in grado di calcolare gli FFT disattivando il controllo e l'accelerazione
la frequenza di campionamento. Basta essere consapevoli dei limiti
menzionato.

Ho notato che non è possibile campionare ad una velocità
superiore a 34090 Hz (nemmeno 34091!) sulla scheda Covox. quando
Cerco, non ottengo output (o output solo nel primo canale). io
non so perché questo si verifica, ma è probabilmente correlato al
modo in cui questa specifica scheda campiona i dati, oltre al mio
frequenza di clock della macchina (33 MHz). Ho pensato che avrei visto un
spalmare la frequenza a questi tassi più alti (cioè passare a
riflettono un tasso effettivo inferiore a quello impostato dal programma), ma piuttosto
questo è un muro di mattoni oltre il quale il campionamento non funziona. In un
molto preferisco questo, poiché aiuta a sapere che il programma
è preciso fino a questa velocità massima. Ancora una volta, è importante
prova questo su ogni sistema, se sei veramente interessato
campionamento accurato ad alta frequenza. A questo riguardo, potrei muovermi
al supporto di campionamento PCM controllato da DMA per Covox, Sound
Schede Blaster Pro e Pro Audio Spectrum nelle versioni future.
Ciò consentirebbe alla carta stessa di fare il lavoro di garantire
campionamento accurato.

Di tutte le schede testate, ProAudio Spectrum 16 è il massimo
stabile ed è capace di prestazioni impressionanti. La carta è
capace di campionare a 88200 Hz, il che significa che l'intero
lo spettro rilevato nei segnali audio percepibili è rappresentato
nei grafici prodotti dal programma (20-20.000 Hz). Anche questa carta
ha un filtro anti-aliasing hardware preimpostato (nella forma di a
rete di condensatori programmabili sia all'ingresso che all'uscita di
gli stadi analogici). Quando viene avviato MicFFT, il definito
la frequenza di campionamento preseleziona il filtro della migliore corrispondenza appropriato per
la frequenza di campionamento prescelta. Se si avvia il programma con il -
f88200, dovrebbero essere tutte le frequenze al di sotto di almeno 20kHz
rappresentato correttamente. Quindi, consiglio di aggiungere questo flag quando
avviare il programma usando la scheda ProAudio Spectrum, a meno che
si desidera utilizzare un'impostazione del filtro di frequenza più bassa da mantenere
aliasing fuori dalla foto. Inoltre, è importante che il
Impostazione "Digital Audio" (impostata utilizzando il comando PAS * sul DOS
prompt) essere impostato, dal momento che il programma non aggiorna attualmente
impostazioni del mixer. Se non lo imposti a zero, otterrai un
grande quantità di feedback fastidiosi. Tuttavia, se si imposta questo a
un valore di circa il 50% o giù di lì, è possibile ascoltare il diverso
filtri anti-aliasing che iniziano all'avvio del campionamento, se
a questo punto hai un segnale che colpisce l'ADC (per
esempio, audio CD).

La frequenza di aggiornamento (ovvero la quantità di tempo tra il campionamento
periodi) varia a seconda della macchina utilizzata. MicFFT è
impostare per campionare 256 punti dati, trasformare e tracciare il
dati, quindi ripeti. Sulle macchine lente, la frequenza di aggiornamento sarà
sotto; su macchine veloci, in particolare quelle equipaggiate con
coprocessori a virgola mobile, sarà incredibilmente veloce.
Tuttavia, è importante sottolineare che il tempo speso
l'elaborazione dei dati è il tempo impiegato a non campionare. Quindi, eventi
che si verificano tra periodi di campionamento saranno ignorati. Può essere
problematico con segnali variabili nel tempo, in particolare quelli con
componenti transitori sostanziali. Per questo motivo, lo è
necessario analizzare attentamente la trama per tali dati.
A volte, la trama mancherà a questi transienti. Se questo è un
preoccupazione, suggerisco di rallentare la frequenza di campionamento al minimo
frequenza consentita (in base alla larghezza di banda del segnale), come
questo aumenterà la possibilità di catturare questo segnale variabile
nella trama. Puoi congelare una forma d'onda, ma questo è difficile
con segnali rapidamente variabili. Un approccio più adatto sarebbe
per campionare la forma d'onda e selezionare le parti di un dominio del tempo
trama da visualizzare. Le future versioni di MicFFT includeranno questo
caratteristica. Si noti inoltre che la busta coseno ridurrà il
frequenza di aggiornamento, perché aggiunge un sacco di virgola mobile
calcoli. La modalità show PCM (attivata premendo "s"
chiave) rallenterà anche la frequenza di aggiornamento. Questo è dovuto al
elaborazione grafica extra in corso. È possibile pedalare
tra off, line-draw e pixel plot per questa opzione. io
suggerire trama di pixel per la visualizzazione più veloce dei dati PCM,
poiché le forme d'onda di ampiezza ampia non influiscono sul grafico
velocità. La line-draw è leggermente più lenta per ampiezza ampia
forme d'onda poiché il programma deve calcolare e rappresentare graficamente non solo
gli endpoint, ma anche tutti i punti sulla linea. Di
Naturalmente, la modalità line-draw sembra più bella. Finalmente la mostra-fase
l'opzione (attivata dal tasto "x") può anche rallentare l'aggiornamento
Vota. Tutte le opzioni grafiche dovrebbero essere testate per a
sistema particolare per determinare il trade-off ottimale tra
prestazioni e le informazioni desiderate.

Ho avuto qualche sfogo da una varietà di persone riguardo a
lentezza del programma. Ero un po 'sorpreso, perché io
Stavo osservando le prestazioni piuttosto adatte dal programma sul mio
486DX. Tuttavia, dopo aver disabilitato il supporto del coprocessore per
programma, sono rimasto sbalordito da quanto può essere lento il programma. Come un
test, è possibile impostare una variabile ambientale per ignorare il
coprocessore se il tuo computer ne ha uno. Per fare questo,
basta digitare "SET NO87 = Boy è questo programma lento!" al DOS
prompt, quindi eseguire il programma. Questo è uno di quei test dove
ti sentirai fortunato ad avere un coprocessore, se mai
si chiedeva a cosa andasse bene. Credo che la differenza di velocità
è probabilmente dell'ordine di circa 10-50 volte. Se tuo
il computer non ha un coprocessore, potresti voler acquistare
uno, in particolare se fai un sacco di numeri crunching. Fin qui
come dice MicFFT, non c'è praticamente nessun modo per aggirarlo. Là
ci sono molti calcoli in corso e in qualsiasi momento il processore
può scaricare alcuni per un piccolo processo "parallelo" economico
meglio. Credo che potrei essere in grado di migliorare le prestazioni in qualche modo
codificando le routine interamente in assembly, ma ne ho altre
cose da fare con il mio tempo.

È importante essere consapevoli del limite di Nyquist per nessuno

particolare forma d'onda, come segnali con componenti che escono dal

il limite sarà "alias" e non rappresentato correttamente dal

trama spettrale. Come ho descritto sopra, le frequenze al di sopra del

Il limite di Nyquist produrrà errori (aliasing) a meno che non lo siano

rimosso dal segnale prima che vengano campionati. Questo è

interessante da un punto di vista: imposta la frequenza di campionamento a circa

4000 Hz e iniziare un fischio basso. Aumentando la frequenza,

noterai che il picco si avvolge mentre si muove verso il

lato destro della trama. Se andrà abbastanza lontano, lo sarà anche

avvolgere anche il lato sinistro della trama. Questo molto

dimostrazione grafica di aliasing. Oltre gli accademici,

l'aliasing può essere un problema serio per un'accurata analisi spettrale.

MicFFT non ha ancora alcun filtro passa-basso integrato

(anche se le versioni future potrebbero includere questo), quindi dovrai farlo

considerare l'aliasing quando si sceglie un particolare segnale e un campionamento

frequenza. Se sei capace, è possibile aggiungere un passa-basso

filtra fino alla linea di ingresso del tuo generatore di segnale (o microfono)

eliminare queste frequenze più alte. La tua scheda audio potrebbe persino

prevedere questo tipo di larghezza di banda limitante (incidentalmente, il

PAS16 lo fa, ed è impostato per la migliore corrispondenza quando il programma

inizia, in base al valore di frequenza iniziale).



MicFFT non è progettato per competere con lo spettro hardware

analizzatori (non ancora, almeno). Ma, dal momento che questi hardware

gli analizzatori sono molte migliaia di dollari, il costo di questo

approccio è più adatto per molte applicazioni, in particolare

sperimentazione nel suono, ecc. Benché tu possa inventarti

idee interessanti, non ne raccomando ancora il suo uso nella costruzione del

Telescopio Hubble di prossima generazione, ecc. Tuttavia, potrebbe funzionare

molto bene nell'analisi degli esperimenti di fusione fredda. Se hai

qualsiasi risultato in questa arena, per favore informami così posso comprare il

stock (SEC, sto scherzando!).





Ringraziamenti:



Vorrei cogliere l'occasione per ringraziare molti di voi che

scaricato MicFFT v1.0 e v1.1 e mi ha inviato dei commenti

il programma. Dal momento che non ho chiesto un compenso per il programma, a

Almeno mi dà un po 'di spinta all'ego, e fa la programmazione

un po 'più divertente. I vostri commenti e critiche hanno certamente

ha reso lo sviluppo un processo più illuminato.



Andy Charmatz, qui alla UCLA, è stato di grande aiuto

ottenere le routine SB per lavorare con il PAS16, così come il

implementazione della codifica specifica per PAS16. Mi ha prestato il suo

PAS16 in modo da poter testare le routine SB e scoprirlo

dove stavano accadendo i veri problemi. A quanto pare, MicFFT

in realtà non ha fatto crashare il computer quando stava avendo problemi

con la compatibilità PAS, non ricevevo informazioni da solo

la porta dati disponibili. Quindi vale per la compatibilità SB!

Per inciso, se hai una carta che non funziona con questo

programma, sarei felice di prendere accordi per lavorare su alcune routine

nel programma per farlo funzionare correttamente.



Chris Pye è stato determinante nel rendere compatibile MicFFT

Schede Sound Blaster. Ha anche fornito il codice per il congelamento

routine di finestra e la funzione di busta coseno. Lui sa molto

più sulle trasformazioni di Fourier di me (sono una biologia molecolare

studente laureato, e solo un hacker di ingegneria / fisica), e lo farò

lavorare con lui molto in futuro per lo sviluppo migliore

versioni del programma. Inoltre, le routine FFT utilizzate in

questo programma si basa su quelli implementati in un archivio chiamato

FFT.ARC trovato su Compuserve anche dall'autore Steve Sampson

come quelli trovati in un libro chiamato Numerical Recipes in C. The

Le routine del timer 8253 (che hanno una precisione straordinaria) lo sono

basato su un archivio di Compuserve chiamato TIMERH.ARC, caricato dal

autore Micahel Walraven. Sono in debito con il lavoro di questi

autori.





Condizioni d'uso:



MicFFT v1.2 è freeware, il che significa che continuo a tenere il

diritti sul programma (cioè non è rilasciato al pubblico

dominio). Hai il diritto di copiare il programma, e lo sono

incoraggiato a pubblicare il programma su BBS, distribuirlo a

amici, ecc. Tuttavia, se usi il programma, te lo chiedo

contattami (vedi Come contattare l'autore) per farmi sapere cosa tu

lo stanno usando, la sua forma fisica e altri commenti, problemi,

ecc. Quando e se deciderò di caricare per il mio lavoro, non lo farò

richiede questo. Quando scarico programmi che trovo interessanti, io

spesso informare l'autore per cortesia. Di solito, ne ricevo molti

idee pure. Potresti scoprire che questo discorso può essere divertente e

interessante. D'altra parte, potresti scoprire che non lo so

niente su questa roba. Devi solo provarmi. Il

il codice per MicFFT non è disponibile, a meno che tu non lo specifichi

accordi con me prima. La ragione principale per questo è che io

voglio mantenere il controllo dello sviluppo del programma. Se

hai buone idee, e sei abile nel programmare, farò

eccezioni.





Direzioni future:



Ho iniziato a lavorare sulla prossima versione, che dovrebbe essere

disponibile molto prima di questa versione ha preso (sono stato

piuttosto impegnato con altre cose). La prossima versione lo farà

sicuramente include l'input basato su DMA e forse se qualcuno di voi

contattami presto, supporto per altre schede (come l'SB Pro 16

ASP, ecc.). Inoltre, includerò il supporto per il campionamento a 16 bit per

carte dove questo è permesso. Posso anche includere stereo

campionamento, anche se non ho ancora determinato l'utilità di

in questo contesto (idee? idee?). Inoltre, pochi altri

le funzioni di windowing saranno incluse (Hamming-Hanning, Parzen,

ecc.), oltre al filtro passa-basso digitale. Sto anche giocando

in giro con il chip FM (compatibile Adlib) in modo che lo sarà

possibile utilizzare il chip FM per produrre segnali di test che possono essere

analizzato (particolarmente utile per noi costruttori di altoparlanti!). io ho

sto scrivendo alcune routine grafiche molto veloci, quindi spero di farlo

aumentare la velocità dell'output del programma implementandoli.

Inoltre, fornirò sicuramente un'interfaccia utente REALE in

la prossima versione, con tutti i pulsanti, ecc. Di recente

acquistato MS Visual C ++ e alla fine produrrà un programma

per l'analisi del suono basata su Windows.





Contattare l'autore:



Puoi contattarmi ai seguenti indirizzi e-mail:



Compuserve 70701,1614

Internet: walsh@biovx1.dnet.nasa.gov



(Per inciso, non lavoro per la NASA, ma il nostro server di posta qui

a UCLA è chiamato così per qualche strana ragione).



Posso anche essere contattato telefonicamente nella mia residenza di Los Angeles a



(310) 390-0598



Si prega di notare che preferirei ricevere la posta via Internet, dal mio

Le bollette di Compuserve sono schizzate alle stelle (e io sono solo un povero,

Studente di grado inferiore). Puoi farlo su Compuserve inviando

la posta a un indirizzo Internet (vedere la schermata di aiuto per il

specifiche qui. Non ricordo in modo casuale come farlo). io

controlla la mia posta su Internet ogni giorno; verifico

Compiti molto meno frequentemente. Per un approccio super low-tech,

puoi inviare un post via hardcopy a:



Craig Walsh

12420 Woodgreen Ave # 203

Los Angeles, CA 90066



Divertiti e buona fortuna con MicFFT v1.2. Fammi sapere cosa tu

pensare.
Guarda articoli radio su Amazon https://amzn.to/3PV90GL

-

Prodotti interessanti da acquistare

Sezione articoli utili da avere

 

free countersfree countersfree counters