Menu

AGS - Advanced Gtk+ Sequencer / Blog: Recent posts

Detected leaked API during debugging

The following snipped is from ags_audio.c namely in ags_audio_real_set_pads() and isn't fully populated. May be a macro will be used to do so.

~~~~~~
if(alloc_recycling){
channel->first_recycling =
channel->last_recycling = ags_recycling_new(audio->devout);

if(link_recycling){
recycling->next = channel->first_recycling;
recycling->next->prev = recycling;
recycling = recycling->next;
}

channel->first_recycling->channel = (GObject *) channel;... read more

Posted by Joël Krähemann 2014-03-14 Labels: audio channel resize pad

Hack to fix compile errors

The big refactoring is almost done. For now I'm fixing compile time errors. There's some work to invest.

Procedural solving was moved to an object called AgsRecyclingContainer.
It superseeded AgsGroupId and simplifies the API.

During refactoring some utility functions has been deleted because there is no more need for them.
This makes the code easier to maintain.

Overall I'm suggesting the changes.

Posted by Joël Krähemann 2014-03-11 Labels: AgsRecyclingContainer AgsGroupId

AgsRecallFactory

AgsRecallFactory is a factory pattern to ease setting up recalls.

Posted by Joël Krähemann 2014-03-05

deprecated AgsGroupId

Refactoring

AgsGroupId is deprecated in version 0.4.0 it will be replaced by the AgsRecyclingContainer structure. It's advantages are evident tighter and more intuitive API of AgsAudio, AgsChannel, AgsRecallID, AgsRecall and AgsRunOrder. As the last mentioned class indicates that especially the way you will be able to initializing or doing playback will be affected.

Posted by Joël Krähemann 2014-03-05

extending programm API to fit needs of reading XML files

The application API will be extended to fit the needs of reading XML files. Especially the need of getting and setting properties is considered.

Posted by Joël Krähemann 2013-12-14

fixing reading from/to XML file

WARNING current subversion tree hasn't a functional way of saving files or reading from it. Whereby most bugfixes were probably done you may experience incompatibelities while checking out from subversion.

The new DTD is more flexible and robust than the previous one. It was created in toughts of future releases. But definitive 0.4.0 release is still not released.

Regarding the application level of the Advanced Gtk+ Sequencer code may need more work to be done to fit the needs of the new XML API.

Posted by Joël Krähemann 2013-12-14

revision 1374 brings many improvements

Much old code I wrote for performance testing will disappear slowly. Whereas revision 1374 has a functional drum sequencer. As well many things of ticket is solved. Only caveat is changing link of an AgsChannel object.
Code of this revision or later especially AgsPanel and AgsDrum object seem to be ready for release 0.4.0.
The new object AgsPort is intended to be the way to communicate from the GUI layer to the audio layer. Additionally AgsDrum and related object are reimplemented using new layouting functions.
Optical feedback of pattern position takes actually to much computing time because every AgsDevoutClass::tic the GUI callback creates a new thread.

Posted by Joël Krähemann 2013-11-30

unique access to recall data with AgsPort class

AgsPort is a class representing data which needs to be read or written by the class AgsLineMember.

Benefits of AgsPort:

  • copy data from AgsLineMember to AgsPort and vice versa
  • thread safety guaranteed with safe read/write functions

Note there will be a certain overhead by copying and conversion functions of the representating data.

Posted by Joël Krähemann 2013-11-11

Extending ags_file.dtd and ags_file.xsd in view of release 0.4.0

Release 0.4.0 of Advanced Gtk+ Sequencer gets some extends in saving files. As possible it will be compatible with ags_file-0_3_12.dtd.

It is planned to move creation code of recalls into a line member factory. To support saving your changes within gui it is necessary to extend the file format. AgsLine will be some kind of XML based.

All GUI components inheriting from AgsMachine, AgsPad and AgsLine need to be updated.

Posted by Joël Krähemann 2013-10-02

Refactoring done

Refactoring done of AgsDevoutPlay. Following advantages will be provided:

  • playback
  • sequencer
  • notation

these features can be used simultanously.

Posted by Joël Krähemann 2013-10-02

needed to refactor group_id in AgsDevoutPlay

needed to refactor group_id in AgsDevoutPlay to an array due to possibility of playing audio while outputting by sequencer or notation.

Posted by Joël Krähemann 2013-10-01

Memory Leaks

I've just detected that ags is fully memory leaked.
Affected version:

  • 0.3.99
  • and some prior versions you don't want to use at all.

This is recognized as very critical but not so trivial to make it realy proper.

fixes:

  • Implemented ags_devout_play_free and therefore exists a memory leak.
    • Updated AgsAudio and AgsChannel to use ags_devout_play_free.
  • AgsDevoutPlay was therefore refactored.
    • Proper unref of AgsRecallAudioSignal and AgsRecallRecycling related objects while calling done of AgsRecallClass is implemented.
  • An AgsTask is required to unref AgsRecallChannelRun and AgsRecallAudioRun related to AgsChannel and AgsAudio. To call it use this task and unref it in a callback.
    • Did therefore ags_line_remove_recall_callback. Further leaks will only be closed for release 0.4.0
Posted by Joël Krähemann 2013-10-01

send an AgsThread to sleep

AgsThread *thread;

thread = ags_thread_new();
ags_thread_start(thread);

pthread_kill(&(thread->thread), AGS_THREAD_SUSPEND_SIG);

Posted by Joël Krähemann 2013-09-25

there are JIFFIES to adjust GUI behaviour

as told there JIFFIES to adjust GUI and ALSA behaviour.

Posted by Joël Krähemann 2013-09-24

revision 1124

Good throughput of audio subsystem ...
but the GUI suffers now.

Posted by Joël Krähemann 2013-09-24

timing issue - may be a bug

I believe that bad performance is tracing back to wrong frequency calculations within AgsGuiThread and AgsAudioLoop.

Next issue is verifying frequency calculations.

Posted by Joël Krähemann 2013-09-24

single threaded version of ags

Annoyed about CPUs with insufficient threads ...
That's why I decided to add support for single threaded CPUs.

May be it will run even on a 13 years aged single threaded notebook.

Posted by Joël Krähemann 2013-09-22

optical feedback

AgsMatrix and AgsDrum shows you optical feedback of the current playing beat.

Posted by Joël Krähemann 2013-09-21

fedora 19 rules ...

As I figured out that debian testing has some real difficulties with realtime scheduling and the pulseaudio resampling bug isn't solved, yet.

The problems prior mentioned doesn't accomplish for a updated fedora 19. Advanced Gtk+ Sequencer works even when pulseaudio is running.

I really love fedora.

Posted by Joël Krähemann 2013-09-21

Revision 1077

I just runs great now I should consider to fix the stop bug.

By the way I solved the greedy thread issue. That means a greedy AgsGuiThread won't hurt anymore.

Posted by Joël Krähemann 2013-09-15

atomic functions in GLib

GLib supports the following atomic functions on integers:

  • g_atomic_int_set
  • g_atomic_int_get
  • g_atomic_int_or
  • g_atomic_int_and
  • g_atomic_int_xor
  • g_atomic_int_inc
  • g_atomic_int_add
  • ...

which makes live much easier.

Posted by Joël Krähemann 2013-09-14

pthread_suspend and pthread_resume

How nice would it be to have these functions: pthread_suspend and pthread_resume.

Because Gtk+'s iteration function is really computing expensive while doing some interaction.

Posted by Joël Krähemann 2013-09-14

commenting revision 702

Revision 702 an experiment with new threading strategies ...
and the conditional locks weren't reliable at all.

Posted by Joël Krähemann 2013-09-06

Committed revision 1031.

The drum is functional again. But it is still quiet unstable.

Committed revision 1031.

Posted by Joël Krähemann 2013-09-05

Revision 702

As I felt dissapointed by getting no sound out of ags me just checked out revision 702 where there drum was more or less usable.

So I really believe that there's a problem with setting absolute buffer sizes with alsa resulting in a ugly hack as work-around.

But you shouldn't take everything for worse because you'll get error reporting from playing sounds. How ever this is your chance to know what's going wrong with ags

Posted by Joël Krähemann 2013-09-04
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.