bool MusicDecoder::open(const string_t& filename){ reset(); bool r=this->_open(filename); if (r) { _filename=filename; while (string_t_find_success(_filename.find('/'))) _filename.erase(0,_filename.find('/')+1); while (string_t_find_success(_filename.find('\\'))) _filename.erase(0,_filename.find('\\')+1); //detect author and name from filename string_t partist; string_t pname; #if defined(SFML_STRING_HPP) if (string_t_find_success(_filename.find('-'))) { partist=_filename; pname=_filename; pname.erase(0,pname.find('-')+1); partist.erase(partist.find('-'), string_t_size(partist)); remove_file_extension(pname); //Remove useless spaces and '_' remove_useless_spaces_before(pname); remove_useless_spaces_after(pname); //Detect track number from filename remove_track_number(partist); remove_useless_spaces_after(partist); } else { //Identifying filename as title pname=_filename; remove_file_extension(pname); remove_track_number(pname); remove_useless_spaces_after(pname); } #endif if (string_t_empty(_name)) setName(pname); if (string_t_empty(_artist)) setAuthor(partist); } else _infosreset(); return r; }
void convert_datacube(char *in,char *out) { E3D_file src,dst; SPECTRUM sig, noise, *rms, *signal; SPAXEL *spaxels; E3Dspec_desc *ptdesc; int i, specId, nbspax, npix=-1; double start = -1, end; char extname[lg_name+1], tablename[lg_name+1]; if (open_E3D_file(&src,in,"I")<0) { print_error("Cannot open input file %s",in); exit_session(ERR_OPEN); } else { if (has_common_bounds(&src)) { get_common_param(&src,&npix,&start,&end); } if (create_E3D_file(&dst,out,npix,start,src.step,src.data_type,src.ident,src.cunit) < 0) { close_E3D_file(&src); print_error("Cannot create output file %s",out); exit_session(ERR_CREAT); } else { signal = NULL; rms = NULL; ptdesc = NULL; if (src.signal != NULL) { signal = &sig; ptdesc = src.signal; } if (src.noise != NULL) { rms = &noise; ptdesc = src.noise; } else { if (src.signal == NULL) { close_E3D_file(&src); print_error("Inconsistent input file (no spectra inside)"); exit_session(ERR_BAD_PARAM); } } reset_print_progress(); for (i=0;i<src.nbspec;i++) { print_progress("Convert datacube: ", (int)((100*i)/src.nbspec),1); specId = ptdesc[i].specId; get_E3D_spec(&src,signal,rms,specId); set_quality(rms); put_E3D_spec(&dst,signal,rms,specId); nbspax = get_E3D_spaxels(&src,specId,&spaxels); put_E3D_spaxels(&dst,specId,nbspax,spaxels); } if (src.data_format == TIGER_FORMAT) { /* set groups */ set_tiger_group(&src); } put_E3D_groups(&dst,src.ngroups,src.groups); print_progress("Convert datacube: ", (int)100,1); CP_non_std_desc(&src,&dst); close_E3D_file(&src); close_E3D_file(&dst); printf("\n"); if (src.data_format == TIGER_FORMAT) { /* save table in special extension */ get_science_table_name(in,tablename); append_tbl_extension(out, OutputIO.basic_io); sprintf(extname,"%s[%s]",out,E3D_TIGER_EXT); convert_table(tablename,extname); } if (dst.data_format == TIGER_FORMAT) { /* save science extension as table */ strcpy(tablename,out); remove_file_extension(tablename); sprintf(extname,"%s[%s]",in,E3D_TIGER_EXT); convert_table(extname,tablename); } } } }