Amplitube 2 VST not loaded

Yet again a VST did not load in my Ableton Live DAW. This time it is the Amplitube 2 VST by IK Multimedia. It did work if I launched Ableton with administrator priviledge but we al know that we shouldn’t do that if it is not necessary and running as administrator to load a VST sure is not very useful. I launched the excellent process monitor and filtered for stuff coming from the ableton process that did not succeed and I found out that Amplitube 2 is writing to the file:

C:Windowsmsocreg32.dat

A very naste way from IK Multimedia to put that file in the Windows folder as normal users cannot create or modify that file. The file is created by Amplitube so it must be some sort of timer file for the product evaluation.

To fix this without running as administrator and with UAC enabled do the following:

  1. Launch your DAW by right clicking its icon and select “Run as administrator”.
  2. Rescan your VST folder for new plugins. Amplitube gets loaded and the above mentioned file is created. You should be able to use the VST.
  3. Quit your DAW.
  4. Go to c:Windows with file explorer.
  5. Find the file “msocreg32.dat”, right click it and select properties from the context menu.
  6. Go to the security tab
  7. Click “Edit”. A UAC box will appear to ask you for permission and allow it.
  8. Select the “Users” group.
  9. Set a checkmark next to “Modify” in the lower list.
  10. Click twice on “OK” to close both dialogs.
  11. Launch your DAW as you normally would.

Now you are running as a normal user with a function Amplitube VST. This happens to more VST’s like for example the Native Instruments collection required quite a lot of folders to be writable by the user. Because the files are located in the Program Files folder this is not allowed. Just do the above mentioned modification on *only* the “c:Program Files (x86)Native Instruments” folder and no more popups to select another folder to write to.

The tool called “process monitor” by Sysinternals really helps to identify such permission problems so download it if you have similar problems with other VST’s in your favorite DAW.

 

 

NHibernate bag did not delete records when IList.Clear() was called

I was having a problem where NHibernate did not automatically delete childs if a collection was emptied by calling IList.Clear() like in the following code example:

var s = GetSession();
var parent = s.Get<Parent>(1);
parent.Childs.Clear();

What did work ofcourse was code like the following before executing clear which marked the records for deletion and NHibernate executed the correct delete statements when the session was closed or flushed.

foreach(var c in parent.Childs) s.Delete(c);

I searched the internet for quite a while and playing around with the cascade and inverse attributes in the .hbm files as I knew it had be an error in the configuration.

<bag name="Topics" cascade="all" inverse="true">
	<key column="Webcast_Id"/>
	<one-to-many class="AddonIndex"/>
</bag>

After searching for quite some time I found that the problem was cascade=”all” which should have been cascade=”all-delete-orphan” and when I read that on a forum I had a very bigy WTF moment. I *really* assumed that all would do the deletion of the orphans as that is what the keyword implies, that it does *all* while in reality it does all except deletion of orphans.

So I would like to suggest the (N)Hibernate team to change the names of the cascade values or just ditch the all value.

Windows 7 midi

My midi hardware it working nice in my DAW home studio but today I noticed that I do not have the ability to change the default midi out device in Windows 7. After googling around it seems that this was also the case in Windows Vista. But luckily there are options to configure the default out device!

The first that I found was the Windows Vista MIDI Mapper control panel and minutes later the Vista MIDI fix. The control panel application fixed my problem but only lists hardware midi stuff like my MIDI USB keyboards and the hardware midi output of my Creative card as the Vista MIDI fix application lists more midi out options but I haven’ not tested those yet.

Both applications run without any problems here on my Windows 7 RC x64 installation.

OpenSUSE 11.1 VirtualBox additions

I tried to install the virtualbox machine additions in my OpenSUSE guest but had some problems. Mouse integration worked but display resizing did not. It turned out that I just didn’t read the output from the additions package well.

Remove all "Modes" lines from the "Screen" section and any Option "PreferredMode" lines from "Monitor" sections.

Did that by removing the Option from the Monitor section and all Modes lines from the subsections of the Screen section and it now working as it should with display resizing. The only thing that does not work is clipboard sharing.

Cool finalizer assert trick

I just saw a cool trick done in a finalizer of a class. When a class implements IDisposable then its creator needs to call Dispose when it is finishen. Lots of developers forget this and that usually results in system resources that are locked until the garbage collector thinks its time to do its work.

The code construction I saw was:

~MyCoolClass()
{
    System.Diagnostics.Debug.Assert(false);
    Dispose(false);
}   

I have never thought of doing this but it makes sense to just add a assert to a finalizer to get notified that you didn’t dispose the object. The finalizer will never be called if it would because of the GC.SuppressFinalize(this); statement that should be done when calling IDisposable.Dispose on the object.

It could be that you are getting this in a service and then this doesn’t make any sense but then you could just log an error instead.

DAW: Multiple ASIO devices

I have bought the Samson C03U USB microphone and after plugging it into an available USB port it worked immediately. I then wanted to use it from any of my sequencers (Cubase AI and FLStudio) but only to find out that neither can use multiple ASIO devices simultaneously. Not that difficult to understand as probably only one ASIO device can be active at a time and for that you get low latency audio out/in in return. I also saw an ASIO DirectX Full Duplex driver. Probably a ASIO host that delegates to direct sound. Had not seen that before so I selected it and there I could select the audio devices that I wanted to make available and it worked! I could use my Creative X-FI Extreme Gamer for audio out and my Samson C03U for audio in. The only big problem is that I had lots of latency. After tweaking it I found out that I could lower the buffersize to 512 samples  instead of the default 2048 which decreased the latency but it is still not very enjoyable to listen live to the incoming audio.

I remembered that I had used ASIO4ALL a long time ago when I didn’t had ASIO drivers for my onboard sound. ASIO4ALL is similar to the Directsound ASIO provider in configuration but in ASIO4ALL I could lower the buffer sizes to 64 samples which reduced the latency to acceptable levels to listen to the incoming audio. A few clicks occur in the out so I increased that to 96 samples.

I think that I have lower latency using the ASIO4ALL drivers instead of the drivers from Creative.

No CNAME on a domain record only on subdomains

We were having some mail problems. This is not always the case but we now found the culprit. The problem was that our domain record *had* a CNAME record referring to the A record of the webserver. Some mail servers will use the CNAME record instead of the MX record when the smtp server needs to be resolved.

mywebserver.mydomain.com A 127.0.0.1

mydomain.com CNAME mywebserver.mydomain.com

www.mydomain.com CNAME mywebserver.mydomain.com

This will result in lots of mail servers not being able to deliver the mail. So today’s (DNS) lessons learned are:

  1. Do not set a CNAME record on your domain
  2. Do not use a CNAME record for a catch all (*.mydomain.com) as this too suffers from the same problems.

You can still use CNAME records for your ‘service’ subdomains that refer to actual hosts (A and AAAA records). This is still the most efficient way to handle your ip addresses for your actual machines especially when you also support ipv6.

The most frustrating thing here is that the behavior differs on platforms and applications so it took a while before this was discovered.

My computer hardware history

I was just chatting with a collegue about my hardware history and thought it was time for an update. My hardware list is as follows:

  • MSX2 HB-F9P
  • Amiga 500 1MB + Action Replay III
  • Amiga CDTV 1MB + DIP switch KS1.3
  • 486DX33 8MB + SB16 + GUS
  • 486DX266 32MB + SB16 + GUS
  • Pentium 200MHz MMX @ 225MHz 128MB + GUS IW + PowerVR + Voodoo2
  • Pentium 4 1GHz 512MB
  • Pentium D 3,4GHz 2GB + ATI HD2600XT + NVidia 9800GT

The first computer that I saw as a kid was an Atari 2600 which friends of mine had and that was pretty amazing. A few years later I got my own computer, the MSX2. Later the father of the friends that had the Atari 2600 bought an Amiga 2000 and I really was flabbergasted when I saw it in action. I was already in love with the MSX2 but it extended to the Amiga and soon I was an owner of an Amiga 500! I somewhere sold my Amiga hardware which I needed to do to buy a PC but now I regret that dicision :-).

The MSX died somewhere around the year 2000 when heavy rain filled the basement where it was stored but a friend wanted to get rid of his MSX2 hardware. Two Philips NMS 8280 but only one keyboard. I still have these devices and sometimes boot them up with either one of the few cartridges that survived the basement pool experiment.

Somewhere a long I also owned a NES but I was and probably never will be a console person.

I learned programming on the MSX in BASIC and a little bit hacking with disassemblers. On the Amiga I started with AMOS, REXX and later on SAS C and 68000 assembly. I then made the transition to the PC where I was first programming in Turbo Pascal combined with x86 assembler and later on Watcom C/C++. I then started programming for a living and programmed MSVC/VB6 in Visual Studio 6 in Windows with COM(+) and later on in .net 1.0.

I was always interested in other development platforms and operating systems. I experimented a lot with all kinds of languages and Linux distributions, OS/2 and BeOS but nowadays I primarily program in c# because I am a professional .net developer for a living but I still experiment in my free time although I’m not such a geek anymore as I was 10 years ago.

How-to enable large file uploads in IIS7

We have migrated from IIS6 to II7 and today we had some problems with large file uploads which we didn’t have with ASP.NET on IIS6. The web application was already configured to allow large file uploads:

<system.web>
    <httpRuntime maxRequestLength=”153600″ executionTimeout=”900″ />
</system.web>

So WTF is happening? Well IIS7 request filtering was kicking in and we needed to configure it and this can be done too in the web.config:

<system.webServer>
    <security>
        <requestFiltering>
                <requestLimits maxAllowedContentLength=”157286400″ />
             </requestFiltering>
    </security>
</system.webServer>

But this still didn’t work for us because the default permission in IIS7 is that applications are not allowed to alter this setting. Configuring the setting with appcmd on an elevated command prompt made it all work again:

appcmd set config "wms/wmsdev" -section:requestFiltering -requestLimits.maxAllowedContentLength:157286400

Be aware though that maxRequestLength is specified in kilobytes and maxAllowedContentLength in bytes.

Howto create a certificate request with subjectAltNames with OpenSSL on Windows

Sometimes you host multiple websites on one machine on one ip address. Because the way SSL works you can have only one certificate on one ip address + port combination and then you have a problem. One solution is to host all websites on one host(name), the other is creating an SSL certificate that contains multiple hostnames. Problem is that you cannot create such a certificate from within IIS and this is where this article is for.

Download and install OpenSSL for Windows at Shining Light

  1. Create a private key for your certificate: openssl genrsa 2048 >multicert.key
  2. Create a configuration file with your certificate data
# -------------- BEGIN custom multicert.cnf -----
HOME = .
oid_section = new_oids
[ new_oids ]
[ req ]
default_days = 730
distinguished_name = req_distinguished_name
encrypt_key = no
string_mask = nombstr
req_extensions = v3_req # Extensions to add to certificate request
[ req_distinguished_name ]
commonName              = Your nice common name
commonName_default      = www.mydomain.com
commonName_max = 64
[ v3_req ]
subjectAltName=DNS:ftp.mydomain.com,DNS:blog.mydomain.com,DNS:*.mydomain.com
# -------------- END custom openssl.cnf -----

 

  1. Create a certificate request: openssl req -new -key multicert.key -out multicert.csr -config multicert.cfg
  2. Submit your certificate request to your CA (I often use www.cacert.org)
  3. Save the CA certificate request response to a file multicert.cer
  4. Create a PFX file that contains both the public and private key: openssl pkcs12 -export -out multicert.pfx -in multicert.cer -inkey multicert.key

Note that I used the same domain name for all entries and only changed the subdomains but I could just as easily used different domainnames as long as you are allowed to use those domainnames according to how you are registered at the CA that you are going to use.

And voila there you have your PFX file that can be loaded by IIS and be used for several websites that match the included hostnames on one ip adress + port combination.

Configure hostheaders for SSL

You still need to add the correct hostheader on each website on the commandline as this cannot be done from within the management console.

IIS6

cscript.exe adsutil.vbs set /w3svc/{site identifier}/AccessSSL TRUE

Where {site identifier} is the id/number  of the website which you can see when you click the “Websites” node in the IIS6 management console. Click here for detailed instructions for IIS6.

IIS7

appcmd set site /site.name:"MySite V2"/+bindings.[protocol='https',bindingInformation='*:443:sitev2.mysite.com']

Instructions for IIS7

  • Recent Posts
  • Recent Comments
  • Archives
  • Categories
  • Meta