Forum: Mikrocontroller und Digitale Elektronik Audio to Midi - Converter beuen


von Jules (Gast)


Lesenswert?

Hi!
Ich möchte die Töne von einem Bass in Midi Signale wandeln. Wie ich die 
midi-signale erzeuge ist kein stress. hab ich schon gemacht.
ich möcte eig nur wissen wie ich die frequenz der saite in einen binären 
wert wandle. ich dachte mir das teil hier hilft:

http://www.national.com/mpf/LM/LM2907.html

ist ein frequenz-auf-spannungs wandler

oder sollt ich lieber mit dem timer arbeiten?

ich würde auf einem atmega16 coden.

THX Jules

von Sebastian (Gast)


Lesenswert?

Ich weiß nicht, ob das wirklich so geht. Selten handelt es sich bei den 
Tönen eines natürlichen Instruments um reine, oberwellenfreie Sinustöne. 
Die Ergebnisse einer Frequenz-Spannungs-Wandlung können bei einem aus 
mehreren Frequenzen zusammengesetzten Signal ungenau sein. 
Gegebenenfalls ist die Zerlegung des Eingangssignal in seine 
Frequenzanteile und die Bestimmung der Frequenz mit dem höchsten Pegel 
nötig. Viel Rechenaufwand. mega16 wahrscheinlich zu schwach, um das in 
Echtzeit zu schaffen. Habe Audio-FFT schon auf einem PIC17xx gesehen (33 
MHz). Da gibt es ein nachbaufertiges Projekt im Netz.

von Martin (Gast)


Lesenswert?

Da es um Bass (nicht so sehr hohe Töne) geht könnte ich mir auch 
vorstellen das ein kleinerer MC für FFT reicht.

von Benedikt K. (benedikt)


Lesenswert?

Sebastian wrote:
> mega16 wahrscheinlich zu schwach, um das in
> Echtzeit zu schaffen. Habe Audio-FFT schon auf einem PIC17xx gesehen (33
> MHz).

Naja, aber der PIC teilt den Takt noch durch 4, läuft also nur mit etwa 
8MHz. Ein mega16 läuft mit 16MHz...

Es geht also schon mit einem AVR:
http://elm-chan.org/works/akilcd/report_e.html
Eine 256Punkte FFT sollte der mega16 bis 16kHz Samplerate in Echtzeit 
schaffen.
Allerdings wird eine 256 Punkte FFT eher nicht ausreichen, denn das 
ergibt gerade mal 62,5Hz Auflösung.
Das Problem ist also eher der Speicherverbrauch als die Rechenleistung, 
vor allem da die Frequenzen nicht allzu hoch sind.

von Dieter Stotz (Gast)


Lesenswert?

Hallo,

was passiert, wenn mehr als eine Saite angeschlagen wird? Ob dann die 
FFT oder sonst was imstande ist, alles in die jeweiligen Grundtöne zu 
spalten, halte ich für mindestens mal fragwürdig. Kann natürlich sein, 
dass dieser Polyphon-Modus nicht verlangt wird.

Gruß

Dieter

von Benedikt K. (benedikt)


Lesenswert?

Möglich ist das, ist nur eine Frage des Rechenaufwands. Es gibt ja 
einige Wave2Midi Konverter für den PC. Diese sind teilweise nicht 
schlecht.

von Schaber (Gast)


Lesenswert?

Das geht auf Signalebene mit FFT. Haben wir schon gemacht. Man kann dann 
die basslinie aus der jeweils niedrigsten Frequenz generieren.

von Dieter Stotz (Gast)


Lesenswert?

Wie sieht's mit Verzögerung aus in Echtzeit? Ich könnte mir vorstellen, 
dass man einige Perioden braucht, um die Frequenz zu ermitteln, auch 
eine FFT braucht das.

Dieter

von eProfi (Gast)


Lesenswert?

Zur Not kann man mehrere µC spendieren, entweder für mehrere Bereiche 
(z.B. einen pro Oktave)  oder sogar für nur wenige Töne.

Habe mal von einer DTMF-Dekodierung mit einem Görzelfilter gelesen:
Habe den Link gerade nicht hier, vielleicht findest Du es selbst.
Morgen kann ich ihn dir mitbringen.

von eProfi (Gast)


Lesenswert?

Möglichkeit: der Ton mit dem höchsten Anteil ist der, der "zum Midi 
durchgestellt wird".

Ähnlicher Beitrag:
Beitrag "FIR filter mit ARM7 zur Tonerkennung"

Hier die Links:
z.B.
Signal processing with the MAXQ multiply-accumulate unit (MAC)
AN3386
http://pdfserv.maxim-ic.com/en/an/AN3386.pdf
beschreibt die Sinusgenerierung nur mit Mul und Add (recursive digital 
resonator)
und Tonerkennung mittels Goertzel-Algorithmus sehr anschaulich.


Es gibt noch weitere Filter- und Generatormethoden: wurden z.B.
in DSP56F800FM.pdf (DSP56F800 Family Manual) beschrieben:
B.1.13.1 Double Integration Technique
B.1.13.2 Second Order Oscillator

Hier der gesamte Inhalt:
Real Correlation or Convolution (FIR Filter) 1N 9
N Complex Multiplies 6N 15
Complex Correlation or Convolution (Complex FIR) 5N 15
Nth Order Power Series (Real, Fractional Data) 1N 13
N Cascaded Real Biquad IIR Filters (Direct Form II) 6N 16
N Radix 2 FFT Butterflies 13N 17
LMS Adaptive Filter: Single Precision 3N 18
LMS Adaptive Filter: Double Precision 6N 21
LMS Adaptive Filter: Double Precision Delayed 5N 27
Vector Multiply-Accumulate 2N 12
Energy in a Signal 1N 7
[3x3][1x3] Matrix Multiply 20 20
[NxN][NxN] Matrix Multiply N3 + 8N2 30
N Point 3x3 2-D FIR Convolution 13N2 + 11N 41
Sine Wave Generation: Double Integration Technique 2N 13
Sine Wave Generation: Second Order Oscillator 5N 16
Array Search: Index of the Highest Signed Value 4N 10
Array Search: Index of the Highest Positive Value 2N 10
Proportional Integrator Differentiator (PID) Algorithm 6N 6
Autocorrelation Algorithm (p + 1)2 (N - p / 2) 23

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.