Midi ?

Guten Abend ihr Spezialisten ^^,

Kennt von euch jemand ICs die man mit einem MIDI-Signal füttern kann, wo dann entsprechende Musik irgendo herauskommt? [Ich habe jetzt schon länger gegooled, aber für ein Klavier in größerer Version scheint bisher nur die Variante in Frage zu kommen die Midisignale in ein vorhandenes Keyboard (versteckt) einzuspeisen. Ideal wäre es wenn es sowas als Chip gibt, den man direkt neben dem Mikrokontroller platzieren könnte. Ich vermute mal normale Keyboards funktionieren auch nicht anders?]

Gruß,

Markus

Reply to
Markus
Loading thread data ...

Midi überträgt nur die Notenhöhe und den Zeitpunkt. Den ganzen Sound daraus, ob Flöte oder Klavier müsste der "Chip" selber erzeugen. D.h. da können nie alle denkbaren Instrumente drin sein. Und auch ob der Klang des Instruments nur ungefähr nachgestellt wird oder ob aufwändige Simulationen einen möglichst naturgetreuen Klang erzeugen sollen ist sache des "Chips" der das Midi abspielt.

Mit einem Keyboard, Synthsizer oder auch PC mit entsprechender Software hast du das Gerät das die Midi Signale in Klang umsetzt.

Obs einen Chip gibt weiß ich nicht. Evtl kannst du ja was mit uC selber programmieren, indem du eine gespielte Note des Instruments im FLASH ablegst und je nach Tonhöhe schneller oder langsamer auf einen DAC gibst. Das wäre die primitivste Methode eines Sythesizers. Allerdings verändern Instrumente mit der Tonhöhe auch (ein wenig) die Klangfarbe, so dass es nur so ähnlich wie das echte Instrumenr klingt.

Thomas

Reply to
Thomas Meier

Markus schrieb:

Früher gabs mal kleine Platinen, sog. "Wavetable Daughter Boards", die konnte man auf eine Soundblaster Karte stecken. Es gab Umbauanleitungen,

formatting link
um diese an ganz normale MIDI Schnittstellen zu betreiben. Das waren im wesentlichen nur Pegelanpassungen (MIDI hat IMHO 20mA Stromschleife, die Boards verwenden +5V TTL). Man konnte die Boards auch direkt an uC hängen. Bekannte Typen waren Yamaha DB50XG und Roland SoundCanvas SCB-55. Gibts nur noch gebraucht z.B. im bekannten Aktionshaus.

SingleChip Lösungen für GM (General MIDI) kenn' ich nur den VS1033

formatting link
habe aber keine Ahnung wie gut der klingt. Wobei vlsi ja ein Herz für Bastler hat und man die Teile wirklich direkt bei denen ordern kann. Leider gibts nur noch in Ausnahmefällen Muster...

-Klaus

--
Klaus Rotter * klaus  rotters  de * www.rotters.de
Reply to
Klaus Rotter

Klaus Rotter schrieb:

Habe gerade mal nachgeschaut. Die haben inzwischen wirklich nette Chips. Besonders der in Entwicklung befindliche VS1005 mit MP3, AAC, MIDI (GM2), Ogg, Encoding usw. klingt ganz gut. Mal sehen, was der VS1000 (nur Ogg) kosten soll. Die trauen sich was, einen reinen Ogg Vorbis Chip auf den Markt zu bringen. Leider sind die nicht auf der Embedded World vertreten...

-Klaus

--
Klaus Rotter * klaus  rotters  de * www.rotters.de
Reply to
Klaus Rotter

Das gute alte .MOD-Format lässt Grüßen. Meines Wissens hatten die es damals auch nicht anders gemacht.

Mit etwas mehr Aufwand kann man - in bestimmten Grenzen - den Klang aber auch im Frequenzraum in der Tonhöhe verschieben.

Da Makus ja ein Experte für FT ist, sollte das für ihn kein Problem sein ;-)

Mfg Thomas Pototschnig

Reply to
Thomas Pototschnig

Thomas Pototschnig schrieb:

Da fällt mir ein: Wenn Makus das hinkriegt hätte ich Interesse daran, da ich mir sowas erst vor kurzem selbst programmieren wollte, aber dann doch nicht dazu gekommen bin.

Also Makus - leg los :-)

Mfg Thomas Pototschnig

Reply to
Thomas Pototschnig

Klaus Rotter schrieb:

Ja wirklich erstaunlich was die alles schon draufhaben. Midi überrascht mich wirklich. Vermutlich kommt dann nur ein nicht ganz so eckiger C64-Sound raus.

Ist wohl ein Lizenz-Problem und für Low-Cost-Geräte gedacht oder so.

Mfg Thomas Pototschnig

Reply to
Thomas Pototschnig

"Thomas Pototschnig"

Hallo Thomas,

auch nicht anders gemacht.

im Frequenzraum in der Tonhöhe verschieben.

Wenn du etwas näher erläuterst was du da ändern willst... Was du wahrscheinlich meinst ist das Strecken (verlängern oder verkürzen) eines Tones ohne die Frequen zu ändern. Das geht nämlich mit Hilfe von DFT sehr gut.

Alerdings: Der Klang solte schon annähernd perfekt werden. Also einfaches stauchen oder strecken lieber nicht. Dann schon eher Alle Samples in den Flash rein. Allerdings hat man bei 44kHz Samplefrequenz und Stereo und mind. 8 Bit Auflösung bei einem mind. 30 sekunden lang klingenden Ton bereits 1,32 MB zusammen und das wäre nur eine einzige Taste. Und selbst die würde in keinen mir bekannten controler reinpassen.

DFT ;)

kurzem selbst programmieren wollte, aber dann doch

was genau?

Reply to
Markus

Am billigsten dürfte ein Wavetable-Modul für 'ne alte Soundkarte sein.

Google mal nach "MIDI Expander". So heissen AFAIK reine MIDI-Synthesizer ohne den Keyboard-Teil. Auf eBay findet man welche für ~20?, über die Klangqualität kann ich nix sagen (gibt's aber in beliebig teuer..).

--
thomas.kindler@gmx.de,
www.bredobrothers.de
www.microsoft-hellhounds.de
Reply to
Thomas Kindler

Nein - genau das nicht! Die Spieldauer soll gleich bleiben, dafür aber sich die Tonlage des Samples ändern. Das geht mit der DFT auch sehr gut ;-)

Genau um das geht es mir.

Kannst ja eine SDCard an den Controller anflanschen. Solang du nur ein Stimme brauchst könnte die SDCard das sogar mitmachen.

Details ;-)

An einem Testprogramm unter Windows (vma gerne nur so ein Konsolenprogramm), mit dem man das Verschieben der Samples in der Tonlage, ohne Änderung der Spieldauer, mal testen kann.

Hab da selber ein paar irre Ideen im Musikbereich, wofür ich das bräuchte ... Aber wie schon geschrieben - leider noch nicht dazugekommen und tausend andere Dinge sind meist dringender :-(

Mfg Thomas Pototschnig

Reply to
Thomas Pototschnig

-------- Original Message --------

vielleicht die DREAM-Dinger von Atmel?

formatting link

Reply to
Matthias Kirchner

In article , Thomas Pototschnig writes: |> Ja wirklich erstaunlich was die alles schon draufhaben. Midi überrascht |> mich wirklich. Vermutlich kommt dann nur ein nicht ganz so eckiger |> C64-Sound raus.

Den C64-Sound zu basteln, ist erstaunlich aufwendig. Amiga trifft die Sache vermutlich eher.

Ich verstehe hier auch nicht ganz das Problem; MIDI ist ein simples, serielles Protokoll zur Übertragung der "nackten" Informationen. Was draus gemacht wird, bleibt jedem selbst überlassen -- im Zeitalter von "General MIDI" (jeder "echte" Musiker wendet sich mit Grausen) -- gibt's selbst dazu gewisse Definitionen.

Also wirft man eben noch ausreichend Samplespeicher drauf und 32 Phasenakkus und fertig ist der Lack.

Wen ein 6809-Businterface und die Tatsache, daß der Soundchip der Busmaster sein will, nicht stören -- ich hätte da noch ein paar Ensoniq DOC samt Datenblatt (bis zu 32 Osc, 8-bit unsigned; bei 8MHz Basistakt und 32 aktiven Stimmen dann aber nur noch ~29,5kHz Samplerate; bei 10MHz immerhin noch ~36,7kHz; wer die Mühlen kennt: Wurde im Ensoniq ESQ1, SQ80, Mirage und SDP1 verbaut.)

Was nicht im Datenblatt drinsteht, ist, daß das BA-Bit (sozusagen A16) bei gesetzter Amplitudenmodulation auch gleich mitgelöscht wird, und man sich so ggf. im falschen Speicherbereich bewegt. Kann aber ganz interessant klingen ;)

Rainer

Reply to
Rainer Buchty

"Thomas Pototschnig"

Guten Morgen!

auch im Frequenzraum in der Tonhöhe verschieben.

wahrscheinlich

Frequen

die Tonlage des Samples ändern. Das geht mit der DFT

Doch genau das. Du meinst doch hier erst per Interpolation länger oder kürzer ziehen und dann die Länge bei gleichbleibender Tonhöhe wieder der vorigen Länge gleichzusetzen oder würdest du hier anders vorgehen? wenn es eine einfachere/bessere Möglichkeit gibt bin ich ganz Ohr.

stauchen

Bist du dir denn sicher dass nach einer solchen Transformation das Ergebnis noch gut bzw. perfekt klingt? Ich bin da zugegeben sehr skeptisch. Aber ein Test in Cool Edit 2000 könnte die Antwort liefern. Ich melde mich nochmal wenn ich mehr weiß.

Auflösung

bekannten

brauchst könnte die SDCard das sogar mitmachen.

6 Töne sollte es schon mindestens gleichzeitig erzeugen können.

vor kurzem selbst programmieren wollte, aber dann doch

mit dem man das Verschieben der Samples in der

Das ist leicht zu machen. Hilft mir aber im konkreten Fall nicht so recht weiter. Man muss dafür wie oben schon erwähnt erst die Samples interpoliert strecken/stauchen und dann per DFT oder FFT die Länge bei gleichbleibender Tonhöhe zurückstauchen/strecken.

Aber wie schon geschrieben - leider noch nicht

Ich vermute du denkst da an ein Gerät, in welches man hineinsingt oder sonstige Geräusche reingibt und per Keyboardtastatur die Töne/akkorde o.Ä. entsprechend erzeugt? An sowas hatte ich auch schnomal gedacht :) Das durfte sogar relativ einfach machbar sein mit ein paar msec Verzögerung. Ob das ein normaler Mikrocontroller schafft das zu berechnen weiß ich nicht, aber man könnte ja einen zweiten Controller dazu benutzen um die Samples zu puffern.

Markus

Reply to
Markus

"Matthias Kirchner"

Hallo Matthias,

Genial. Genau sowas hatte ich gesucht! :)

formatting link

Reply to
Markus

In article , "Markus" writes: |> Alerdings: Der Klang solte schon annähernd perfekt werden. |> Also einfaches stauchen oder strecken lieber nicht.

Achso. Damit scheiden ja schonmal alle kommerziellen Sampler und samplebasierte Synthesizer aus :)

|> Dann schon eher Alle Samples in den Flash rein. |> Allerdings hat man bei 44kHz Samplefrequenz und Stereo und mind. |> 8 Bit Auflösung bei einem mind. 30 sekunden lang klingenden Ton |> bereits 1,32 MB zusammen und das wäre nur eine einzige Taste.

...die Du natürlich auch noch in 127 Anschlagsstärken ablegen willst, um auch das Velocity-Feld sauber verarbeiten zu können.

Gigasampler und Kontakt lassen grüßen.

Rainer

Reply to
Rainer Buchty

aber auch im Frequenzraum in der Tonh=F6he verschieben.

wahrscheinlich

ne die Frequen

r sich die Tonlage des Samples =E4ndern. Das geht mit der DFT

Nein - ich meinte es m=FCsste gehen, wenn man ein kleines Fenster =FCber das Wave-File schiebt, den kleinen Teil transformiert, dann das Spektrum in der Frequenz verschiebt und anschlie=DFend wieder zur=FCcktransformiert.

aches stauchen

Cool Edit 2000 kann das meiner Erfahrung nach nicht so wie ich das meine.

Aufl=F6sung

en

n mir bekannten

Stimme brauchst k=F6nnte die SDCard das sogar mitmachen.

Wird wohl zuviel Datenrate f=FCr die SDCard, als auch insbesondere f=FCr den Controller.

=E4uchte ... Aber wie schon geschrieben - leider noch nicht

korde o.=C4.

Meine Gedanken kannst du nicht lesen :-) Ist ganz was anderes und das mit der Tonverschiebung ist nur ein kleiner Teil davon.

Mfg Thomas Pototschnig

Reply to
Thomas Pototschnig

"Thomas Pototschnig"

Dann müsste man im Frequenzraum für die Verschiebung stark interpolieren, damit das geht. Die Idee klingt aber interessant. Dann müsste man die Punkte bei hohen Frequenzen weiter nach links schieben als Punkte bei niedrigen Frequenzen. Ich glaube das wird dann ganz schön kompliziert *g*.

Was für eine Blockgröße würdest du für das kleine Fenster eigentlich vorschlagen?

Erzähl doch mal :)

Reply to
Markus

In article , "Markus" writes: |> Doch genau das. Du meinst doch hier erst per Interpolation |> länger oder kürzer ziehen und dann die Länge bei gleichbleibender |> Tonhöhe wieder der vorigen Länge gleichzusetzen oder würdest du |> hier anders vorgehen?

Ich bin zwar nicht Thomas, aber:

Du hast zwei Möglichkeiten. Entweder veränderst Du die Samplerate und läßt dafür die Auflösung der Wellenform gleich oder Du läßt die Samplerate konstant und überspringst dafür einzelne Samples (bzw. wiederholst diese mehrfach).

Erstes wäre ein programmierbarer Timer der einen Adreßzähler taktet, letzteres ein Phasenakkumulator. Damit's bei *dem* nicht quietscht, empfiehlt sich Interpolation, aber auch damit wirst Du nicht beliebig hochtransponieren können, denn irgendwann bleibt von Deiner Wellenform eben nur noch ein Rechteck über bzw. Du rennst schließlich in Aliasing rein.

Bei ersterem geht Dir dafür irgendwann die Puste aus, denn immerhin willst Du ja pro Oszillator nominal 88200 Speicherzugriffe pro Sekunde fahren (8 Bit, stereo, 44.1kHz) -- eine Oktave drüber sind's dann schon 176400, zwei Oktaven drüber 352800. Legst Du die 44.1kHz zufällig auf den Kammerton respektive MIDI-Note 69, hast Du nach oben noch fast 5 Oktaven, d.h. ballerst dort

*pro Oszillator* mit einer Zugriffsrate von knapp 3MHz auf den Bus.

Soll heißen: In den Controller selbst bekommst Du das sowieso nicht rein. Entweder fehlt Dir die Puste für die mindestens 16-Bit-Addition (achja, Du wolltest ja 30 Sekunden, also wird's eine 32-Bit-Addition), von denen Du osc*44100/s durchführen willst, oder es scheitert an den Buszugriffen.

Um externe Hardware kommst Du also so oder so nicht herum.

|> Bist du dir denn sicher dass nach einer solchen Transformation |> das Ergebnis noch gut bzw. perfekt klingt? Ich bin da zugegeben sehr |> skeptisch.

Was ist "perfekt"? Wenn Du es "perfekt" haben willst, dann solltest Du physical modelling betreiben und jeden Ton für sich anhand des mathematischen Modells des gewählten Klangs erzeugen :)

|> 6 Töne sollte es schon mindestens gleichzeitig erzeugen können.

In echtem Stereo, d.h. 12 * 44.1kHz? Das wiederum bedeutet, daß Du ein Zeitfenster von 529.2kHz hast, in dem Du alle notwendigen Operationen durchgeführt haben mußt -- da Du bei Interpolation mithilfe der Nachkommastelle des Phasenakkus zweimal auf den Speicher mußt, sind es sogar nur 24*44.1kHz, d.h. >1MHz.

In der Zeit also mindestens 1. Phasenakku einladen 2. Inkrementum draufaddieren 3a. Wellenformadresse aus Phasenakku erzeugen (z.B. die oberen 24 Bit) 3b. Wellenform laden 3c. Wellenformadresse +1 -> laden 3d. Interpolation anhand der unteren 8 Bit; sagen wir mal, die oberen 3 Bit hiervon reichen 4. Zumindest 3d wiederholen für zweiten Kanal; falls Speicher- interface zu klein, dann 3a-3d. 5. Ausgeben 6. Phasenakku rückschreiben

Und das mit einem AVR? Da wird sogar das 16MHz-Modell keuchen.

|> Das durfte sogar relativ einfach machbar sein mit ein paar msec Verzögerung.

Die willst Du aber nicht, diese "paar msec Verzögerung".

|> Ob das ein normaler Mikrocontroller schafft das zu berechnen weiß ich |> nicht, aber man könnte ja einen zweiten Controller dazu benutzen um die |> Samples zu puffern.

Es gäbe als Demonstratoren den Modulus Monowave, der *eine* Stimme (IIRC bestehend aus zwei Oszillatoren) mithilfe eines AVRs erzeugt, der nebenbei natürlich noch das Userinterface bedient (ein paar Drehregler und ein einzeiliges VFD), die Modulationsmatrix strickt und das ausgelesene Sample dann in die (analoge) Nachverarbeitung steckt. ->

formatting link

Dann wäre da noch der AVRsynth, welcher zwar keine Samples wiedergibt, aber quasi-analoge Synthese betreibt und sogar noch ein lustiges Digital- filter beisteuert. Auch der ist nicht sehr polyphon. ->

formatting link

Rainer

Reply to
Rainer Buchty

Markus schrub:

Yamaha OPL3. Aus alten Soundkarten auszulöten...

Ansgar

--
Mails an die angegebene Adresse erreichen mich - oder auch nicht! Gültige  
Adresse gibt's bei Bedarf!
Mails to the given address may or may not reach me - valid return address  
will be given when required!
Reply to
Ansgar Strickerschmidt

Die gehören mittlerweile zu Atmel? Ich habe vor einigen Jahren mal ein defektes Wavetabledaughterboard in die Hände bekommen, auf denen (wahrscheinlich) Sample-ROMs von dream waren. Der Controller selbst war von Crystal. Ich habe da dann aber nur den DAC ausgeschlachtet und weiterverwertet:

formatting link

Gruß Henning

Reply to
Henning Paul

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.