Saturday, November 9, 2013

MacBook keyboard in tracker view

To be efficient in the tracker you need to know the keyboard-shortcuts. Using a MacBook these are not so obvious as when using a PC - so here's what you need to know:

  • Deleting notes: with PC it's the DEL key, but for MacBook it's "fn"+BackSpace
  • Changing octave: PC function keys, MacBook "fn"+Function key
  • Moving notes/events upwards: Same as for PC - Shift+Backspace
  • Moving notes/events downwards: With PC it's the INSERT key, but any key combo's I've found for Mac doesn't seem to produce the INSERT key event. I'll look into this for the next Frinika version.
  • Page up/down: "fn"+up/down arrow keys
  • Undo/Redo: This you know from other programs - but instead of CTRL+Z/Y (PC) use CMD+Z/Y
  • Ctrl change - in a note field hold CTRL while typing the controller no (same for PC)


Saturday, January 19, 2013

Mac OSX adjustments

Just got myself a Macbook Air, after using Linux based laptops for the last 10 years. Not necessarily a better experience, but need to test software on OSX as well - and it's never been straight forward to virtualize OSX.
Anyway, I saw immediately that the attempts to use native Mac look'n'feel didn't work very well with Frinika, so I set it to the same as used on Windows and Linux. So Frinika doesn't look like a Mac app anymore, but works better with Mac now.
One should be aware of some differences between Java 6 (made by Apple) and Java 7 (Oracle) on Mac OSX. I've noticed that the JTable behaves badly with Java 7 - and this is only on Mac OSX. This affects the Tracker panel when you try navigating with the arrows keys. You'll see that it tries to edit the cell, while on all other Platforms with Java 7 or Apple's Java 6 the navigation works as expected. At the moment I don't see any other solution than Oracle fixing this bug in Java 7 for OSX.

UPDATE:
With the latest versions of Java 7 the JTable (table in the tracker panel) works much better. Only a few issues left (e.g. not able to select multiple cells and delete them) - but I'd say it's ok to use Java 7 also for OSX now. Eventually Java 7 will be a requirement for later versions of Frinika.

Monday, April 25, 2011

Programmable and reloadable soundbanks

The Gervill software synthesizer which is included in Frinika is capable of reading soundbanks from JAR files (Java archives). This means that you may write your soundbank in code. It might be convenient to be able to modify your soundbank while editing your music in Frinika - and the "reload soundbank" button lets you do so:

Friday, March 4, 2011

VST/VSTi support

The latest version of Frinika comes with a new MIDI Out device called "Frinika JVST Synth provider" - which uses JVSTHost (http://github.com/mhroth/jvsthost) to provide VST/VSTi support. Add this midi out device and select the .dll / .so of a VSTi file, or use the Audio Mixer (Toot) to use VST effects.

Friday, August 6, 2010

OpenJDK and PulseAudio

When using OpenJDK on Linux with PulseAudio a javasound audio device called "PulseAudio Mixer" shows up. Selecting this in Frinika gives very choppy and unusable audio for the time being. However if using the latest version of Ubuntu (and possibly other Linux'es), this provides an ALSA device called "default" that is really a PulseAudio device. By selecting the "default" javasound audio device Frinika will use PulseAudio (through ALSA), and you'll be able to play audio from other programs and Frinika simultaneously.

Tuesday, August 3, 2010

Demonstration videos on YouTube

These are really older demonstration videos - but I uploaded them to youtube so that they're more easily accessible:



Behind the scenes - how sound is produced in Frinika

Frinika uses the Toot audio framework for bringing all the audio together and sending it to the audio ouput. Toot provides effect plugins and advanced mixing features, not to mention a versatile model for developing audio applications.

Here's a quick example of how to get Toot "up and sounding":



JavaSoundAudioServer as = new JavaSoundAudioServer();
final AudioProcess output = as.openAudioOutput("plughw:0,0", "Line Out");
final AudioBuffer buffer = as.createAudioBuffer("test");
as.setClient(new AudioClient() {

double wavePos = 0;

public void work(int nFrames) {
float[] channel0 = buffer.getChannel(0);
for(int n=0;n<nFrames;n++)
{
double sample = Math.sin(wavePos);
wavePos+=Math.PI*2*440.0/44100.0;
channel0[n] = (float)sample;
}

output.processAudio(buffer);
}

public void setEnabled(boolean enabled) {
}
});
as.start();


Note that the audio output "plughw:0,0" is Linux specific and should be replaced with the name of the Javasound audio output of your platform.