ZEVS.music

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

ZEVS

Betreff: ZEVS.music

BeitragFr, Okt 14, 2011 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe letztlich ein Modul geschrieben, das einige musikalische Probleme lösen können soll.
Alle, die keine Ahnung von Musiktheorie haben oder sich nicht dafür interresieren, lesen bitte bei .continue weiter.

An alle, die mir bis hier gefolgt sind: Hallo Midimaster (noch jemand?).
Mein kleines Modul kann Akkorde (Dur/Moll [Sept]) verarbeiten und spuckt euch bereitwillig Drei/Vierklänge, Tonleitern, Parallelen und Stufen (keine verminderten) aus.
Es bietet Typen zum Verwalten von einzelnen Noten, Takten und Musikstücken inkl. Funktionen zum Beschreiben von Audiosamples damit oder zum einfachen Abspielen.
Außerdem gibt es noch einen Listentyp zum Verwalten von Kadenzen.

.continue
Das Modul kann außerdem in Echtzeit Spielmusik komponieren, manipulierbar durch:
- Spannung (@Freaks: Stufen von Akkorden)
- Mollrate (@Nichtfreaks: Moll ^= trauriger Akkord; Dur ^= fröhlicher Akkord)
- Minimale und maximale Tonhöhe
- Maximale Sprünge
- Modulationen (Ein größerer Einschnitt)
- Spielgeschwindigkeit in beates per minute (bpm)
- SampleBanks, Sammlungen von Samples, um Sinustöne zu vermeiden (@Freaks: SampleBanks können auch mit Noten, Takten und Musikstücken verwendet werden).

Das ganze als einzelne BMax-Datei, kommentiert nach bbdoc und mit 6 Beispiel, von denen 5 nur für Musikfreaks interessant sind.

Ihr findet das Modul auf unserem Modulserver unter https://svn.blitzforum.de/ZEVS.mod/music.mod oder als zip hier (aktualisiert).

Ich freue mich auf eure Rückmeldungen.

ZEVS
  • Zuletzt bearbeitet von ZEVS am Sa, Okt 15, 2011 11:56, insgesamt 3-mal bearbeitet

Midimaster

BeitragSa, Okt 15, 2011 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah!

so ganz verstanden hab ich noch nicht worum es geht... Vielleicht könntest Du dem ZIP noch einige lebensnahe Beispiele mit geben, die die MOD nutzen und wo man erkennt, was sich praktisch damit erreichen läßt?

Das hier ist mir aufgefallen:


Septim-Akkord

Könnte da hier ein Tippfehler sein? Ein normaler 7er ist "Base+10"! "Base+11" nennt sich "maj7";
BlitzMax: [AUSKLAPPEN]
    If isSept Then accord.notes[3] = (base+11) Mod 12



Punktierte und Triolen

Hier fehlen die punktierten und die triolischen:
Zitat:
Length16 means the no. of 1/16-Notes of the note. Please use only the values 1, 2, 4[, 8, 16]

Ohne Punktierte kommt man beim Komponieren nicht weit und wenn's grooven soll wird's triolisch. Ich denke du solltest auch solche Werte zulassen. Ah! zu den Triolen gibts was! Kann man damit den Groove von 1/8-Noten verschieben? Wäre ja Cool! Aber heißen die Triolen wirklich "Triad"? Nicht "Triblet"? Wie isses mit Pausen in deinem Projekt?


Frequenzen

Zitat:
sample.samples[i+offset] = Sin(i*360*freq/Self.sampleRate)*120+120

wirklich 120? Nicht 127?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

ZEVS

BeitragSa, Okt 15, 2011 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit der 11 ist wirklich falsch, tut mir leid. Habe es auf svn aktualisiert, der neue Downloadlink aus dem Archiv ist nun (edit: )https://www.blitzforum.de/upload/file.php?id=11027.

Punktierte Noten sind prinzipiell möglich, wurden blos nicht getestet, werden vom Kompositionsalgorhytmus nicht benutzt und sind den SampleBanks fremd. Lässt sich natürlich leicht ändern.

Triad heißt Dreiklang. Triolen wurden bislang noch nicht implementiert, wäre bei ernsthaftem Interesse aber möglich, wenn ich das length16-Prinzip durch Floats ersetze.

Wie man sehr leicht erkennt, bedeuten die 120 bei der Frequenz einfach die Ausschlagsgröße der Sinuskurve, also die Lautstärke. Hier kann man eigentlich jeden Wert nehmen. Das CreateAudioSample-Beispiel verwendet z.B. 127.5.

edit: Pausen habe ich nun eingebaut. Der Typ heißt TPause und macht ziemlich wenig (was auch). Dafür gibt es jetzt auch die Schnittstelle TTactElement, mit der weitere derartige Elemente wie Glissandi etc. eingebaut werden können. Der Kompositionsalgorythmus interessiert sich bislang nicht dafür.

Zugegebenermaßen, einige Typen sind für die praktische Anwendung eher ungeeignet. Vielleicht mache ich noch einen Kompositionsalgo, der aus Kadenzen Musikstücke fertigt.

Die ganzen Akkordberechnungen werden zum Komponieren verwendet, ebenso wie die TNote-Funktionen.

Danke auf jeden Fall für das Feedback!

ZEVS

Midimaster

BeitragSa, Okt 15, 2011 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
musst dich dafür aber nicht entschuldigen... ich will ja nur helfen, nicht kritisieren.

Willste noch zwei Tipps?

Timing-Basis

Stell das Timing-System gleich auf einer 1/96-Basis! Du wirst es nie bereuen!

Gerade:

Viertel=24 Einheiten
Achtel=12
Sechszehntel=6

Punktierte:

Viertel=36 Einheiten
Achtel=18
Sechszehntel=9

Triolen:

Viertel=16 Einheiten
Achtel=8
Sechszehntel=4


Frequenz:

Ist leider nicht egal auf welche Basis du es stellst! Es muss 127 oder 128 oder ganz genau 127.5 sein. Wegen des Nulldurchgangs und der Stille!!! Mit 120er System hast du auch bei Stille Volume von +7 am Audio-Ausgang = 0.25V Gleichspannung! Gar nicht gut!

Zwar kannst du den Maximalwert einschränken aber nie den Nulldurchgang verschieben! Also das wäre möglich:

BlitzBasic: [AUSKLAPPEN]
sample.samples[i+offset] = Sin(i*360*freq/Self.sampleRate)*100+127.5


Wäre sogar besser wegen des Clippings nach oben immer etwas Luft zu lassen. Vergleiche Audacity Normalize -3dB
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

ZEVS

BeitragDi, Okt 18, 2011 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
So die neue Version ist da. Habe auf 96-er System umgestellt und Triolen, Punktierte sowie Pausen in den Kompositionsalgo eingebaut. Außerdem kann man mit TComposator.composePiece nun ganze Stücke komponieren lassen.
Svn beliebt mal wieder gleich, aus dem Archiv gibt es das hier.
Über weitere Tipps (auch von anderen, die einfach nur Echtzeitspielmusik wollen) freue ich mich immer.

ZEVS

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group