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
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.
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.
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.
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
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.
Das geht auf Signalebene mit FFT. Haben wir schon gemacht. Man kann dann die basslinie aus der jeweils niedrigsten Frequenz generieren.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.