Alle Beiträge von Björn Karpenstein

Diplom Informatiker, Programmierer, Musikbegeisterter

Experiment mit YouTube-Video: Street Fighter 2 Rock Guitar Cover

Intention

Mir schwirrte seit geraumer Zeit die Titelmelodie von Street Fighter 2 im Kopf herum. Das lag vermutlich daran, dass das Super Nintendo bei uns immer im Hintergrund lief und die Melodie sich nach einiger Zeit wiederholte.

Ich dachte mir, dass sich das Intro mit Sicherheit als Rockversion noch besser anhört. Das Gedudel von dem SNES Soundchip, nachdem das CAPCOM-Logo erscheint, hörte sich predistiniert für ein Gitarrenriff an.

Umsetzung

Zunächst nahm ich mit Cubase, ezDrummer und meinem Line 6 Toneport die Gitarren- und Bassspuren auf. Nachdem ich es abgemixt hatte, lag das Stück eine ganze Zeit lang ungeachtet bei Soundcloud rum.

Nachdem mir ein Bekannter (Florian Breidenbach) Nintendo Videos zusendete, die mit der Gitarre gecovert werden, und dazu den Kommentar: „Warum ist dir sowas nicht eingefallen?“ gegen den Kopf warf, schickte ich Ihm zunächst den Link zu dem Soundcloud Projekt. Reaktionslos verblieb unser Chat.

Da ich nun noch 2 Tage Elternzeit habe, wollte ich mal die Resonanz auf ein YouTube Video testen. Ich nahm also das MP3 und benutzte meine Webcam mit Adobe Premiere um mich beim Spielen des Stücks zu filmen.

Ergebnis

Beobachtung der Besucherentwicklung

Ob die Resonanz auf ein YouTube Video größer ist, als auf ein Soundcloud-Projekt, wird sich zeigen. Ich habe das Video lediglich in einen WhatsApp Gruppenchat und 2 Freunden gepostet. Das Posting blieb relativ resonanzlos, daher vermute ich auch nicht, dass es weitergeschickt wird.

Ob ein solches Video ohne Promotion und ohne Bekanntheit des YouTube-Kanals heute noch Anklang finden kann ist eine spannende Beobachtung :-). Ich gebe zu, dass ich die Existenz von YouTube-Communities komplett verschlafen habe. Es gibt sehr viele professionell wirkende Videos von Amateurfilmern und Gruppen auf YouTube, die einer Fernsehproduktion wenig nachstehen.
Zu meiner Zeit, in der ich mit Videoschnitt experimentierte, wurden die Videos in MJPEG über eine Interupt-konfigurierte Video-Karte mit Antennen-Eingang mühseelig in den PC gespielt. Das Rendern einzelner Videosequenzen dauerte Stunden und es gab kein YouTube. Dementsprechend schwerer fällt mir die Bedienung moderner Videoschnittprogramme, die für die späte Generation Y zur Routine gehören.

Zielgruppe

Nun ist es so, dass es bereits etliche Videos von professionellen Gitarristen gibt, in denen alte Nintendo-Melodien gecovert werden. Wenn man deren Anzahl an Aufrufen, Likes und Abonennten genauer unter die Lupe nimmt, stellt man fest, dass hier eine eigene Nischen-Community innerhalb von YouTube existiert die sich auf RSpielemelodiencover auf der Rockgitarre spezialisiert hat.

Wer das für unsinnig hält, sollte sich einmal das „Let’s Play“-Genre auf YouTube genauer ansehen. Hierbei handelt es sich vorwiegend um abgefilmte Spiele, die mit Kommentaren des Spielers versehen sind. Auf Wikipedia gibt es hierzu einen lesenswerten Artikel. Mein erster Gedanke war: „Wer will jemanden beim Spielen zuschauen und dessen Kommentare hören?“. Doch es gibt die Zielgruppe :-).

Fazit

An dieser Stelle werde ich nach einer Beobachtungsphase mein Fazit posten.

Android statistics and facts

Problem

During the development of android applications the developer has to decide which API Level his applications requires. The API Level is clearly associated with a Android Codename (i.e. Ice Cream Sandwich: 14 and 15 (MR1), Jelly Bean 16 to 17 (MR1), Kit Kat 18…).

A trustable source that shows the frequency of usage for Android Versions can give the information about which versions should be considered retrospective.

Approach

A link collection of  popular sources will be provided in this article. The developer has to customize the androidmanifest.xml in his application to define the minimum API Level.

Solution

Which android versions have to be considered for the development?

http://developer.android.com/about/dashboards/index.html

Where can i get an actual complete list of API Levels and Android Names?

http://developer.android.com/guide/appendix/api-levels.html

 

 

Android: JOYN deaktvieren / ausschalten / ausstellen ohne zu rooten oder Custom ROM zu installieren

Problem

Die deutschen Netzanbieter, insbesondere die Telekom, haben sich darauf geeinigt einen neuen Dienst JOYN als Alternative zu WhatsApp anzubieten. Das Ziel ist es zu verhindern, dass die Kunden alle zu kostenlosen Anbietern wie WhatsApp, Tremor etc wechseln. Seitdem die Handys internetfähig sind können die Provider lediglich über das Anbieten von Paketdatenverbindungen Geld für Nachrichten verdienen. Früher war es möglich pro SMS abzurechnen, heute lediglich je übertragenem Datenvolumen (insofern keine Flatrate vorhanden ist).

Nun ist es leider so, dass dieser JOYN Dienst penetrant nervt, das Handy vibrieren lässt und einem ständig durch Notifications/Statusmeldungen in den Glauben bringt, man hätte gerade eine SMS empfangen. Dies passiert z.B. wenn ein WLAN gefunden wurde. Es passiert auch nachts wenn die WLAN Verbindung mal zusammenbricht. Dies kann fürchterlich nerven

Prämissen

Zunächst sollte die neuste Android Version des Anbieters installiert sein.

Ansatz

In den Menüs der neuen Android Version (hier im Beispiel ein Galaxy S4 mit D1 Vertrag) befindet sich ein Eintrag um JOYN zu deaktivieren.

Lösung für Galaxy S4 mit Telekom D1 Branding

  1. Bild 1: Menü -> Einstellungen (links unten der Button unterhalb des Display)
  2. Bild 2: Verbindungen -> Weitere Einstellungen
  3. Bild 3: JOYN-Dienste
  4. Bild 4: Haken bei JOYN Dienste rausnehmen

wpid-screenshot_2014-04-20-12-51-59.png

wpid-screenshot_2014-04-20-12-52-15.png

wpid-screenshot_2014-04-20-12-52-21.png

wpid-screenshot_2014-04-20-12-52-29.png

Fazit

Das Problem von Custom ROMs die speziell von Mobilfunkanbietern angefertigt und ausgeliefert werden ist nicht nur, das man später in den Besitz der neusten Android Version kommt, sondern auch die nicht-vorhandene Community, die mit leidenschaft Updates und Funktionen in integriert und idealistisch fehlerfreie Software in kurzer Zeit bereitstellt.

IBM Doors: Performance tests with DXL

Problem

Sometimes it is necesseray to benchmark DXL scripts for their execution time.

Approach

There is a basic function called getTickCount_() that gives the current milliseconds. When subtracting the time before and after the execution we can get the execution time that was needed for the script.

Solution

int measureStart = (getTickCount_());

sleep_(1240);

int measureEnd = (getTickCount_());

print "The doing took " (measureEnd - measureStart) " seconds";

C#+LDAP: Email an Lotus Notes Gruppen per SMTP schicken

Problem

In einem Unternehmen sollen Lotus Notes Gruppen aufgelöst werden um den Mitgliedern der LN Gruppe Mails über einen normalen SMTP Server zu schicken

Ansatz

Lotus Notes besitzt i.d.R. einen LDAP Server, der die Notes Gruppen aufschlüsselt. Auf LDAP kann über C# zugegriffen werden.

Lösung

public ArrayList resolvingNotesGroups(String mailGroup)
{
 ArrayList alMailAddys = new ArrayList();

 DirectoryEntry DirEntry = new DirectoryEntry();
 {
  DirEntry.Path = "LDAP://notesldap.it.company.com";
  DirEntry.AuthenticationType = AuthenticationTypes.ServerBind;
 }
   
 DirectorySearcher search = new DirectorySearcher(DirEntry);
 DirectoryEntry de = new DirectoryEntry();

 Dictionary<String, String> dict = new Dictionary<string, string>();

 // Tweak this to refine your search
 search.Filter = "(cn=" + mailGroup + ")";// BBME_AC_Rubi
 // I limit my results while I tweak          
 search.SearchScope = SearchScope.Subtree;          

 try
 {
  SearchResultCollection src = search.FindAll();
        
  if (src.Count != 0)
  {
   foreach (SearchResult result in search.FindAll())
   {
    // Display each of the values for the property 
    // identified by the property name.
    foreach (object property in result.Properties["member"])
    {
     // CN Name ermitteln
     dict.Add(property.ToString(), "");
    }
   }
    
  }
  else
  {
   throw new Exception("GroupResolving - No Entry found for: " + search.Filter);
  }

  int indexStart;
  int indexEnd;


  foreach (KeyValuePair<string, string> entry in dict)
  {
   search.Dispose();
   search = new DirectorySearcher(DirEntry);

   indexStart = entry.Key.IndexOf("=");
   indexEnd = entry.Key.IndexOf(",");

   // Entry key only CN 
   search.Filter = "(cn=" + entry.Key.Substring(indexStart + 1, indexEnd - indexStart - 1) + ")";
   search.SearchScope = SearchScope.Subtree;

   foreach (SearchResult result in search.FindAll())
   {
    if (result != null)
    {

     de = result.GetDirectoryEntry();
     alMailAddys.Add(de.Properties["mail"].Value.ToString());
    }
    else
    {
     throw new Exception("Peolple Resolving - No Entry found for: " + search.Filter);
    }
   }
  }

 }
 catch (Exception ex)
 {
  throw new Exception("Following error occured: " + ex.Message.ToString());
 }
 finally
 {
  search.Dispose();
  DirEntry.Close();
 }

 return alMailAddys;
}}

JIRA 6.x SQL Statement: Get actual value / last change for custom field

Problem

The actual value of a custom field from an Issue should be selected

Solution

select CAST(pk.PROJECT_KEY as VARCHAR(10))+'-'+CAST(issue.issuenum AS varchar(10)), cfo.customvalue FROM 
CustomFieldValue cfv 
INNER JOIN CustomField CF on CF.Id = CFV.CustomField
INNER JOIN CustomFieldOption CFO on CF.Id  = CFO.CustomField
INNER JOIN jiraissue issue on issue.id = cfv.issue 
INNER JOIN project_key pk on PROJECT_ID=issue.PROJECT
WHERE cf.CFName = 'Classification' 
And CAST(CFO.Id AS VARCHAR(10)) =CFV.StringValue;

Cubase VST Instrumente: Kostenlose Alternative zu ezDrummer?

Problemstellung

Kostenlose Schlagzeugplugins die authentische Sounds für echtes Schlagzeug liefern sind sehr rar.

Vormerkung

Für echte Schlagzeugsounds stellt der Mikrofonhersteller Sennheiser ein kostenloses VST Instrument zur Verfügung das sich vielversprechend anhört.

Ich denke ein Test lohnt sich…
http://de-de.sennheiser.com/drummica

Hier ein Tutorial von Delamar:

Tutorial: Rock Drums programmieren

JIRA 6.1. and above: Database field PKEY is empty

Problem

In prior versions than JIRA 6.1., the table „jiraissue“ in the database has stored the Issue IDs and has made it possible to make a selection on Issue IDs. Unfortunalety this field is empty now. It is not possible to select values because of the Issue ID.

Approach

Analysing the table shows a new column name „issuenum“ which can be used in combination with the colum „project“ to concatenate the Issue Key.

Solution

SELECT project_key.PROJECT_KEY+‘-‚+CAST(issuenum AS VARCHAR(5)) as pkey, jiraissue.*
FROM jiraissue
INNER JOIN project_key
ON jiraissue.PROJECT=project_key.PROJECT_ID
WHERE project_key.PROJECT_KEY+‘-‚+CAST(issuenum AS VARCHAR(5))=’VVTT-65‘