Jared Dines macht z.Zt. einen Wettbewerb, bei dem man ein Solo über einen Song-Ausschnitt von ihm spielen soll. Der beste Shredderer erhält als Belohnung 500 $. Ich habe mal Just-For-Fun teilgenommen und hoffe das ich in seinem Video auf dem Channel auftauche :-).
Alle Beiträge von Björn Karpenstein
Sparx Systems Enterprise Architect + SQL : Interpretation der Linkdarstellung / Link Layout eines Diagrams über das relationale EA Datenmodell
Problem
Über das relationale Datenmodell des Enterprise Architects soll die Geometrie von Links auf Diagrammen rekonstruiert werden. Die nötigen Felder sind in den Tiefen der Datenstrukturen aus Tabellen und Attributen in einem Memo-/Freitext-Feld versteckt.
Ich entwickle zur Zeit eine eigene Interpretation des EA-Renderers mit GoJS, wo ich auf das Problem gestoßen bin, dass ich aufgrund der unterschiedlichen Connectorstyles, welche für einen Link auf unterschiedlichen Diagrammen eine andere Geometrie vorweisen kann, den Endpunkt nicht ermitteln kann. Eine Lösung hierzu möchte ich hier ausarbeiten.
Analyse
Relationen
Ein Link/Connector (Tabelle „t_connector„) kann auf mehreren Diagrammen unterschiedliche Darstellungen haben. Die Geometrie des Links auf einem Diagramm wird über das Attribut „Geometry“ der Tabelle „t_diagramlinks“ bestimmt. Das Attribut „Geometry“ ist ein Langtext-/Memo-Feld und wird im folgenden einer Analyse unterzogen, da sich im Internet nur sehr spärlich Informationen über den Aufbau und die Bedeutung des Doppelpunkt-separierten Strings finden.
Die Tabelle „t_diagramlinks“
“ A DiagramLink is an object that holds display information on a connector between two elements in a specific diagram. It includes, for example, the custom points and display appearance. It can be accessed from the Diagram DiagramLinks collection. “
https://sparxsystems.com/enterprise_architect_user_guide/
14.0/automation/diagramlinks.html
| Attribute | Remarks |
| ConnectorID | Long Notes: Read/Write The ID of the associated connector. |
| DiagramID | Long Notes: Read/Write The local ID for the associated diagram. |
| Geometry | String (Memo-Field) Notes: Read/Write The geometry associated with the current connector in this diagram. |
| HiddenLabels | Boolean Notes: Indicates if this connector’s labels are hidden on the diagram. |
| InstanceID | Long Notes: Read only The connector identifier for the current model. |
| IsHidden | Boolean Notes: Read/Write Indicates if this item is hidden or not. |
| LineColor | Long Notes: Sets the line color of the connector. Set to -1 to reset to the default color in the model. |
| LineStyle | Long Notes: Sets the line style of the connector. 1 = Direct 2 = Auto Routing 3 = Custom Line 4 = Tree Vertical 5 = Tree Horizontal 6 = Lateral Vertical 7 = Lateral Horizontal 8 = Orthogonal Square 9 = Orthogonal Rounded |
| LineWidth | Long Notes: Sets the line width of the connector. |
| ObjectType | ObjectType Notes: Read only Distinguishes objects referenced through a Dispatch interface. |
| Path | String Notes: Read/Write The path of the connector in this diagram. |
| SourceInstanceUID | String Notes: Read only Returns the Unique Identifier of the source object. |
| SuppressSegment | Boolean Notes: Indicates whether the connector segments are suppressed. |
| Style | String Notes: Read/Write Additional style information; for example, color or thickness. |
| TargetInstanceUID | String Notes: Read only Returns the Unique Identifier of the target object. |




Fremdmeinungen einholen – ein Ausflug in die Forenwelt
Ich habe mich aus Gründen der Kollaboration entschieden, die Analysen in Stackoverflow und EA fortzuführen. Hier finden sich die Links zu meinem Beitrag:
https://www.sparxsystems.com/forums/smf/index.php/topic,42536.0.html
https://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=241211
Fazit: Obwohl mir kein Forum eine nutzbare Lösung angeboten hat, lohnt es sich sich neue Anregungen zu dem Problem einzuholen
Lösung für das Problem mit der fehlenden Ecke des Zielknoten (Target Edge) – Rechteckschnitt
Im Datenmodell wird die Mouse-Release Position über Geometry EX/EY (Geometry) gespeichert, was allerdings nicht der Schnittpunkt mit dem Rechteck ist.
Mit 4 Geraden lässt sich das Rechteck bestimmen (obgleich natürlich auch Punkte existieren, die nicht auf dem Rechteck liegen).


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Erzeuge eine eigene Link-Klasse für das Routing der Pfeile, die von Hand gezogen wurden
// und über spezielle Attribute in der EAP-Datei definiert werden
// Ruft die Superklasse von go.Link im Konstruktor auf
function MultiNodePathLink() {
go.Link.call(this);
}
go.Diagram.inherit(MultiNodePathLink, go.Link); // Erben von go.Link
// ignores this.routing, this.adjusting, this.corner, this.smoothness, this.curviness
/** @override */
MultiNodePathLink.prototype.computePoints = function () {
// Die this Referenz ist hier ist ein geerbter ein go.Link. der bei Links
var startNode = this.fromNode;
var startNodeX = startNode.location.M; // X-Koordinate vom Startknoten
var startNodeY = startNode.location.N; // Y-Koordinate vom Startknoten
var endNode = this.toNode;
var endNodeX = endNode.location.M; // X-Koordinate vom Startknoten
var endNodeY = endNode.location.N; // Y-Koordinate vom Startknoten
var startNodeData = startNode.data; // Das sind die Daten
var endNodeData = endNode.data; // Das sind die Daten
// Die Link-Daten
var linkProperties = this.data;
//** Das Feld Style in [t_diagramlink] bestimmt die Connector-Darstellung **/
// https://www.capri-soft.de/blog/?p=2904
/*
* 1 = Direct Mode=1
* 2 = Auto Routing Mode=2
* 3 = Custom Line Mode=3
* 4 = Tree Vertical Mode=3;TREE=V
* 5 = Tree Horizontal Mode=3;TREE=H
* 6 = Lateral Vertical Mode=3;TREE=LV
* 7 = Lateral Horizontal Mode=3;TREE=LH
* 8 = Orthogonal Square Mode=3;TREE=OS
* 9 = Orthogonal Rounded Mode=3;TREE=OR
*/
var styleStringArray = linkProperties.style.split(";");
var mode = -1;
var tree = '';
for (var i = 0; i < styleStringArray.length; i++) {
if (styleStringArray[i].trim().indexOf('Mode=') > -1) {
mode = styleStringArray[i].replace('Mode=', '');
}
if (styleStringArray[i].trim().indexOf('TREE=') > -1) {
tree = styleStringArray[i].replace('TREE=', '');
}
}
// In der Tabelle t_diagramlinks in der Freitextspalte "Geometry" wird in einem CSV-String
// gespeichert, wie der Link letztendlich auf dem Diagram gezogen wurde
var geometryString = linkProperties.geometry.split(";");
var sx, sy, ex, ey, edge;
for (var i = 0; i < geometryString.length; i++) {
// SX and SY are relative to the centre of the start object
if (geometryString[i].trim().indexOf('SX=') > -1) sx = geometryString[i].replace('SX=', '');
if (geometryString[i].trim().indexOf('SY=') > -1) sy = geometryString[i].replace('SY=', '');
// EX and EY are relative to the centre of the end object
if (geometryString[i].trim().indexOf('EX=') > -1) ex = geometryString[i].replace('EX=', '');
if (geometryString[i].trim().indexOf('EY=') > -1) ey = geometryString[i].replace('EY=', '');
// EDGE ranges in value from 1-4, with 1=Top, 2=Right, 3=Bottom, 4=Left (Outgoing Point of the Start Object)
if (geometryString[i].trim().indexOf('EDGE=') > -1) edge = geometryString[i].replace('EDGE=', '');
}
// Hier beginnt das Custom-Routing
if (typeof (sx) === "undefined" || typeof (sy) === "undefined" || typeof (ex) === "undefined" || typeof (ey) === "undefined" || typeof (edge) === "undefined") {
return;
}
this.clearPoints();
if (linkProperties.start_object_name == 'System Verification Test Reports' && linkProperties.end_object_name == 'System test specifications') {
var test = 'irrsinn';
}
// Hier werden die Wege definiert für das gecustomizte Link Routing
// Geht der Link nach oben oder unten wird die Y-Koordinate des Startknotens genutzt (Weil Orthogonales Routing)
var startConnX = null;
var startConnY = null;
if (edge == 1) { // Ecke oben
startConnX = Math.abs(startNodeX) + Math.abs((startNode.actualBounds.width / 2) + new Number(sx));
startConnY = Math.abs(startNodeY);
}
else if (edge == 3) { // Ecke unten
startConnX = Math.abs(startNodeX) + Math.abs((startNode.actualBounds.width / 2) + new Number(sx));
startConnY = Math.abs(startNodeY) + new Number(startNode.actualBounds.height);
}
else if (edge == 2) { // Ecke rechts
startConnX = Math.abs(startNodeX) + startNode.actualBounds.width;
startConnY = Math.abs(startNodeY) + Math.abs((startNode.actualBounds.height / 2) - new Number(sy));
}
else if (edge == 4) { // Ecke links
startConnX = new Number(Math.abs(startNodeX));
startConnY = Math.round(startNodeY) + Math.round((startNode.actualBounds.height / 2) - new Number(sy));
}
else {
alert('Die Edge konnte nicht entdeckt werden! Ist der Geometry String in der EAP Datei richtig?');
}
this.addPoint(new go.Point(Math.round(startConnX), Math.round(startConnY)));
// Abfrage: Gibt es einen letzten Path Punkt?
var lastPathPunkt=false;
var lastPathPunktX, lastPathPunktY;
if (mode != 1)
{
// Routing über die Zwischenwege
if (typeof linkProperties.conn_path !== "undefined" && linkProperties.conn_path !== "") {
var splittedArray = linkProperties.conn_path.split(";");
if (splittedArray.length > 1) {
// Hier ist mindestens ein Wert vorhanden da auch der erste mit Semikolon abgeschlossen wird im Path vom EA
for (var i = 0; i < splittedArray.length - 1; i++) {
var einMittelPunkt = splittedArray[i];
var mittelPunktArray = einMittelPunkt.split(":");
this.addPoint(new go.Point(Math.abs(new Number(mittelPunktArray[0])), Math.abs(new Number(mittelPunktArray[1]))))
lastPathPunktX = Math.abs(new Number(mittelPunktArray[0]));
lastPathPunktY = Math.abs(new Number(mittelPunktArray[1]));
lastPathPunkt = true;
}
}
}
}
// Wenn es keinen Pfad gab,muss der letzte Punkt mit dem Startknoten identisch sein
if (lastPathPunkt == false) {
lastPathPunktX = Math.abs(Math.round(startConnX));
lastPathPunktY = Math.abs(Math.round(startConnY));
}
// End-Routing
// Der Endpunkt in EA in Document Coordinates
var endConnX = Math.abs(endNodeX) + Math.abs((endNode.actualBounds.width / 2) + new Number(ex));
var endConnY = Math.abs(endNodeY) + Math.abs((endNode.actualBounds.height / 2) - new Number(ey));
// Spezialfälle bei horizontalen und vertikalen Linien:
if (endConnX == lastPathPunktX) {
// Es liegt eine vertikale Gerade (z.B. von oben nach unten) vor
this.addPoint(new go.Point(Math.round(lastPathPunktX), Math.round(lastPathPunktY)));
this.addPoint(new go.Point(Math.round(endConnX), Math.round(endConnY)));
} else if (endConnY == lastPathPunktY) {
// Es liegt eine horizontale Gerade (z.B. von rechts nach links) vor
this.addPoint(new go.Point(Math.round(lastPathPunktX), Math.round(lastPathPunktY)));
this.addPoint(new go.Point(Math.round(endConnX), Math.round(endConnY)));
} else {
// Es ist keine Gerade sondern ein Gerade, die mit y=m*x+b beschrieben werden kann
// 1.) Gerade zwischen Start- und Endpunkt ermittelnhn
// Ye-Ys
// m = ----- b=Ys-m*Xs oder b=Ye-m*Xe
// Xe-Xs
var m = (endConnY - lastPathPunktY) / (endConnX - lastPathPunktX);
var b = lastPathPunktY - m * lastPathPunktX
// 2.) Ermittlung der horizontalen und vertikalen Geraden des Rechteckes und dem Schnittpunkten
// Die Geraden, die das Rechteck definieren:
var rY1 = endNodeY;
var rY2 = endNodeY + endNode.actualBounds.height;
var rX1 = endNodeX;
var rX2 = endNodeX + endNode.actualBounds.width;
// (rX1, rY1) -zu-> (rX2, rY2)
// Horizontale Geraden:
// y - b
// x = -----
// m
var lengthToPoint = [];
var sX1 = (rY1 - b) / m; // S1(sX1|rY1)
if (sX1 >= rX1 && sX1 <= rX2) {
// Der Schnittpunkt sX1 ist am Rechteck
// Distanz: d=SQRT((y2-y1)^2+(x2-x1)^2)
var dS1 = Math.sqrt(Math.pow(rY1 - lastPathPunktY, 2) + Math.pow(sX1 - lastPathPunktX, 2));
lengthToPoint.push({
"distanz": dS1,
"x": sX1,
"y": rY1
});
}
var sX2 = (rY2 - b) / m; // S2(sX2|rY2)
if (sX2 >= rX1 && sX2 <= rX2) {
// Der Schnittpunkt sX2 ist am Rechteck
// Distanz: d=SQRT((y2-y1)^2+(x2-x1)^2)
var dS2 = Math.sqrt(Math.pow(rY2 - lastPathPunktY, 2) + Math.pow(sX2 - lastPathPunktX, 2));
lengthToPoint.push({
"distanz": dS2,
"x": sX2,
"y": rY2
});
}
// Vertikale Geraden:
//
// y = m*x + b
var sY1 = m * rX1 + b; // S3(rX1|sY1)
if (sY1 >= rY1 && sY1 <= rY2) {
// Der Schnittpunkt sY1 ist am Rechteck
// Distanz: d=SQRT((y2-y1)^2+(x2-x1)^2)
var dS3 = Math.sqrt(Math.pow(sY1 - lastPathPunktY, 2) + Math.pow(rX1 - lastPathPunktX, 2));
lengthToPoint.push({
"distanz": dS3,
"x": rX1,
"y": sY1
});
}
var sY2 = m * rX2 + b; // S4(rX2|sY2)
if (sY2 >= rY1 && sY2 <= rY2) {
// Der Schnittpunkt sY2 ist am Rechteck
// Distanz: d=SQRT((y2-y1)^2+(x2-x1)^2)
var dS4 = Math.sqrt(Math.pow(sY2 - lastPathPunktY, 2) + Math.pow(rX2 - lastPathPunktX, 2));
lengthToPoint.push({
"distanz": dS4,
"x": rX2,
"y": sY2
});
}
// Sortiere alle Punkte nach Distanz - der mit der kleinsten Entfernung isses
lengthToPoint.sort(function (a, b) { return a.distanz - b.distanz });
if (lengthToPoint.length > 0)
{
this.addPoint(new go.Point(Math.round(lengthToPoint[0].x), Math.round(lengthToPoint[0].y)));
}
else
{
this.addPoint(new go.Point(Math.round(lastPathPunktX), Math.round(lastPathPunktY)));
}
}
return true;
};
// end MultiNodePathLink class
Skiabfahrt „Märchenwiese“ auf der Wasserkuppe / Rhön vom 17.01.2019
Eine halbe Stunde von mir entfernt befindet sich ein beliebtes Ausflugsziel in der Rhön – die Wasserkuppe. In der Skisaison, welche meistens Anfang Januar beginnt, erwischt man oft Tage mit schlechtem Wetter. Wenn man mal einen schönen Tag erwischt ist die Piste leider oft gerammelt voll. Da ich z.Zt. meine betriebliche Elternzeit, welche durch das großzügige Angebot meine Arbeitgebers ermöglicht wird, mit einem freiem Tag in der Woche in Anspruch nehme, konnte ich an diesem Freitag bei fast leerer Piste und Kaiserwetter das folgende Video aufnehmen:
Songidee: Beck’s Beer is Back – Backstreet Boys Cover von Everybody
Intention
Also J.B.O. hatte ja schon eine (mehr oder weniger) genehmigte Cover-Version von „Everybody“ mit dem Titel „Everybody“ auf der Platte, allerdings hatte ich irgendwie einen anderen Text im Ohr….
Und wer könnte dann wohl blöd genug sein den Kalauer in einen Coversong zu packen?
Ergebnis
Lyrics
Ich trink gerade (yeah)
Ne Kaltschale
Hopfenkaltschale
Seid ihr auch so breit
Beck's Bier's back alright
Oh mein Gott das Becks ist leer
Ich trink zu schnell ich hätt gern mehr
eben war die Flasch' noch voll
doch es schmeckte viel zu toll
Ist euer Beck's Bier leer? (Yeaaah )
Und ihr möchtet mehr (Yeaaah)
Trinkt ihr so schnell ihr könnt (Yeaaah)
Denn wenn ihr alles alle trinkt kommt dann der Beck's-Mann und der bringt
Eine Schale (Yeeaaah)
Hopfenkaltschale (Yeaaaah)
Eine Kaltschale und die macht euch breit
Beck's Bier's back alright alright....
Zwischenteil:
Jetzt kommt mal her und trinkt mal leer
macht euch das Leben nicht so schwer
Der Beck's Mann bringt euch immer mehr
feiert stets des Beck's Rückkehr
5 Dinge die man bei der Produktion von Ballermann-Hits beachten muss. Wie produziert man einen Ballermann Hit? Das Ballermann-Rezept …
Intention
Die wenigsten Musiker machen sich Gedanken über den kommerziellen Plastik-Pop, welcher für die Feiermeute auf Mallorca oder für die Apres-Ski-Macher im Schirm aufbereitet wird. Die Musik gilt als niveaulos und frivol, was die Urlaubsgedanken weg von Moral, Anstand und anderen Pflichten bringen soll.
Ich wollte mal die ganzen Meinungen aus den Foren verifizieren und habe mir wirklich erfolgreiche Ballermann-Hits vorgenommen, angehört und versucht meine persönlichen Schlüsse aus dem Material zu ziehen.
Was macht einen Ballermann-Hit aus? Ist er wirklich so primitiv, wie es manch einer vermutet?
Meine ersten drei Versuche
Wie die meisten Leser jetzt vermuten, benötigt man eine Musiksoftware wie Cubase als DAW mit einigen Software-Instrumenten oder „echten Hardwaresynthesizern“. Ich persönlich nutze ausschließlich Software-Instrumente (VST Instrumente), die ich in meiner DAW eingebunden habe. Die folgenden Softwareinstrumente kommen unter Cubase bei mir zum Einsatz
- Groove Agent für den Beat
- Presets von Sylenth1 für die Melodien und Euronsynth-Akkorden
- Retrologue 2 für das Nachstellen von analogen Synthesizer-Sounds
- Samples (Hey! Hou! Wooosh!!! usw…)
- Einen Rauschgenerator (weißes Rauschen) für Riser-Sounds (also diese Wind-Woosh-Übergänge zwischen Song-Teilen)
- Sidechain-Kompressoren für Bass und Riser-Sounds, damit die Kick möglichst unbelegt/frei und durchsetzungsfähig bleibt (habe ich noch nicht perfektioniert).
Hier meine Ergebnisse:
Das Gejubel habe ich von einem Video der Fans der isländischen Nationalmannschaft entnommen
Schonmal ein guter Anfang. BPM und Melodien passen, habe noch keine mehstimmigen Harmonien und keinen Millenial Whoop reingesungen. Die Performance lässt auch noch etwas zu wünschen übrig.
Mikrofon: Mit einem SM-57 eingesungen, was ich hinter einem Pop-Schutz hatte
Hier ist noch etwas älterer Versuch mit einem anderem Lied:
Ein Rezept
Hier hatte einer das folgende Rezept veröffentlicht:
1. Da hätten wir die Geschwindigkeit.
Sie ist wie alle Hits an einen bestimmten Herzrythmus des Menschen angelehnt. Und auch eine gewisse Kopfnickfrequenz muss eingehalten werden. Daher ist diese Art typischer Pop immer so um 125-130 bpm angelegt.2. Dann hätten wir sanfte Instrumente.
Was sie machen, ist klassisches Songwriting. Wichtig ist, dass sie nicht experimentell sondern funktionell sind. Bei der Mucke gehts nicht um Sounds, sondern um gefällige Harmonie.3. Chords & Melodie (kein ACID-Geschranze, TB303-Riffs oder modulares Synthesizer-Gedudel….)
Ohne Harmonien gehts mal GARNICH.
Und hier dürften die meisten scheitern. Ein Hit schreibt man nicht mal eben einfach so. Hier sind absolut Kenntnisse von Harmonielehre und Melodiekomposition erfordderlich. Wer das nicht beherrscht.. soll Minimal machen.4. Text
Geht er nicht gut über die Lippen, – ist er zu lyrisch – zu verstrickt – zu künstlerisch – zu schicki micki, hat man verloren. Jeder kennt die Texte und das hat mehrere Gründe. Nicht weil sie dumm sind, sondern weil die Wort- und Satzstruktur und die Wortklänge in sich selbst stimmig sind und gut mit Zunge und Zähnen harmonieren.5. Produktion
von Ari (scheint mittlerweile im Forum gesperrt zu sein)
Ist die Komposition im Kasten muss das ganze auch noch erstklassig klingen. Und zwar ausproduziert und perfekt gemischt. Das ist hier kein Rotz-Rock, sondern Hochglanz-Plastik-Pop.
- Die folgenden Texte kommen gut an
- Frivole bis hin zu obszönen Texten
- Verbindung mit ausgelassender Feierei und starkem Alkoholkonsum
- Geld egal / keine Kohle / ab ins Dispo / scheiss auf dein Geld usw …
- Metaphern über Sonne, Palmen, Strand und Meer auf Mallorca
- Je einfacher und absurder der Text, desto höher ist die Wahrscheinlichkeit die feierende Meute damit zu erreichen.
- Einsatz von Risern, Swooshes und Reverse-Becken beim Übergang in eine anderen Part (z.B. in die Bridge oder den Refrain)
- Durchsetzungsfähige Kick, oft mit Ducking-Bass (gerne Sägezahnbass)
- Bass-Drops
- Eurodance-Synthesizer die Sägezahn-Akkorde spielen
- Döpp Döpp Döpp (oft genutzte Gesangshook, gerne im Chor mit einschlägiger Melodie)
Höre ich mir die „echten“ Ballermann-Hits mal an, stelle ich fest dass da i.d.R. doch mehrere Akkorde als nur C-Dur+Dominante(G)+Subdominante(F) und 120-130 BPM vorhanden sind… faszinierend ist, dass Mickie Krauses „Schatz schenk mir ein Foto“ sogar aus 9 Akkorden (mit Tonartwechsel) besteht. Es handelt sich aber ausschließlich um Dur- und Moll-Akkorde.
In fast jeder modernen Ballermann-Produktion sind die folgenden Elemente zu hören:
Beispiel: Schatzi Schenk mir ein Foto
Gemessen: 140 BPM (also kein 125 – 130 weil Herzschlagrythmus)
Tonart: A Dur / nach Tonartwechsel H Dur
Es handelt sich also nicht um C-Dur, wie es oft für Ballermann Hits behauptet wird.
Harmonien
Wenn man sie auf einer Gitarre nachspielt, hören sich die Harmonien fast so an, als seien sie einem spanischem Gitarrenlied entsprungen.
Intro
A, E, D, E
Bridge-Akkord
C#m
Strophe
2x (F#m, E, Hm)
Bridge Refrain (… hast du ein Foto oder hast du ne Nummer dabei)
Hm, F#m, C#m, F#m, Hm, F#m , D, Hm, E
Refrain (Schatzi schenk mir ein Foto….)
2x (A, E, D, E)
Bridge-Akkord
C#m
Wiederholung
Strophe, Bridge Refrain, Refrain, (jetzt kein Bridge Akkord), Bridge Refrain, Refrain
Tonartwechsel (… die Stühle in den Himmel… [Riser Sound Drums weg und wieder einblenden])
Refrain 2 Halbtöne höher (auf H, F#, E, F#) gesungen mit „La la la lalalala“ – und dann noch 3x normal
Outro
Bleibt auf H-Dur, endet mit Applaus und Gejubel Samples und einer Explosion auf dem letzten Bass-Drum-Hit (evtl. auch mit Bass Drop)
Mickies Produktionen
Ich habe ein YouTube-Video entdeckt, in dem Mickie bei XTREME SOUND in Köln ist:
Auf der Website von XTREME SOUND findet man einen ganzen Haufen bekannter und unbekannter Künstler. Im Grunde hat alles den selben Sound/die selbe Lautheit. DJ Ötzi, Möhre, Almklausi u.v.m. stehen auf deren Liste – alles keine namenlosen Künstler.
Ohne die Songs von Xtreme Sound hätten die Deutschen wohl weniger zu feiern, denn das Studio allein steht für etwa dreiviertel aller Stimmungs-Hits.
Tipps der Macher hinter Mickies Hits
Zum Arrangement:
Seine Kompositionen reicht Pfeil mal unaufgefordert bei Tonstudios ein, mal wird er für Auftragsproduktionen für konkrete Künstler angefragt. Im Durchschnitt erreichen Xtreme Sound so Woche für Woche 20 neue Titel, von denen die allermeisten jedoch mangels Aussicht auf Erfolg nicht veröffentlicht werden. Um die 70 Songs produziert das Studio pro Jahr, wobei den Machern mit ihrer jahrelangen Erfahrung und dem Wissen um aktuelle Trends oft die optimale Kombination aus Künstler, Song und Produktion gelingt. Ein Riesenmarkt im nationalen Musikgeschäft. Mit ganz eigenen Regeln.
Stern Interview mit XTREME SOUND
Zum Text (Nummer 5) – Die Leute müssen sich den Ref. aufs T-Shirt drucken wollen…
„Beim Schlager ist die Melodie wichtiger und die Texte drehen sich mehr um die Themen Partnerschaft und Liebe. Bei Ballermann-Liedern ähneln sich viele Songs und haben einen schnellen Beat. Dafür kommt’s hier mehr auf den Text an.“ Gerade der Refrain muss so sein, dass die Leute sich wiedererkennen und damit identifizieren können. „Am besten ist er so geil, dass sie sich ihn aufs T-Shirt drucken lassen würden“, so Pfeil.
Stern Interview mit XTREME SOUND
Fazit
Ballermann-Hits bestehen fast ausschließlich aus Synthesizer-Klängen und Riser-Sounds, haben aber oftmals mehr als nur 3 Akkorde. Das ultimative funktionierende Rezept gibt es nicht. Der Sound und die Texte sind bei vielen Stücken ähnlich, da XTREME SOUND in Köln zwei Drittel der Ballermann-Stars produziert, mixt und mastered.
Mal abgesehen von der Produktion gehört ein natürliches Talent Menschen zu animieren dazu. Wer den Pausenclown in der Schule markiert hat, sollte damit gute Voraussetzungen mitbringen. Wer zusätzlich eine Gleichgültigkeit gegenüber der Tatsache hat, dass er ausschließlich vor betrunkenen Menschen spielen wird und viel harte Arbeit investieren möchte, ist hier richtig – obgleich die Erfolgschancen aufgrund zahlreicher Newcomer nicht besonders hoch sind. Mickie Krause hat z.B. für seine Videos 20 Strandschönheiten aufgegabelt und dazu animiert sich mit ihm zum Affen zu machen :-). Wer eher im stillem Kämmerchen Musik prodziert und Songs writet, wird nicht besonders weit kommen.
Pfeil von XTREME Sound Köln
„.. auf Mallorca wird darüber entschieden, welche Lieder zum Hit werden…“
Zitat aus dem Forum: „Wer woran scheitern möchte, ist jedem selbst überlassen. Fakt ist – diese Musikrichtung ist alles andere als einfach! „
Super Mario Land – Theme der Game Boy Version auf Keyboard mit Square Oscillator nachgespielt
Kennt Ihr noch die Game Boy Version von Super Mario? Richtig das war Super Mario Land! Dieses Spiel hat etliche Stunden meiner Lebenszeit in jungen Jahren verbrannt. War es am Pausenhof nicht damals eine Ehre behaupten zu können, man habe das Spiel bereits durchgezockt? Ich kann mich an die Game Boy Zeiten erinnern, in denen fieberhaft Tipps, Tricks und Geheimnisse für das Durchspielen ausgetauscht wurden.
Als ich den nachgespielten Theme nun einem Bekannten zeigte, der angab früher auch im Super Mario Rausch gewesen zu sein, kam zunächst die Frage:
„Ist das aus dem Game oder hast du dir das selber ausgedacht?“
Meine erste Vermutung ich hätte den Theme dermaßen unkenntlich nachgespielt, dass ein eingefleischter Super Mario Fan ihn nicht erkennen kann, erwies sich dann Gott-sei-Dank als falsch. Mein Bekannter besaß keinen Game Boy. Er kannte nur den typischen NES-Theme von Super Mario Bros., welcher tausendfach im Internet nachgespielt wurde/wird (von Nintendo Sound Designer „Koji Kondo“). Interessant ist, dass der Theme von Super Mario Land eigens für die Game Boy Version komponiert wurde, auch wenn er nicht direkt für den Quadrat-Ausgang einer Spielekonsole konzipiert ist.
Der Komponist vom Super Mario Land Main Theme ist der Japaner „Hirokazu Tanaka“, welcher zu der Zeit viele Soundtracks für Nintendo verfasst hat, wie z.B. auch die Musik von Tetris. Das Album mit der Original-Musik von ihm findet man hier:
Es handelt sich hierbei um den ersten Titel „MARIO ADVENTURES I (Main BGM #1)„. Da die Stücke aber scheinbar nicht per se für eine Nintendo Konsole entwickelt wurden, dauert es eine Weile bis man ihn wirklich erkennt.
Keyboard Intro von Light My Fire (The Doors)
Wenn man einen Ohrwurm hat, möchte man ihn am liebsten gleich nachspielen. Mir ging es jetzt so mit dem 70er Hit „Light My Fire“ von „The Doors“. Ich hatte diesen schon lange nicht mehr gehört, doch auf einmal dudelte er wieder im Kopf rum. Was sich zunächst leicht anhört, entpuppt sich aber als kleinen Turnakt auf der Klaviatur 🙂 . Nach einigem Probieren kam ich zu diesem Ergebnis:
The Doors – Light my fire

TETRIS Game Boy Sound mit Quadrat-Oszillator (Square Oscillator) nachmachen
Der bekannteste Quadrat-Ausgang ist wohl der monophone PC Speaker / PC Piepser. Aber auch der Game Boy nutzt einen Quadrat-Ausgang, was man lustigerweise beim Nachspielen von Nintendo Melodien wie Tetris oder Super Mario sofort hört. Ich habe hier ein Beispiel gepostet, in dem ich eine bekannte Melodie (welche ist es???) spiele:
Songidee: Chick-O-Bani feat. Linus / Mit Cubase und Groove Agent SE remixen
Ein Remix ist im EDM Sinne oftmals eine Zerstückelung eines existierenden Liedes in einzelne Teile, welche im Anschluss in anderer Weise arrangiert werden, so dass eine Abwandlung des ursprünglichen Liedes oder ein völlig neues Lied entsteht.
Mein Sohn (mittlerweile 5) hat auf einem Handyvideo in Kindersprache in mein RHODE Kondensatormikrofon „gerappt“, was ich dann verwenden wollte um einen Remix zu machen.
Ich habe für den Gitarrensound das erste Mal heruntergeladene Impulsantworten eines Engl-Verstärkers in REVerence (Faltungs-Hall) genutzt, anstelle den Sound von „Guitar Rack“ oder des BIAS FX VST Amps.
Songidee: Jeder Mensch wär gern mehr
Die Onkelz-Lieder in meinem Kopf, die sich eingebrannt hatten, flackerten mal wieder in meinem Gedächtnis auf … Ich habe dann über den Gesang von Kevin Russel nachgedacht und über die Art, wie er die Wörter betont. Anschließend kam dieses Lied heraus:
Verse 1
Es sind die gleichööön Gedanken
die immer wieda käääährn
alte Gefühgöööö die meinen Geist verwirrn
wir ham uns lang nicht mehr geseh’n
weiß nicht mehr wer ihr seid
denke oft an diese Zeit
in Freundschaft und auch StreitBridge 1
Ihr seid jetzt Master, Bachelor, Doktor oder noch Student
und sitzt an euren Plänen während eure Zeit verrinntRef 1
Jeder Mensch wär gerne mehr
als er wirklich ist
Macht euch davon frei
Das Leben zieht vorbei
Vielleicht war ich der erste
doch ich bleib dabei
Geht euch mal erholen
und der Rest bleibt uns gestohlenVerse 2
Wir sind die gleichööön Personen
die sich zusammen schwörn
die alten Gedanken solln niemals wieder kehrn
wir ham uns früher oft geseh’n
und ich weiß wer ihr seid
willst nichts mehr davon wissen
von uns’rer alten ZeitBridge 2
Jugendsünden, Flausen und wir hatten trotzdem Spaß
wir saßen oft zusammen und manchmal rauchten wir GrasRef 2:
Mancher Mensch ist oft mehr
als er zu seien scheint
Jetzt erfüllt ihr eure Pflicht
mit nem entschlossenem Gesicht
Vielleicht war ich der erste
doch ich bleib dabei
Geht euch mal erholen
und der Rest bleibt uns gestohlenSolo
Man mag geteilter Meinung über die Band „Böhse Onkelz“ sein, man mag auch heute abstreiten in einer post-pubertären Jugendphase gesteckt zu haben, wo man die Texte intensiv auf Parties mitgegrölt hat … eventuell denkt man über Menschen die so etwas heute tun sogar eher negativ, obwohl – sind wir mal ehrlich – die Texte (bis auf die ersten zwei Alben) keineswegs irgendwie daneben (rechtsradikal) sind.
In meinem Kopf geistern heute immer noch die Onkelz-Lieder herum, auch wenn ich diese seit Jahren nicht mehr gehört habe. Ich könnte heute immer noch „Mexiko“, „Wir ham noch lange nicht genug“ – aber auch weniger „populäre“ Lieder wie „Könige für einen Tag“, „Gestern war heute noch morgen“, „Wenn wir einmal Engel sind…“ u.v.m. mitsingen. Dazu habe ich zugegeben nicht mehr die Gelegenheit, da sich durch den Umzug vom Dorf in die Stadt und den Wandel des alten Freundeskreises solche Parties / Musik-Zelebrierungen nicht mehr ergeben.
Wovon handeln also die Texte, wenn sie nicht rechtsradikal sind? Aus dem Gedächtnis heraus würde ich sagen:
- Die Wehr gegen Rufschädigung und übler Nachrede durch …
- Medien (verbreiten nur Lügen über uns … okay das sagt ja Donald Trump auch)
- andere Bands (im Hip Hop wird sich ja auch ständig gedisst)
- Die Ärzte: „zwischen Störkraft und den Onkelz steht ne Kuschel-Rock LP“
- Rausschmiss von Onkelz Fans bei Toten Hosen Konzerten
- Campino: „..ich nehme der Band ab dass sie sich von ihrere Rechtsphase distanziert hat…“ (siehe hier)
- Selbstbeweihräucherung (machen die Toten Hosen und Ärzte ja auch ständig)
- Liebe, Schmerz, Freundschaft, Depressionen, Sinn des Lebens …
- Anprangern von negativem, destruktivem Verhalten, Neigungen, Philosophien oder Lebensweisen