Question: This code returns an error, but it works if I remove "arg" from line 4. What can I do to make n an argument and not get an error? 

```
(
SynthDef("test",
    {
        arg n=8;

        f=Mix.fill(n, {
            arg index;
            var freq, amp;
            freq=440*((7/6)**index);
            //freq.postln;
            amp=(1-(index / n)) / (n*(n+1) / (2*n));
            SinOsc.ar(freq,0,0.2*amp)
        });
        //f=SinOsc.ar(440,0,0.2);
        Out.ar(0,f)
    }).add;
)

```

Answer: 
OK, the solution is simple (thanks @GordThompson for the help).

While the transaction was being committed, I was not closing the EntityManager. So under some scenarios the transaction was being wound back.

Note to self: Always close the EntityManager.
Note that you may have to close and re-open MS Access to see data persisted. UCanAccess uses [Jackcess](http://jackcess.sourceforge.net/) to update the Access database, and Jackcess directly modifies the database file without using the Access Database Engine. So, MS Access may not "see" the changes until it has been closed and re-opened.

If a commit has been called on UCanAccess it always flushes and persists data in the Access database. It is definitely not possible that flushing has been postponed, at least as far as the UCanAccess layer is concerned. Perhaps a review of the higher-level code may reveal a possible explanation for the behaviour you are experiencing.