www.mikrocontroller.net

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


Autor: Jules (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dieter Stotz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Schaber (Gast)
Datum:

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

Autor: Dieter Stotz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.