Advanced Gtk+ Sequencer

Developer's Book

Joël Krähemann

Copyright (C) Joël Krähemann.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".


Dedication

This book is dedicated to my friend.

Table of Contents

Foreword
1. The application context
Implementations and their interfaces
The main loop property
The config property
The file property
The application mutex
Program start and termination
Abstract data connection
Common interfaces
2. XML Input/Output
Writing XML files
Reading XML files
3. Multi-/Super-threaded tree
The main loop interface
Threads in general
Pulling threads of thread pool
Worker-threads to do tic-less parallelism
Asynchronously destroy objects
Launching tasks
Async message delivery
4. The soundcard and sequencer interface
Gathering PCM information of soundcard
Obtain audio buffer
Read from MIDI device
5. AgsAudio a container of AgsChannel
AgsNotation and AgsNote
AgsAutomation and AgsAcceleration
AgsWave and AgsBuffer
AgsRecallID and AgsRecyclingContext
Dealing with recalls
Get port of recall
Open audio files
Audio container
Audio file
6. Your tree linked with AgsChannel
The pattern
Linking overview
Limitations
Hands-On
7. The recycling tree
Add and remove audio signal
8. Your audio data in AgsAudioSignal
9. Effects
Play/recall context
Hands-On instantiating an effect
AgsRecallContainer
AgsRecallAudio context
AgsRecallChannel context
AgsRecallAudioRun context
AgsRecallChannelRun context
The basic lifecycle of an effect
A closer look at effects
10. Advanced Gtk+ Sequencer's fx engine
11. Thread-safe audio ports
Get and set values
12. Putting all together
A. GNU Free Documentation License
B. Related projects

List of Tables

6.1. AGS network layer table

List of Examples

1.1. Thread application context
1.2. Audio application context
1.3. Get config value
1.4. The application context :file property
2.1. Writing XML
2.2. Reading XML
3.1. Calculating tic delay
3.2. Starting threads
3.3. Pulling threads of thread-pool
4.1. PCM information from AgsSoundcard
4.2. Get AgsSoundcard buffer
4.3. Get AgsSequencer buffer
5.1. Using AgsAudio
5.2. Using AgsNotation Clipboard
5.3. Concat AgsWave
5.4. Modify recall port
6.1. Adding AgsPattern
6.2. Prerequisites
6.3. Thread-Unsafe way
6.4. Multithread-Safe way
7.1. AgsRecycling and AgsAudioSignal
9.1. Creating AgsRecallContainer
9.2. Creating AgsEchoAudio
9.3. Creating AgsEchoChannel
9.4. Creating AgsEchoAudioRun
9.5. Creating AgsEchoChannelRun
10.1. Using ags_fx_factory_create()
12.1. Simple pattern sequencer with master playback