Heute den Vandal Virtuellen Gitarren/Bass Amp geliefert bekommen und bin sehr sehr zufrieden bisher!

Reagiert wirklich unglaublich dynamisch auf die Art wie man spielt und verschiedene Gitarren und Tonabnehmerpositionen werden sehr schön wiedergegeben! Die Einstellungsmöglichkeiten sind für mich ideal.. alles auf einen Blick und ich bekomme schnell hin was ich mir an Sound so vorstelle.

Allerdings habe ich das Problem, dass ich es in einem Mono-Track auch nur mit Mono Output in Logic Studio 9 einfügen kann. Damit meine ich, dass Vandal nur Mono Audio ausgibt. Nun will ich aber gerne die Stereo Mikrofonierung nutzen, das regeln der links/rechts Balance klappt aber nicht. Es wird nur “links” als Mono auf dem Stereo Bus wiedergegeben.

Auf einem Stereo-Track eingefügt klappt es zwar besser, dann nehme ich aber das (mono) Eingangs-Signal der Gitarre in Stereo auf (nur ein Kanal genutzt) und das passt mir gar nicht…

Nach ein wenig hin und her, habe ich folgenden Workaround herausgefunden:

Stereo Audio Spur erstellen… Vandal (Stereo) rein stecken.. Kanal danach einfach auf Mono stellen.. fertig!

Vandal hat dann Stereo Ausgabe (z.B. das Mikrofon panning klappt) … und die Aufnahmespur selber ist Mono.

Bei mir allerdings noch nicht, denn ich habe das Eingangsignal auf Kanal 2 der externen Soundkarte.

Seltsamerweise konnte ich nach der oben beschriebenen Prozedur in Logic nicht einfach das Signal 1 auf Signal 2 umstellen (also den zweiten Eingang der externen Soundkarte auswählen).

Aber auch dafür hab ich einen Workaround gefunden:

Den Eingang einmal auf “Kein Input” umstellen… danach kann man dann auch direkt “Signal 2″ als Input anwählen.

Ich habe direkt mal an Magix geschrieben.. ob da nicht ein “mono->stereo” Modus für das Plugin fehlt. Meine anderen Virtuellen Amps können das alle ohne so eine Trickserei.

Mal schauen was die Antworten… jedenfalls in ich nun wieder glücklich, dass es überhaupt geht!


Tags: , , , , , , ,

What I want to show here is pretty basic or at least should be for every long term programmer but it may be inspiring for people which have less experience (and esp. not from the old times where you had to code the code.. lol)

I explain the technique I use for speeding up calculations and application load times with an example from a current project I am working on:

There is a calculation which needs to be done multiple times for every “turn” in my game which is pretty expensive but has one parameter and limited values to them. The calculation is pretty expensive because it needs bitwise operations which are not supported in corona and have to be simulated. The results are static and not changing ever!

Think of this as function “erg(x)” which returns a table (a list of results) for x.

To speed this up one can use “x” as a value into a table which is precalculated and holds all possible results from the calculation.

So my first optimization was to introduce a table which holds all the results with “x” being the hash for this.

This table is generated at the start of the application and needs to be calculated only once. Cool! This speeds up the application but has the drawback of a long delay at program start.

To speed this up you may come to the idea to write this table into a data file and load it into a table when the application is started. This is of course a possibility but it can be done much better!

The table you wanna create from loading your data is basically a Lua table :) which can be expressed by Lua code. And it is “static” and not changing!

Having this in mind the solution is easy: Just create Lua code which creates the table and require this code into your project!

I show you some code as example because it may be tedious to get the code generation work in a nice way with formatting and with the right syntax.

function Foo:genErgCacheLua()
	local fh=io.open("ergcache.lua","w")
	-- we use "module(...)" no need for the package.seeall!
	fh:write("module(...)\n\n")
	fh:write("ergcache = {\n")
	local first=true
	local k,v,n
	for k,v in pairs(self.ergscache) do
		if not first then
			fh:write(",\n")
		else
			first=false
		end
		fh:write("\t['"..k.."'] = { ")
		for n=1, #v do
			fh:write(v[n])
			if n ~= #v then
				fh:write(", ")
			end
		end
		fh:write(" }")
	end
	fh:write("\t}\n")
	io.close(fh)
end

function Foo:loadErgCache()
	-- following looks strange but works :)
	self.ergcache = require "ergcache".ergcache
end

Of course there are assumptions I make for my very own “ergcache”, name and classes and so on. But the concept should be clear now!

I hope this will help some of you to get more speed and inspires you to use more complex techniques in your programs to speed up things which could not be done otherwise!


Tags: , , ,

Ich weiss nicht wie es euch geht… aber ich muss für meinen Job öfters mal CSV oder XLS Dateien mit Scriptsprachen erstellen.

Um diese zu testen habe ich bisher immer die „Maus“ in die Hand genommen und die Dateien manuell in „Numbers“ (aus dem iWork Paket) geöffnet. Das wurde mir heute zu langwierig, deshalb habe ich geschaut wie man Numbers leicht aus der Shell nutzen kann. Das Resultat ist sehr einfach, aber vielleicht spare ich dem ein oder anderen das selber rumprobieren :)

Ich nun meine „~/.profile“ Datei um folgendes Alias erweitert:

alias "numbers"="/Applications/iWork\ \'09/Numbers.app/Contents/MacOS/Numbers 2>/tmp/numbers-errors.log"

Der Aufruf ist dann so simple wie ein:

> numbers test.csv

Die Redirection von stderr ist notwendig weil Numbers ansonsten bei mir einige Warnings ausgibt, die mir ansonsten die Shell vollsabbern.

oderwat am Juni 1st, 2010

Manchmal geht mir PHP auf den Geist… gerade Fehlersuche beendet und wieder mal einen Effekte gefunden, der mir auf Anhieb nicht einleuchtet:

<?php
error_reporting(E_ALL | E_STRICT);
//
$test=array(1,2,3); print("'".$test[6]."'\n");
// gibt warning (arrayindex) + leerstring
//
$test=false; print("'".$test[6]."'\n");
// leerstring, kein warning
//
$test=0; print("'".$test[6]."'\n");
// leerstring, kein warning
//
$test=‚test‘; print("'".$test[6]."'\n");
// gibt warnung (stringoffset) + leerstring
?>

Wieso bekomme ich für den Index-Zugriff auf „false“ oder dem Integer-Wert keinerlei Warnung ?


Seit einiger Zeit bin ich ja nun sehr zufriedener Apple Mac OS X Nutzer. Heute hatte ich das erste Mal seit langem das Gefühl wieder an einem Windows PC zu sitzen :(

Ich wollte ein Software-Instrumente in Logic Studio 9.1.1 nutzen und anstelle des zügigen „klick“ und da ist es… dauerte es. Es rödelte auf der Festplatte herum und war nach Stunden noch nicht fertig! Dies passierte aber nicht bei allen Instrumenten.

Ein Beispiel für so ein Instrument war bei mir: „10 Orchestral -> 08 Pipe Organ -> Romantic Organ“

Lange habe ich nach einem Fehler gesucht! Im Netz habe ich so einfach nichts dazu gefunden was weiter geholfen hätte.

Allerdings fiel mir ein Beitrag auf: Dort hiess es, dass es daran liegen kann, das der Spotlight Index defekt ist, wenn Instrumente ihre Samples (gar) nicht finden.

Daraufhin habe ich Spotlight neu aufbauen lassen. Dies brachte aber leider auch nichts.

Als alter Windows Nutzer habe ich dann Logic Studio neu installiert. Wobei ich mir ziemlich dämlich vorgekommen bin. Diese Art von „Götteranrufung“ ist auf dem Mac selten notwendig bzw. erfolgreich. Es brachte auch nichts… Aber war schön all die DVDs (9 Stück sind es) noch einmal wieder zu sehen :)

Während ich dann mit den Command-Line Tools wie mdutil, mdls sowie mdfind „spielte“, fiel mir auf, dass mdfind bei einer Suche nicht zurück in die Shell kommt. Mir war auch vorher schon einmal aufgefallen, dass eine Spotlight Suche nicht „endete“ sondern immer weiter auf der Platte „rumgerödelt“ wurde – ohne neue Ergebnisse zu finden.

Nun, wenn ich ein Instrument lud, welches nicht geht, hatte ich ein ähnliches Phänomen: Er rödelte, kam aber nicht zurück.

Eine kurze Suche im Netz zeigte mir, dass mdfind aber durchaus in einigen Script verwendet wird und bei anderen Leuten wohl „endete“. Schnell versuchte ich mdfind im Terminal auf dem MacBook meiner Freundin und siehe da, mdfind war immer sofort wieder zurück.

Warum also kehrte mdfind bei mir nicht zurück?

Die Lösung ist äusserst simpel: Ich habe meine BootCamp Partition über „mdutil -i off /Volumes/BOOTCAMP“ für das indizieren gesperrt. Jedoch war dieses Volumen nicht in der Privacy Liste bei den Spotlight Einstellungen!

Die Ausgabe von „mdutil -s -a“ sagte mir auch nur, dass nicht indiziert wird und nicht wie bei anderen gesperrten, dass auch nicht gesucht wird. Und genau das macht er dann: Suchen! Und meine BootCamp Partition ist recht umfangreich!

Ich weiss ehrlich nicht einmal ob diese Partition ohne NTFS Treiber normalerweise sichtbar ist ?!

Nachdem ich die BootCamp Partition in Spotlight nun auch unter „Privatsphäre“ gelistet hatte kam mdfind sofort zurück!

Beim Test mit Logic Studio 9 waren dann auch alle Instrumente in Windeseile geladen. Das Problem ist gelöst!

Es scheint mir, dass dort manche Samples „optional“ sind oder als unbenutzter Verweis vorliegen. Wenn das Sample dann nicht gefunden wird, gibt es keinen Fehler. Da mein Spotlight aber endlos lange danach gesucht hat dieses „doch noch“ aufzutreiben, gab es den beschriebenen Effekt!

Vielleicht hilft es dem einen oder anderen Nutzer weiter diesen kleine Bericht zu lesen! Ich bin jetzt was Musik machen!


Achtung! Dieser Artikel ist in Englisch geschrieben. Das ist kein Fehler, sondern soll so sein!

Hi there… I just wanna share some experience I had the last days!

Well… I feel like I am “stuck” since about 20 years at my guitar playing level and never decided to really do something about it. I took some personal lessons last year around this time. But I felt like being at the wrong teacher and to waste my time. Not that I think he is general bad. But I felt he was very unorganized and like to talk more than to help me getting better with techniques. Instead of that I got a lot of new insight into music theory. But that did not help my 2 hand coordination, speed or phrasing.

About a week ago I run into the site of Tom Hess (www.tomhess.net) and my very first impression was: Omg… what a big promotional effort to sell some lessons you can get anywhere even for free on the net.

Next thing was that I watched some movies and read infos. I was pretty unsure about the whole thing. Can that work? Who the “beep” is that guy and so on… But then I saw this video where he says: Well if you search for another shallow lessons guy.. you are wrong with me. In fact you are wrong if you don’t like me or what I say :)

After some short time I registered with that site… and got my very first lesson not very long after the billing went through. First impression: Well.. dunno.. nice lesson but are they really what I need at this time? May it just be automatic send out? … still thinking that I started listening to more materials (he has very cool mp3 courses and is a very great motivational speaker!)

Then I started with one of the practice examples: 2 Hand Coordination.. Some really easy G Major scale. But with directional picking. After my “misunderstanding” that I have to learn strict alternate picking even on string changes… that was surprising. I felt like: Omg.. practiced that alternate stuff just to find that directional is much easier and faster and being thought by some experienced teacher.

I did not even checked out the other material. Just started with that simple exercise. Some (most?) of you will laugh when I tell you that I could hardly play those 2 Bars of total 36 notes (16th tripplets in 3/4) with about 40 BPM. In the fastest sound example which comes with that lesson it is played at 130 bpm. So I was demotivated a bit right in the beginning. But I still started to practice it…

At the same time I got toms speech and mini courses about the one hand is slower problem, about how to practice for real, about motivation, how you need to define goals to strife for. About how many mental things may create more problems than physical stuff.

Well it is now 7 days later and I am at 58 BPM of playing that scale clean and it feels like I can do more every day easily. I had some drawback because I was advancing to fast and I caught me with not playing really “clean” (more some hammer’ons with picking at the wrong time). So I was going back to very slow. Isolated the problem where I had sloppy play (my smallest two fingers.. and only on the highest two strings while playing upwards.. suckers). All of this is of course the reason for practicing 2 hand coordination.

That said I remembered what I did write in my “check in” survey I had to fill out then I registered for his lessons. And suddenly it strikes my mind: Those lessons I got are in fact related to what I wrote are my goals and my current problems. They are for sure in the way on the road to my final goals! That may sound easy. But he made me confident about that. Which makes it “worth” practicing it! Thats different to having 5 books and 100 of video lessons on the net which all “may help you”.

Maybe somebody want to try it out… You could tell him that I (Hans Raaf) referred you (it has benefits to find new people). But you don’t need to. It is just that I think now that it is a great opportunity to be part of that! It is not cheap! Actually it may be the most expensive lessons you can “buy online” (up to nearly $3000 a year for weekly lessons!).

P.S.: This is not meant as advertisement. I am fairly new with that type of lessons and may stop it at some time for whatever reasons. But then.. I think someone who did not hear about it may be happy for that information! There is so much crap on the net… and it is easy to loose orientation and goals.

- Hans

oderwat am September 14th, 2009

OMG! In der Beta fand ich es so albern und kindisch… Aber mal Hand aufs Herz… ist das nicht Teil der ideale Beschreibung für ein spassiges Spiel? Nunja… jetzt bin ich ein Superheld in Lvl 21 und rette die Welt auf die einzig richtige Art! Mit zwei Pistolen und einer Spur des Todes hinter, vor, neben, über und unter mir… :-P

A fierce warrior up for any challenge, you will never back down from a fight. You are an honorable combatant, but that does not mean you are above deriving pleasure from the defeat of your adversaries.

Take the quiz!

Tags: ,

Seit Freitag letzte Woche arbeite ich nun ernsthaft mit dem “Windows 7″ RC (7100) und bin begeistert… nachdem ich Vista übersprungen und sogar Downgrades von Rechnern gemacht habe.

Gut gefallen mir u.a. die “Bibliotheken” in denen ich nun einige meiner Software Projekte abgelegt habe. Leider hat Microsoft den Klartextfilter nur für “.pl” (Pearl) “.sql” und “.js” automatisch aktiviert.

Auf der Suche wie ich auch z.B. für “.py” und “.php” Dateien den Wortindex erstellen lassen kann bin ich auf eine sehr einfach Lösung gestoßen:

1. “Systemsteuerung -> Indizierungsoptionen” aufrufen
2. Dort bei “Erweitert / Dateitypen” die entsprechenden auswählen und auf “Eigenschaften und Dateiinhalt indizieren” umschalten.

Also keine Raketentechnik notwendig :)

Danach hat er bei mir den gesamten Index neu erstellt… und nun klappt auch die Suche nach Worten in diesen Dateien. Allerdings macht mein Eclipse das trotzdem noch besser.. :)

Außerdem möchte man vielleicht noch “.diz” oder “.nfo” Dateien und ähnliches indizieren lassen… alles machbar.

Tags: , , , , ,

So… da ich heute mit laufender Nase irgendwie Lust auf Coktails hatte direkt noch ein Liedchen hinterher geträllert. Allerdings ist das nun ein Instrumental, denn erstens ist der Text noch nicht fertig und zweitens will ich das nicht nur gröhlen :)

oderwat am Juli 9th, 2009

Da hab ich doch mitten im Sommer am Ende meines Urlaubs so ne blöde Erkältung aus Amsterdam wieder nach Deutschland mitgenommen. Ürbrigens war ich mit der Maus bei “Jeff Waynes – War of the Worlds” und es war großartig.

Aber dann 4 Tage Halsschmerzen am Stück… Irgendwann reichte es mir dann…

Ich hatte mir gerade die Software “RiffWorks Standard” gekauft – als Scratch-Pad und wegen des Instant Drummers.

Dann wurde kurzerhand der “Halsschmerzen Blues” als erstes Projekt im Schnelllauf aufgezeichnet…

Das Ergebnis (ggf. warten bis der Play Button erscheint) ist ein nicht ganz ernstgemeinter Blues :)

P.S.: Um der Nachwelt die denkwürdige “Halt die Schnauze Hund” Textstelle zu erklären: An einer Stelle bellte mein Hund… was man allerdings nicht raushören kann :)

Tags: , , , ,