Chapter 10. Advanced Gtk+ Sequencer's fx engine
Prev |  | Next

# Chapter 10. Advanced Gtk+ Sequencer's fx engine

There a well know set of recalls described here. Additionally you might want to take advantage of recalls interfacing plugin APIs like LADSPA, DSSI or LV2. You can instantiate them simply with `GList* ags_fx_factory_create(AgsAudio*, AgsRecallContainer*, AgsRecallContainer*, gchar*, gchar *, gchar *, guint, guint, guint, guint, gint, guint, guint)`

Example 10.1. Using ags_fx_factory_create()

    #include <glib.h>
    #include <glib-object.h>

    #include <ags/libags.h>
    #include <ags/libags-audio.h>

    AgsAudio *audio;
    AgsRecallContainer *play_container, *recall_container;

    AgsApplicationContext *application_context;

    GObject *current_soundcard;

    GList *start_soundcard;
    GList *start_recall;

    guint audio_channels;
    guint output_pads, input_pads;

    ags_audio_application_context_new();

    /* get application context and soundcard */
    application_context = ags_application_context_get_instance();

    start_soundcard = ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context));

    current_soundcard = start_soundcard->data;

    /* creat audio and resize channels */
    audio_channels = 2;

    output_pads = 1;
    input_pads = 88;

    audio = ags_audio_new(current_soundcard);
    ags_audio_set_audio_channels(audio,
                                 audio_channels);
    ags_audio_set_pads(audio,
                       AGS_TYPE_OUTPUT,
                       output_pads);
    ags_audio_set_pads(audio,
                       AGS_TYPE_INPUT,
                       input_pads);

    /* add ags-fx-notation */
    play_container = ags_recall_container_new();
    recall_container = ags_recall_container_new();

    start_recall = ags_fx_factory_create(audio,
    				     play_container, recall_container,
    				     "ags-fx-notation",
    				     NULL,
    				     NULL,
    				     0, 0,
    				     0, 0,
    				     0,
    				     (AGS_FX_FACTORY_ADD | AGS_FX_FACTORY_INPUT),
    				     0);

    g_list_free_full(start_recall,
    		 (GDestroyNotify) g_object_unref);

    /* add ags-fx-volume */
    play_container = ags_recall_container_new();
    recall_container = ags_recall_container_new();

    start_recall = ags_fx_factory_create(audio,
    				     play_container, recall_container,
    				     "ags-fx-volume",
    				     NULL,
    				     NULL,
    				     0, audio_channels,
    				     0, input_pads,
    				     0,
    				     (AGS_FX_FACTORY_ADD | AGS_FX_FACTORY_INPUT),
    				     0);

    g_list_free_full(start_recall,
    		 (GDestroyNotify) g_object_unref);

    g_list_free_full(start_soundcard,
    		 (GDestroyNotify) g_object_unref);

`ags-fx-buffer`

  Buffer audio data, produces new destination as on source occurs AgsRecycling::add_audio_signal().

`ags-fx-playback`

  Play or capture audio data and store it in wave objects.

`ags-fx-volume`

  Adjust volume of audio data.

`ags-fx-peak`

  Calculate peak of audio data.

`ags-fx-eq10`

  Adjust 10 band equalizer.

`ags-fx-analyse`

  Get frequency hints using FFTW3.

`ags-fx-envelope`

  Apply envelope data per piano roll note or pattern note.

`ags-fx-pattern`

  Play audio data based on boolean patterns.

`ags-fx-notation`

  Play, capture and feed audio data based on notation.

`ags-fx-ladspa`

  Interface LADSPA plugins.

`ags-fx-dssi`

  Interface DSSI plugins.

`ags-fx-lv2`

  Interface LV2 plugins.

`ags-fx-vst3`

  Interface VST3 plugins - requires libags-vst.so to be available.

Prev |  | Next
A closer look at effects | Home | Chapter 11. Thread-safe audio ports