Forum: Mikrocontroller und Digitale Elektronik MIDI-Recorder bauen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Maxim B. (max182)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag!
Z.Z. mache ich mir Gedanken um MIDI.
Für Experimente habe ich eine Platte gemacht.
Schema und Foto sind dabei.
Ich habe alles getestet: alle Elementen arbeiten gut: LCD, Tasten, 
Drehgeber, MIDI IN und OUT, externe RAM. Ich habe sogar für Testzwecke 
per MIDI-Lautstärke LCD-Beleuchtung mit PWM gesteuert.
Ich habe auch von verschiedenen Instrumenten MIDI-Code empfangen und auf 
Unterschiede gekuckt.

Nun möchte ich eigentliche MIDI-Recorder programmieren. Stufe um Stufe. 
Zuerst vielleicht ein Stück aufnehmen und ausgeben.
Und hier habe ich viele Fragen...

Ich habe versucht, hier auf der Seite vorhandene Projekte zu 
analysieren, aber das scheint mir irgendwie zu kompliziert, nicht genug 
transparent.

Könnten Sie mir vielleicht einige Tipps geben?

Auf der Platte steht schon IC NVRAM mit Li-Batterie, 128 Kilobytes. Das 
sollte nach meinen Einschätzen etwa für 32 Seiten von Notentext reichen. 
Es gibt auch Erweiterungsbuchse, wo ich später eine SD-Karte 
einschließen kann (SPI und einige zusätzliche PORTS sind dabei). 
Hauptsache, Grundfunktion wird gemacht.

Ich bin natürlich nicht an Standards gebunden. Welche Format für 
Speichern wäre am besten? Sollte ich alle empfangenen Nachrichten 
(vielleicht außer 0xfe ) einfach ohne Veränderung speichern und dazu 
auch Zeitdifferenz zwischen bytes? Oder die Zeit von Anfang des Stückes 
speichern, für jede byte? Oder sollte ich schon die Nachrichten 
eingruppieren (entsprechend je 3 oder je 2 bytes, je nachdem)?
Außerdem habe ich festgestellt: meine MIDI-Tastatur, zum Unterschied von 
Orgeln, sendet manchmal Status-byte nur einmal für mehrere Tasten. Ist 
das normal? oder sollte ich bei der Ausgabe normale 3-bytes-Nachrichten 
generieren? Es wäre nicht schlecht, wenn ich etwas auf einem Instrument 
einspielen kann und auf einem anderen Instrument wiedergeben.

Wie wäre es am besten Tempo-Veränderungen zu organisieren?

Ziel ist für das Ganze, dass ich vielleicht meine Kantorei leiten kann, 
während das Klavier selber spielt, was ich im voraus eingespielt habe.

Jetzt habe ich als Systemtakt timer3-Interrupt 1 ms eingeschaltet, 1 ms 
für Drehgeber und jede Zehnte (d.h. einmal in 10 ms) für Tasten und 
Knopf von Drehgeber. Reicht es, wenn ich Zeit für MIDI in ms speichere, 
oder braucht man hier mehr zeitliche Genauigkeit?

Ich werde für jeden Tipp sehr dankbar.

Viele Grüße,
Maxim.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Ich bin natürlich nicht an Standards gebunden.

Nimm trotzdem was bekanntes.

Maxim B. schrieb:
> Welche Format für
> Speichern wäre am besten?

*.MID ist schon ziemlich gut. Das macht auch die Überprüferei einfach, 
weil so gut wie jedes Betriebssystem MID abspielen kann. Umgekehrt 
kannst du mit MID auch deinen Recorder checken.
https://www.csie.ntu.edu.tw/~r92092/ref/midi/
http://faydoc.tripod.com/formats/mid.htm
https://www.loc.gov/preservation/digital/formats/fdd/fdd000119.shtml

: Bearbeitet durch User
von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Danke!
Ich werde das nun lesen, trotz Englisch...

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> meine MIDI-Tastatur, zum Unterschied von Orgeln, sendet manchmal Status-
> byte nur einmal für mehrere Tasten. Ist das normal?

Ja; das nennt sich "Running Status".

> oder sollte ich bei der Ausgabe normale 3-bytes-Nachrichten
> generieren?

Alle MIDI-Geräte müssen Running Status verstehen.

> Wie wäre es am besten Tempo-Veränderungen zu organisieren?

Du hast nur die Zeitstempel einzelner Nachrichten; daraus das Tempo 
abzuleiten, wäre eine interessante Anwendung künstlicher Intelligenz ...

> Reicht es, wenn ich Zeit für MIDI in ms speichere, oder braucht man hier
> mehr zeitliche Genauigkeit?

1 ms sollte unhörbar sein.

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Die hypothetisch mögliche Zeitauflösung bestimmt sich aus der Baudrate 
und der Länge einer MIDI-Nachricht.

Bei 31250 Baud und 8n1 sind also maximal 3125 Bytes pro Sekunde 
übertragbar, und da eine MIDI-Nachricht oft 3 Bytes lang ist ... dürfte 
1 msec Auflösung eindeutig genug sein.

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Clemens L. schrieb:

> Du hast nur die Zeitstempel einzelner Nachrichten; daraus das Tempo
> abzuleiten, wäre eine interessante Anwendung künstlicher Intelligenz ...
>
Als erstes kommt in Kopf: bei der Wiedergabe OCR-Werte für Timer zu 
variieren, wo sich 1-ms-Puls bildet. D.h. statt 1ms-interrupt werden 
0,5ms bis 2ms.

Gibt es vielleicht Alternativen?

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Als erstes kommt in Kopf: bei der Wiedergabe OCR-Werte für Timer zu
> variieren, wo sich 1-ms-Puls bildet. D.h. statt 1ms-interrupt werden
> 0,5ms bis 2ms.

Ist möglich.

> Gibt es vielleicht Alternativen?

Du könntest den Timer so programmieren, dass er passend für die jeweils 
nächste Nachricht einen Interrupt auslöst.

Und wenn du externe MIDI-Dateien einlesen willst, hast du nicht mehr 
Millisekunden, sondern Mikrosekunden pro Viertelnote kombiniert mit 
Ticks pro Viertelnote.

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Danke.

Nein, fremde MIDI-Dateien plane ich nicht ein, ich habe keine. Mir geht 
es nur darum, mit meinen Instrumenten frei hantieren zu können. Manchmal 
muß ich als Kantor gleichzeitig mehrere Aufgaben machen. Hier in Dorf 
sind wir nicht so reich wie z.B. in Potsdam, wo einer Orgel spielt und 
ein anderer Kantorei leitet... Ich muß alles selber... Gleichzeitig...

Ich glaube, es wird leichter, alles selber einzuspielen, als schon 
fertige gerade für meine Aufgaben passende Dateien zu finden. Aber Tempo 
anpassen zu können wäre es nicht schlecht. Um Z.B. langsamer einspielen 
zu können, als gespielt wird. Oder umgekehrt: wenn wenig Zeit für 
Vorbereitung, alles schnell einspielen, speichern - und dann in 
richtigen Tempi abspielen zu lassen...

Ich habe versucht, Mr.MIDI von dieser Seite zu compilieren. Aber mit 
heutigen GCC geht das nicht mehr, zu viele Fehler gezeigt.
Ich denke, das Programm kann ich nicht anpassen, das übersteigt meine 
Fähigkeiten als Programmierer. Außerdem habe ich wenig Lust etwas zu 
machen, wo ich nicht bis zu Ende verstehe, wie alles genau arbeitet.

Ich habe MIDI-fähigen eine 2-man. elektrische Orgel, ein Orgelpositiv, 
zwei Pianos und noch eine MIDI-Tastatur. Die möchte ich mit dem Gerät 
benutzen. Und wenn's geht, auch so, daß ich mit einem etwas spiele und 
mit dem anderen auch wiedergebe.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Aber Tempo anpassen zu können wäre es nicht schlecht. Um Z.B. langsamer
> einspielen zu können, als gespielt wird. Oder umgekehrt: wenn wenig Zeit
> für Vorbereitung, alles schnell einspielen, speichern - und dann in
> richtigen Tempi abspielen zu lassen...

Das ist etwas, was seit Jahrzehnten praktisch jede 
Midi-Sequencer-Software aus dem Handgelenk erledigt.

Ein altes Notebook, an dem ein einfacher USB-Midi-Adapter angeschlossen 
wird und etwas kostenlose Software (MIDI-Sequencer existieren auch als 
Open Source) löst das Problem.

Obendrein kann ein solcher MIDI-Sequencer auch nicht-selbsterstellte 
Dateien abspielen, was durchaus auch sinnvoll sein kann.

Hier zwei Beispiele:

https://en.wikipedia.org/wiki/MuseScore
https://en.wikipedia.org/wiki/Aria_Maestosa

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Ein Software-Sequenzer ist für mich nicht wert. In Praxis ist nicht 
möglich, ein Laptop einzuschalten und Betriebssystem starten. (und wenn 
ich gleichzeitig ein Orgelpositiv und zwei Klaviere brauche, dann auch 
drei Laptops? oder ein, aber mit drei MIDI-Interface und 3x 30 Meter 
MIDI-Kabel von Orgelempore bis zu Altar? Und noch eine Stunde zusätzlich 
vor dem Gottesdienst, um das alles zusammen zu verbinden - als ob ich 
mit Kantorei und mit Bläser gar nicht proben muß und das sollte dann 
wohl einzige GD am Tag sein... Für Praxis absolut nicht brauchbar.)
Ich brauche etwas, was ich einschalte und dann nach 1 Sekunde los.

Ich habe schon früher bei allen Musikgeschäften gekuckt: bei Thomann und 
auch bei anderen. Überall nur Software-Sequenzer und keine kleine 
autarke Kiste mit Batteriespeisung, was ich brauche.
Wahrscheinlich weil die ganze Industrie nur für Pop-Musiker eingestimmt 
ist. Ja, uns Kantoren gibt es in Deutschland gut wenn 2000. Viele davon 
meiden absichtlich jede Elektronik. Ich selbst bin nur deshalb dafür, 
weil ein Orgelpositiv 80 kg schwer ist und für Transport ein Kleinbus 
braucht, während ein el. Orgelpositiv nur 15 kg schwer und auch in PKW 
paßt). Es lohnt sich für Wirtschaft nicht, etwas zu machen, was nur für 
uns verwendbar ist. Deshalb sollten wir sich selber helfen...

Ich habe gerade Macro ausprobiert, um mit akzeptablen Fehler Tempo 
einstellen zu können. 1000 = 100% Tempo, d.h. wie gespielt.
1
#define MIDI_TEMPO(x) (((F_CPU/8)/x)-1)
2
typedef unsigned int   u16;
3
4
for(u16 mein_tempi=250;mein_tempi<4001;mein_tempi += 10){
5
  OCR3A = MIDI_TEMPO(mein_tempi);
6
}

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Ein Software-Sequenzer ist für mich nicht wert. In Praxis ist nicht
> möglich, ein Laptop einzuschalten und Betriebssystem starten.

Das klingt stark nach Verweigerungshaltung. Du hast Dich für Deine 
(aufwendige) Bastellösung entschieden und basta.


Die Probleme sind allesamt lösbar oder existieren nur in Deinem Kopf; 
und warum bitte soll man, um mehrere Instrumente anzusteuern, mehrere 
Sequencer benötigen?

Mit einem kannst Du ein komplettes Orchester abwickeln.

Du brauchst also nicht mehrere MIDI-Interfaces, und natürlich auch nicht 
einen entsprechenden Drahtverhau.

Anstelle eines Notebooks kannst Du auch ein windowsbasiertes Tablet 
verwenden, das hat effektiv gar keine Bootzeit, und ein 
USB-Midi-Interface kann man natürlich auch daran betreiben.

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Ich möchte nicht als starr erscheinen...
Praxis ist so: jede Gruppe braucht eine Begleitung in der Nähe. Nicht in 
30 Meter, das ist akustisch Unfug.
Auch meine übliche Praxis. 8.00 GD in einem Dorf, 9.30 GD in einem 
anderen Dorf, dann um 11.00 GD in einer Kleinstadt, wo ich ganze Technik 
brauche...

Ich möchte eine Hilfe für meine Arbeit, und mit Software-Sequenzer 
bekomme ich statt dessen nur zusätzliche Sorgen und Belastung!

Glaub mir: als Musiker weiß ich sehr genau, was ich brauche. Jede 
zusätzliche kg und auch Kabel, Pult, Mikrofon, Instrument, Ständer usw. 
zähle ich genau, was ich tragen muß.
Andere Sache, in Elektronik bin ich nur ein Hobby-Bastler. Ich weiß, was 
ich brauche, weiß aber noch nicht genau, wie ich das schaffe.
Deshalb bin ich da. :)

<<Anstelle eines Notebooks kannst Du auch ein windowsbasiertes Tablet
<<verwenden

Außer Laptop noch Tablett kaufen? Und dann alles packen, entpacken, 
einstellen, zusammen packen, kucken, um Bildschirm nicht kaputt geht, 
alles in PKW laden, dann entladen, wieder laden...

Eine kleine Kiste, ohne zerbrechlichen Details, die immer zusammen mit 
Keyboard verpackt griffbereit liegt, die ich mit nur 2 50cm MIDI-Kabel 
schnell einschalte, ein Knopf drucke, und das war's! DAS brauche ich!

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Also geht es um den Unterschied eines kleinen selbstgebastelten 
Kästchens, das nur sehr wenig kann und nur sehr rudimentär zu bedienen 
ist zu einem Windows-Tablet mit einem USB-Midi-Adapter.

Das ist der gesamte Unterschied.


Und Du willst Deinen Gruppen, die anscheinend gleichzeitig irgendeine 
Begleitung brauchen, diese völlig asynchron aus mehreren Deiner 
Wunderkästchen abspielen?

Gut, der i.d.R. lange Hall und die oft gar nicht so tolle Akustik in 
Kirchenbauten und vor allem der nach dem Motto "Treffpunkt Fermate" 
veranstaltete Gemeindegesang legt einen Breiteppich aus Ungenauigkeit 
und Gewaber über das ganze, das macht dann auch nicht mehr viel aus.


Bitte; s' ist Deine Zeit, Dein Entwicklungsaufwand. Wenn Du tatsächlich 
glaubst, mit einer Selbstbaulösung näher am gewünschten Ziel anzukommen, 
dann machs halt.

von 2⁵ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Maxim B. schrieb:
> Überall nur Software-Sequenzer und keine kleine
> autarke Kiste mit Batteriespeisung, was ich brauche.

Bei E-Bay gibt es oft die Yamaha QY Sequenzer Serie. Ich habe den QY 8 
und einen QY 70. Die sind Batteriebetrieben und haben auch noch einen 
Klangerzeuger an Bord. Gerade der QY 8 wird für wenig Geld gehandelt. 
Meinen QY 70 habe ich z.B. für weniger als 70 € gebraucht erworben.

von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:
> Also geht es um den Unterschied eines kleinen selbstgebastelten
> Kästchens, das nur sehr wenig kann und nur sehr rudimentär zu bedienen
> ist zu einem Windows-Tablet mit einem USB-Midi-Adapter.
>
> Das ist der gesamte Unterschied.
>
>
Windows kann sicher sehr viel. Aber gebraucht wird davon sowieso sehr 
wenig.
Ich bin kein Theoretiker. Ich bin ein Praktiker. Ich brauche keine 
Lösund fürs Lebenszeit. Ich brauche eine Hilfe für meine Arbeit. Und 
keine zusätzliche Belastung.
Das ist gesamte Unterschied. :)

> Und Du willst Deinen Gruppen, die anscheinend gleichzeitig irgendeine
> Begleitung brauchen, diese völlig asynchron aus mehreren Deiner
> Wunderkästchen abspielen?

Ich habe mir das etwa so vorgestellt:
Gruppe: es geht mit ihr viel besser, wenn ich alle Einsätze dirigentisch 
gebe. Dann kommen alle (die keine beruflichen Sänger sind) viel genauer 
mit, als ich nur mit dem Kopf von dem Instrument nicken kann.
Das ist  wichtigste Verwendung.
Da die Begleitung sowieso von mir selber gespielt wird, wenn auch im 
voraus, so kann ich alle Zäsuren und Rubato berücksichtigen.

Noch eine Situation: Abendmahl. Gewöhnlich spiele ich etwas. Um aber 
selber zu Abendmahl nach unten zu kommen, muß ich Musik unterbrechen. 
MIDI-Block ermöglicht mir Teilnahme in Abendmahl.

Ich möchte nicht, daß ich IMMER von MIDI-Block ersetzt bin. Ich möchte 
nur etwas freie Hände haben, ein bißchen Hilfe.
Ab und zu kommt, daß ich auch ohne Pfarrer GD machen muß. Viel bequemer 
dann, wenn ich kurze Pausen machen kann, während die Lieder gesungen 
werden. Sonst ist das praktisch doppelte Last...

: Bearbeitet durch User
von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
2⁵ schrieb:

> Bei E-Bay gibt es oft die Yamaha QY Sequenzer Serie. Ich habe den QY 8
> und einen QY 70.

Danke für Tipp!
Ich kucke, vielleicht ist das wirklich etwas, was ich gebrauchen kann.

ja, ich habe Manual gelesen. Ich denke, ich werde das ausprobieren. Es 
gibt welche bei Ebay.
Schließlich benutze ich auch ein Keyboard von Yamaha: Klang ist 
scheußlich, dafür aber nur 3,5 kg und kann von Batterien arbeiten.

Aber irgendwie habe ich schon Lust, etwas selber zu bauen...

Yamaha ist eine gute Firma. Aber auch: dort ist anderes in Visier, nicht 
was ich vor allem brauche.
Bei Thomann keine reine Sequenzer von Yamaha, nur Keyboards. Und immer: 
viel und immer mehr alles mögliches. Nur dadurch sind Instrumente immer 
schwerer. Für mich ist aber klar: von so einem Instrument bekommt man 
nie akzeptablen Klang. Einziges, was Verwendung rechtfertigen kann, ist 
Mobilität: geringe Masse und Möglichkeit ohne Stromnetz zu laufen... 
Aber was von Yamaha angeboten wird, wird immer schwerer... Immer 
schlechtere Übersicht durch Funktionen, weil viel Unnötiges eingebaut 
wird...

Als Beispiel: bei el. Orgelpositiv kann ich leicht Register zwischen 
Liedstrophen umschalten. 1-2 Fingerbewegungen reichen. Auch mit FK ist 
möglich, dann noch einfacher. Bei Yamaha-Keyboard: abgesehen von 
schlechterem Klangqualität: ich muß für Klangwechsel drei Ziffer tippen, 
dabei sehr genau auf kleine Tasten geraten, was beim Spielen nicht so 
einfach ist! Z.B. 0-3-8 tippen, dann nach einer Strophe 1-6-7 (die 
meisten Klänge sing völlig unbrauchbar, man muß passende sorgfältig 
aussuchen und gut im Kopf merken, sonst kommt eine Panne!)...

Also, mit Pop-Werkzeug muß man sehr vorsichtig umgehen, wenn man so 
etwas für Musik verwenden will! Möglich, aber nur bedingt.

: Bearbeitet durch User
von Maxim B. (max182)


Bewertung
0 lesenswert
nicht lesenswert
Rufus Τ. F. schrieb:

>
> Bitte; s' ist Deine Zeit, Dein Entwicklungsaufwand. Wenn Du tatsächlich
> glaubst, mit einer Selbstbaulösung näher am gewünschten Ziel anzukommen,
> dann machs halt.

Ich habe schon sowieso viel investiert: Grundausstattung erworben 
(Oszilloskop, alles fürs Löten, Minimum von Details, die man täglich 
braucht). Ein bißchen "C" einstudiert, so daß schon etwas lauffähiges 
kommt.
Ich brauche auch Ablenkung von meiner Arbeit: wenn zu viel Musik und nur 
Musik, dann endet man irgendwann im Irrenhaus...

Ich muß etwas machen. Aber vielleicht nicht so schnell, nur langsam - 
weil vieles anderes immer dazwischen kommt.

> Und Du willst Deinen Gruppen, die anscheinend gleichzeitig irgendeine
> Begleitung brauchen, diese völlig asynchron aus mehreren Deiner
> Wunderkästchen abspielen?
Ich kann immer doch jemand bitten, Knopf zu drucken, während ich zu 
Orgel nach oben gehe. Hauptsache, Kistchen hat keine Menu, oder wenn 
ohne Menu ganz unmöglich, dann alle wichtigsten Funktionen direkt 
ergreifbar. Das ist sehr wichtig. Man hat keine Zeit beim Musizieren, 
zwischen Menu-Urwald durchzukriechen... Alles wichtige sollte durch 
einen einigen Tastenklick möglich sein.

Als Beispiel: Viscount-Orgelpositiv Cantorum-VI hat keine Menu. Alles 
ist mit Tasten möglich, verschiedene Modi sind mit roten LED und auch 
mit  Beleuchtung von Registertasten gezeigt. Das ist sehr klug gemacht!

: Bearbeitet durch User

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]
  • [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.