Test von East West Symphonic Choirs : Carl Orff – O fortuna – Carmina Burana

Hier ist die original Version:

Hier die nachgemachte Version mit East West Symphonic Choirs Erweiterung „Voices of the Apokalypse“

Veröffentlicht unter Musik, VST-Instrumente | Hinterlasse einen Kommentar

Sparx Systems Enterprise Architekt: Tipps und Tricks von einem SparxSystems Trainer

  • Erfahrungen aus der Praxis: Kein SVN (Subversion) verwenden
    • Gründe dafür sind…
      • Dateninkonsistenten da Crossreferenzen aus anderen Packages gelegentlich verloren gehen
      • Die Integration in Enterprise Architekt ist schlecht -> Keine Vergleichsmöglichkeiten
      • Einziger Vorteil wäre, wenn man mit Branches arbeiten möchte
        • z.B. eine Version eines Kunden erweitern ohne das es in den Trunk wandert
    • Besser Baselines (Erzeugt einen XMI Export)
      •  DIFF View im Gegensatz zu SVN (z.B. auf dem Diagramm rechtsklick zeigt Redlining) oder als Liste (Projektexplorer der Elemente, die sich geändert haben). Diagramm Baselines kann man vergleichen, die Subversion Integration liefert keine Vergleiche.
      • Baslines werden dummerweise lokal in App/User (Profilspeicherplatz) abgelegt … lokale Baselines – evtl. per Chronjob DIRs und DORs erzeugen -> Rückfrage wg. Skript bei Tutor
      • Aus der Praxis: Man zieht nur Baselines für Packages, die gerade bearbeitet werden
  • EAP Projekttransfer (aus der Datenbank raus in ein EAP File)
    •  EAP IN DATENBANK SPEICHERN -> CONFIGURE – MODEL – TRANSFER – Project Transfer
    •  Paralleles Arbeiten ist möglich in dem DBMS
  •  Configure -> Manage -> Enable Security
    • 1.) Security erstmal sperren
    • 2.) Export/Import sperren
    • 3.) Projekttransfer deaktivieren für andere User
  • Es gibt einen EA Reader für „Nur Leser“ den man sich kostenlos runterladen kann (Parallele Installation mit EA nicht möglich)
  • EAP Dateien sind eigentlich MS Access (MDB Dateien), die man in Access öffnen kann
  • Bei 64 Bit-Clients C:\window\syswow64\odbcad32.exe ausführen damit die DB Verbindung funktioniert
  • Requirements Diagramme: SysML Requirements Relationship (Connectorarten)
    Refine – Verfeinern
    Derive – Ableitung einer Anforderung z.B. Use Case abgeleitet von Requirement
    Trace – Abhängigkeit – Anforderung hängt von einer anderen ab
    Containment – Aggregation/Komposition für Requirements
Veröffentlicht unter Allgemein, Sparx Systems Enterprise Architect | Hinterlasse einen Kommentar

Test: VST-Instrument (ProjectSAM Orchestral Essentials 1) / Orchester Library: Exploring Exoplanets (Orchestral Movie Theme)

Beschreibung

Hier ist mein erster Test der Orchester Bibliothek „Orchestral Essentials 1“ von ProjectSAM, welches für 350 EUR erstaunlich gute Orchester-Sounds bietet.

Verwendete Tools

  • Cubase 9 Pro (geht aber auch mit jeder anderen DAW)
  • ProjecSAM Orchestral Essentials 1
  • CME M-Key Keyboard mit 48 Tasten
  • Kontakt 5 Player (kostenlos)

Ergebnis – Result

Eigenbeurteilung

Die Instrumente sind zwar nicht immer einzeln anwählbar, aber in Ihrer Aufnahmenform bilden sie ein sehr gutes Setup „Orchestergraben“ wie auf dem Screenshot unten dargestellt, der unverändert übernommen werden kann und ein absolutes Orchestererlebnis garantiert.

Unboxing

Veröffentlicht unter Allgemein, Musik, Musikproduktion, Song Ideen | Hinterlasse einen Kommentar

Microsoft Visual C++ : How to call WinMain() from a console apps main()-method / Wie man die WinMain-Methode von einer Konsolenanwendung aus aufruft

Problem

Eine C++ Anwendung hat als Konsolenanwendung den Einstiegspunkt

int main(void) {...}

aber als Win32-Anwendung den Einstiegspunkt

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  {...}

Es wird nach einer Möglichkeit gesucht, die WinMain-Methode von einer Konsolen-Anwendung aus aufzurufen, um eine Hauptfenster in der Konsolenanwendung zu generieren.

Ansatz

MSDN definiert die WinMain()-Methode folgendermaßen:

  • hInstance ist ein Element, das als „Handle für eine Instanz“ oder „Handle für ein Modul“ bezeichnet wird. Das Betriebssystem identifiziert mithilfe dieses Werts die ausführbare Datei (EXE), wenn diese in den Arbeitsspeicher geladen wird. Das Instanzhandle wird für bestimmte Windows-Funktionen benötigt—z. B. um Symbole oder Bitmaps zu laden.
  • hPrevInstance hat keine Bedeutung. Es wurde in 16-Bit-Windows verwendet, es ist aber jetzt stets 0 (null).
  • pCmdLine enthält die Befehlszeilenargumente als Unicode-Zeichenfolge.
  • nCmdShow ist ein Flag, das angibt, ob das Hauptanwendungsfenster minimiert, maximiert oder in Normalgröße angezeigt wird.

Die WinMain()-Methode kann von der main()-Anwendung aufgerufen werden, wenn man ein hInstance Handle bekommt. Dies geht folgermaßen:

GetModuleHandle(NULL)

Lösung – Solution

// HelloWorld.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <windows.h> 

// Das hier braucht man nur wenn man die test.wav abspielen will
//#pragma comment(lib,"winmm.lib")  //für MSV C++   

const char g_szClassName[] = "myWindowClass";

// Step 4: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
	case WM_CLOSE:
		DestroyWindow(hwnd);
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd, msg, wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	WNDCLASSEX wc;
	HWND hwnd;
	MSG Msg;

	//Step 1: Registering the Window Class
	wc.cbSize = sizeof(WNDCLASSEX);
	wc.style = 0;
	wc.lpfnWndProc = WndProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wc.hCursor = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = (LPCWSTR) g_szClassName;
	wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

	if (!RegisterClassEx(&wc))
	{
		MessageBox(NULL, L"Window Registration Failed!", L"Error!",
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	// Step 2: Creating the Window
	hwnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		(LPCWSTR) g_szClassName,
		L"Eine Mischung aus Console und Window App",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
		NULL, NULL, hInstance, NULL);

	if (hwnd == NULL)
	{
		MessageBox(NULL, L"Window Creation Failed!", L"Error!",
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	// Step 3: The Message Loop
	while (GetMessage(&Msg, NULL, 0, 0) > 0)
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
}


int main()
{
	// Das hier spielt eine Datei test.wav im gleichen Verzeichnis
	//PlaySound(L"test.wav", NULL, SND_ASYNC);
	
	WinMain(GetModuleHandle(NULL), 0, 0, 1);

	printf("Se hams Fenster geschlossen!");
	getchar();

	return 0;
}
Veröffentlicht unter C++, Programmierung | Hinterlasse einen Kommentar

Bilder vom zugefrorenem Aueweiher

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Cubase 9 Pro: Kontakt Player 5 (Sennheiser DrumMic’a) not available under VST Instruments / Kontakt Player 5 (DrumMic’a) nicht gelistet bei VST Instrumente

Problem

Nach der Installation von Sennheisers Drummica (bzw. Kontakt 5 Player) wird unter Cubase 9 Pro der Kontakt Player 5 nicht als Auswahl angezeigt. Diesen muss man auswählen, um Kontakt 5 Player Instrumente (z.B. Drummica) zu nutzen.

After the installation of Sennheisers DrumMic’a (specifically Kontakt Player 5) the Kontakt Player is not listed in the VST Instruments section.

Analysis – Analyse

Die Kontakt 5 Player Installation hat ein 64 Bit Verzeichnis mit den DLL’s angelegt. Die DLL’s wurden weder in VST Verzeichnisse kopiert noch wurde der neue Kontakt 5 Player Pfad als VST Verzeichnis definiert.

„C:\Program Files\Native Instruments\VSTPlugins 64 bit“

After the Kontakt 5 Player installation a new 64 Bit directory is created with the DLL files, that is currentyl not in the VST Plugin paths.

„C:\Program Files\Native Instruments\VSTPlugins 64 bit“

Ansatz – Approach

Anstelle die DLL’s in ein VST-Verzeichnis zu kopieren, legen wir den Pfad als neuen VST-Plugin-Pfad an.

Instead of copying the DLL files in a VST directory, we will create this folder as new VST plugin path.

Lösung – Solution

Unter „Geräte->Plug In Manager“ fügen wir die Kontakt 5 Player DLL’s hinzu, indem wir den Pfad „C:\Program Files\Native Instruments\VSTPlugins 64 bit“ anlegen. Nun wird Kontakt 5 Player gefunden.

Anmerkung: Sollte es Probleme beim Upgrade auf die neue Kontakt 5 Player Version geben (Download fehlgeschlagen im Service Center), kann man die neuste Version einfach von der Native Instruments Website runterladen und neu installieren. DrumMic’a Libraries sind danach in der neuen Kontakt 5 Player Version auswählbar.

Under „Devices->Plug In Manager“ we add the Kontakt 5 Player DLL path as new VST directory „C:\Program Files\Native Instruments\VSTPlugins 64 bit“. After that Kontakt 5 Player will be found.

Veröffentlicht unter Aufnahmetechnik, Musik, Musikproduktion | Hinterlasse einen Kommentar

Finde den versteckten Goldschatz

Hallo lieber Besucher!

In einzelnen Artikeln dieses Blogs befinden sich Hinweise zu einem verborgenem Piratenschatz aus dem 17. Jahrhundert.

Du wirst in den Artikeln diverse Indizien finden, die sich zu einer schlüssigem Schatzkarte zusammensetzen.

Wir haben Dir dieses Rätsel nicht besonders leicht gemacht, daher sind bereits viele Deiner Vorgänger gescheitert.

Dies ist kein Gewinnspiel, sondern eine echte Schatzsuche!

Ich wünsche Dir viel Erfolg beim Suchen.

Viele Grüße
Björn Karpenstein

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

IBM Doors DXL: Be resistent against hard coded module paths and names with uniqueID and itemFromID / Vorbeugung von DXL Fehlern durch Verschiebung von Modulen anhand der uniqueID

Problem

In the source code, you can find modulenames with full qualified path+name, what leads to DXL errors in case of a module movement.
Im DXL Code werden Module oft mit ihrem vollem Pfad und Namen hart codiert. Wird das Modul später verschoben, kommt es zu DXL Fehlern.

Ansatz – Approach

– Find out the uniqueID of the Module (here a fictive ALM and UIT Module) / Ermitteln Sie die uniqueID des Moduls
– get the full qualified name of the module / Vollständigen Modulnamen mit Pfad mit itemFromID ( uniqueID ) ermitteln
– open module / Modul laden

Solution – Lösung

Ermittlung der unique ID eines Moduls:

  • Öffnen des Moduls / Open module
  • Öffnen des DXL Fensters / Open DXL window (Menu — Tools — Edit DXL)
Module m = current;
print uniqueID(m) "";

Loading of the module / Laden des Modules

// UIT Module ID: 00005771
// ALM Module ID: 0000576e
string moduleID="00005771"; // Es soll das UIT Module geladen werden
string modulePath = fullName itemFromID(moduleID) "";
Module selectedModule=read(modulePath, true, true);
Veröffentlicht unter DXL, IBM DOORS | Hinterlasse einen Kommentar

Impressionen vom zugefrorenem Haunestausee im Winter

Bilder vom Haunesee vom 21. Januar 2017

Veröffentlicht unter Allgemein | 2 Kommentare

C#.NET: ZIP Dateien entpacken und im Zielverzeichnis ggf. überschreiben / Uncomrpess ZIP to a folder and overwrite existing

Problem

Die ZipFile.ExtractToDirectory(zip,target)-Methode in C# überschreibt keine vorhandenen Dateien, sondern schmeisst eine Exception.
The ZipFile.ExtractToDirectory(zip,target)-method in c# is not overwriting existing files, but throws an exception

Vorraussetzung – Prerequirements

.NET Framework der Version 4.5
Referenzen/References:
System.IO.Compression.dll
System.IO.Compression.FileSystem.dll

You have to import the using

using System.IO.Compression;

Ansatz – Approach

Durch die Iteration über das ZIP-Archiv lassen sich die einzelnen Dateien entpacken, wobei die Methode System.IO.Compression.ZipArchiveEntry.ExtractToFile(string path, bool overwrite) ein Überschreiben erlaubt.

The iteration on System.IO.Compression.ZipArchive with System.IO.Compression.ZipArchiveEntry.ExtractToFile(string path, bool overwrite) allows to overwrite existing files.

Lösung – Solution

public void ZipFileExtractToDirectory(string zipPath, string extractPath)
{
  using(System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zipPath))
  {
    foreach(ZipArchiveEntry entry in archive.Entries)
    {
      string completeFileName = Path.Combine(extractPath, entry.FullName);
      string directory = Path.GetDirectoryName(completeFileName);

      if (!Directory.Exists(directory))
      {
        Directory.CreateDirectory(directory);
      }
      entry.ExtractToFile(completeFileName, true);
    }
  }
}
Veröffentlicht unter C#, Programmierung | Hinterlasse einen Kommentar