This section presents the Java  software application which controls and monitors the OpenLab Signal Generator. Furthermore, the features and functions of this measurement tool, as well as the benefits for students, are discussed. The main window of the signal generator with its arbitrary signal generation function is illustrated in figure 1.
The application is able to output standard waveforms such as sinusoidal, rectangular, saw tooth shaped, and triangular signals. Furthermore, students are able to generate arbitrary waveforms using the built in tool. This feature is especially useful during courses dedicated to audio signal processing and analog/digital signal processing.
The signal generator supports two different methods in order to output arbitrary signals. The ”Definition Through Points and Interpolation” method enables the user to define a signal graphically by placing key-points on the graph. After pressing the ”Generate Waveform” Button, the software calculates the missing steps between the key-points, using interpolation, and displays the final waveform. This approach is best suited for beginner students, due to the easy-to-understand procedure. The ”Definition in Frequency Domain” method requires the user to specify the sine components that should occur in the output signal. Through the main menu of the user application, the user can open the input mask for the frequency components. In order to ensure correctness of the user input, the data is validated by the application. Students are able to choose the FFT Bin, the agnitude, and the angle of the harmonics. Based on the user input a wavetable with dedicated FFT Bins is stored and an Fast Fourier Transformation (iFFT) is performed on this set of values. For the iFFT the Cooley-Tukey algorithm  is used within the application. After the iFFT, the real components are extracted from the complex output and are scaled to the range of 1, in order to fit the allowed ranged of the wavetable values. The calculated data is displayed within the preview window of the application and can be applied to one of the signal generator outputs.
This signal generator provides two channels which can be controlled separately. Students are able to vary the output frequency for each channel using the corresponding knob in the Frequency section. The same applies for adjusting the required signal amplitude and for adding any desired offset value. In order to enable further development of the OpenLab Signal Generator, the user application is designed to support additional signal generator hardware. This means that the output logic is encapsulated and can be handled in a generic way. Each signal generator solution has to inherit from a specific class and implement all the functions to be compatible with the user application. It can be seen as a high level device driver that communicates with the device.
As a result, students are able to design and built their own hardware, which can be added to the Java software using a common interface. In the current state of development, the OpenLab Signal Generator supports generic PC soundcard devices as signal source. To ensure platform independence, the Java software utilizes the open-source PortAudio  library. Even without the external signal processing hardware, described in V, students are able to perform basic measurement tasks. Therefore, in order to demonstrate signal characteristics, only a PC running the OpenLab software is required.
ORACLE: Java [Online] https://docs.oracle.com/javase/9
Cooley, J. W. and J. Turkey: An algorithm for the machine calculation of complex Fourier series, Mathematics of Computation, 1965
Benicina, Ross; Burk, Phil: PortAudio Portable Real-Time Audio Library [Online] https://www.portaudio.com [PortAudio Portable Real-Time Audio Library]