Frage

Wie werden Sie eine einfache Partitur für ein einzelnes Instrument in regelmäßiger Standardnotation geschrieben modellieren? Sicherlich gibt es viele Bibliotheken gibt, die genau dies tun. Ich bin meistens gespannt verschiedene Möglichkeiten, um Musik in einer Datenstruktur darstellen. Was gut funktioniert und was nicht?

einige der schwierigeren Aspekte wie Dynamik zu ignorieren, würde die offensichtliche Weise eine wörtliche Übersetzung von allem in Objects sein - eine Note von Maßnahmen bestand aus Schuldverschreibungen. Synthesis, nehme ich an, würde bedeuten, herauszufinden, die Start- / Endzeit jeder Note und Mischen Sinuswellen.

Ist die offensichtliche Art und Weise ein guter Weg? Was gibt andere Wege, dies zu tun?

War es hilfreich?

Lösung

MIDI-Dateien wären der üblicher Weg, dies zu tun. MIDI ist ein Standardformat für Daten zu den Noten, einschließlich Start- und Endzeiten, Note Volumen zu speichern, welches Instrument es gespielt und verschiedene besondere Eigenschaften; Sie können viel prewritten Bibliotheken (darunter auch einige Open-Source) zum Lesen und Schreiben der Dateien und die die Daten in ihnen in Form von Arrays oder Objekte finden, obwohl sie in der Regel nicht, es tun, indem für jede Note ein Objekt mit, was würde summieren sich zu viel Speicher-Overhead.

Die Instrumente in MIDI definiert sind nur Zahlen von 1 bis 128, die symbolischen Namen haben, wie Geige oder Trompete, aber MIDI selbst sagt nichts darüber, was die Instrumente wie eigentlich klingen sollte. Das ist die Aufgabe eines Synthesizers, der die High-Level-MIDI-Daten ein dauert es in Schall umwandelt. Im Prinzip ja, können Sie jeden Ton durch Überlagern von Sinuswellen erzeugen, aber das funktioniert nicht, dass in der Praxis gut, weil es sehr rechenintensiv wird, wenn Sie zu spielen, ein paar Spuren parallel zu bekommen; auch ein einfaches Fourier-Spektrum (die relativen Intensitäten der Sinuswellen) ist einfach nicht ausreichend, wenn Sie versuchen, den wahren Klang eines Instruments und die Ausdruckskraft eines Menschen, es zu spielen zu reproduzieren. (Ich habe einen einfachen Synthesizer geschrieben zu tun, dass so weiß ich schwer es einen anständigen Klang sein kann) Es gibt eine Menge Forschung in der Wissenschaft der Synthese getan, und mehr DSP im Allgemeinen (digitale Signalverarbeitung), so sollten Sie sicherlich in der Lage sein, viele Bücher und Web-Seiten zu finden, darüber zu lesen, wenn Sie möchten.

Auch nur, dies kann zu dem, was die Frage tangential bezogen werden, aber Sie könnten in einer Audio-Programmiersprache namens interessiert sein ChucK . Es wurde von Menschen an der Kreuzung der Programmierung und Musik, und Sie können sich wahrscheinlich eine gute Idee, den aktuellen Stand der Klangsynthese durch das Spielen, um mit ihm bekommen.

Andere Tipps

Viele Menschen neue gemeinsame westliche Musiknotation Projekte tun verwenden MusicXML als Ausgangspunkt. Es bietet eine vollständige Darstellung der Musik-Notation, die Sie Ihre Bedürfnisse gerecht zu werden Teilmengen können. Es gibt nun eine XSD-Schema-Definition, die wie ProxyMusic Projekte verwenden, um MusicXML Objektmodelle zu erstellen. ProxyMusic schafft diese in Java, aber man sollte etwas sein können ähnlich mit anderen XML-Datenbindung Tools in anderen Sprachen tun.

Als eine MusicXML Kunde es ausdrückte:

"Ein sehr wichtiger Vorteil aller Ihre harten Arbeit auf MusicXML soweit ich besorgt bin, ist, dass ich es als eine klarer verwenden, strukturiert und sehr‚reale Welt praktische‘Spezifikation, welche Musik‚ist‘, um meine Anwendung der internen Datenstrukturen entwerfen und implementieren. "

Es gibt viel mehr Informationen zur Verfügung - XSDs und DTDs, Beispieldateien, ein Tutorial, eine Liste der unterstützten Anwendungen, eine Liste von Publikationen und vieles mehr - bei

http://www.makemusic.com/musicxml

MIDI ist nicht ein sehr gutes Modell für eine einfache Partitur in Standard-Notation. MIDI fehlen viele der grundlegenden Konzepte der Musiknotation. Es wurde entwickelt, um ein Performance-Format, keine Notation-Format sein.

Es ist wahr, dass die Musik-Notation nicht hierarchisch aufgebaut ist. Da XML hierarchisch ist, verwendet MusicXML Start-Stopp-Elemente gepaart zur Darstellung von nicht-hierarchischen Daten. Eine native Datenstruktur kann die Dinge direkt darstellen, was ein Grund dafür ist, dass MusicXML nur ein Ausgangspunkt für die Datenstruktur ist.

Für eine direkte Art und Weise Musik-Notation darzustellen, die ihre gleichzeitige horizontale und vertikale Struktur erfasst, Blick auf die Humdrum -Format, das mehr von einem Tabellenkalkulations / Gittermodell verwendet. Humdrum ist besonders in Musikwissenschaft und Musikanalyse-Anwendungen eingesetzt, in denen seine Datenstruktur besonders gut funktioniert.

Musik in einer Datenstruktur, Standardnotation, ...

Klingt wie Sie interessieren würden LilyPond .

Die meisten Dinge über musikalische Notation fast rein mechanisch sind (es gibt Regeln und Richtlinien auch für die komplexen, nicht-triviale Teile der Notation) und LilyPond hat eine schöne Aufgabe, kümmert sich um all jene mechanischen Aspekte. Was bleibt, ist Input-Dateien, die einfach in einem beliebigen Texteditor zu schreiben. Neben PDFs können LilyPond auch Midi-Dateien erzeugen.

Wenn Sie so geneigt fühlen, könnten Sie erzeugen die Textdateien algorythimically mit einem Programm und rufen Sie LilyPond es Notation zu konvertieren und eine MIDI-Datei für Sie.

Ich bezweifle, dass Sie könnte eine vollständigere und prägnante Art und Weise findet Musik als eine Eingabedatei für LilyPond zum Ausdruck bringen.

Bitte haben Sie Verständnis , die Musik und musikalische Notation ist nicht hierarchisch und nicht (auch) durch die strikte Einhaltung von hierarchischem Denken modelliert werden. diese Lesen für mor Informationen zu diesem Thema.

Viel Spaß!

Hmmm, Spaß Problem.

Eigentlich würde ich versucht sein, es in der Command-Muster zu drehen zusammen mit Composite. Dies ist eine Art der normalen OO Ansatz auf den Kopf stellt, wie Sie in einem gewissen Sinne machen die modellierten Objekte Verben statt Substantive sind. Es wäre so:

ein Hinweis ist eine Klasse mit einer Methode, play(), and a ctor takinglengthandtone`.

Sie brauchen ein Instrument, das das Verhalten des Synth definiert. Timbre, Angriff, und so weiter

Sie würden dann einen Score haben, die eine Timesignature hat, und ist ein Composite-Muster enthält Maßnahmen; die Maßnahmen, die die wichtigen Hinweise.

Eigentlich spielt es bedeutet, ein paar andere Dinge, wie Repeats und Codas Interpretation, die andere Container sind. So spielen sie, interpretieren Sie die hierarchische Struktur des Composite, eine Notiz in eine Warteschlange eingefügt; wie die Töne durch die Warteschlange auf der Tempi basierend bewegen, hat jede Note seine play() Methode aufgerufen.

Hmmm, könnte das invertiert; jede Note wird als Eingang in das Gerät gegeben, die sie durch Synthetisieren der Wellenform interpretiert, wie erforderlich. Das kommt wieder um so etwas wie Ihre ursprüngliche Regelung.

Ein weiterer Ansatz zur Zersetzung ist Parnas' Gesetz anzuwenden: Sie zersetzen, um geheime Orte zu halten, wenn die Anforderungen ändern könnten. Aber ich denke, dass endet mit einer ähnlichen Zersetzung oben; Sie können die Taktart und die Stimmung ändern, können Sie das Instrument ändern --- ein Hinweis kümmert sich nicht, wenn Sie es auf einer Geige, ein Klavier oder eine Marimba spielen.

Interessantes Problem.

Meine Musikkomposition Software (mein Profil für den Link sehen) verwendet Notes als Primäreinheit (mit Eigenschaften wie Ausgangsposition, Länge, Volumen, Balance, Freisetzungsdauer etc.). Hinweise werden gruppiert in Patterns (die ihre eigenen Startpositionen und Wiederholungseigenschaften haben), die in Spuren gruppiert sind (die ihr eigenes Instrument oder Instrumente haben).

Sinuswellen Blending ist eine Methode zur Synthese von Klängen, aber es ist ziemlich selten (es ist teuer und klingt nicht sehr gut). Wavetable-Synthese (die meine Software verwendet) ist rechnerisch kostengünstig und relativ leicht zu Code, und ist im Wesentlichen unbegrenzt in der Vielfalt von Klängen kann es produzieren.

Der Nutzen eines Modells kann nur innerhalb eines bestimmten Kontext bewertet werden. Was ist das Sie mit diesem Modell zu tun versuchen?

Viele der Befragten haben gesagt, dass die Musik nicht hierarchisch. Ich bin damit einverstanden Art mit diesem, sondern, dass der Musik vorschlagen kann, jeder was zu einer unterschiedlichen Hierarchie hierarchisch aus vielen verschiedenen Blickwinkeln betrachtet werden. Wir wollen kann es als eine Liste von Stimmen zu sehen, von denen jede Notizen mit Ein / Aus / Geschwindigkeit / etc Attribute. Oder wir können es als vertikale Klang zur harmonischen Analyse anzeigen möchten. Oder wir können sie in einer Weise geeignet für kontrapunktische Analyse anzeigen möchten. Oder viele andere Möglichkeiten. Schlimmer noch, wir wollen kann es aus diesen verschiedenen Blickwinkeln für einen einzigen Zweck sehen.

mehrere Versuche gemacht hat Musik für die Zwecke der Erzeugung Art Kontrapunkt zu modellieren, Harmonie und tonalen Zentren analysieren, und viele andere Dinge, habe ich von Musik Zurückhaltung zu ergeben meiner Modellierungsfähigkeiten kontinuierlich frustriert. Ich fange an zu glauben, dass das beste Modell relational sein kann, einfach weil zu einem großen Teil der Basis-Modelle auf dem relationalen Modell der Daten streben nicht einen Standpunkt über den Kontext der Nutzung zu nehmen. Allerdings kann, dass einfach das Problem woanders drängen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top