Here's an overview what I'm doing ... Thread A:
/* open file */ ipatch_file_identify_open(); ipatch_sf2_reader_new(); ipatch_sf2_reader_load(); ipatch_convert_object_to_type(); ipatch_container_get_children(); /* select preset */ ipatch_container_get_children(); ipatch_sf2_preset_get_name(); /* select instrument */ ipatch_sf2_preset_get_zones(); ipatch_sf2_zone_get_link_item(); /* read instrument names */ ipatch_sf2_preset_get_zones(); ipatch_sf2_zone_get_link_item(); /* read all samples related to preset and instrument */ ipatch_sf2_preset_get_zones(); ipatch_sf2_zone_get_link_item(); g_object_get(G_OBJECT(sample), "sample-size\0", frames, "loop-start\0", loop_start, "loop-end\0", loop_end, NULL); ipatch_sf2_find_sample(); ipatch_sample_read_transform(); Thread B: /* select preset */ ipatch_container_get_children(); ipatch_sf2_preset_get_name(); /* select instrument */ ipatch_sf2_preset_get_zones(); ipatch_sf2_zone_get_link_item(); /* read instrument names */ ipatch_sf2_preset_get_zones(); ipatch_sf2_zone_get_link_item(); /* read all samples related to preset and instrument */ ipatch_sf2_preset_get_zones(); ipatch_sf2_zone_get_link_item(); g_object_get(G_OBJECT(sample), "sample-size\0", frames, "loop-start\0", loop_start, "loop-end\0", loop_end, NULL); ipatch_sf2_find_sample(); ipatch_sample_read_transform(); Bests, Joël