void MyFrame::OnNewWindow(wxCommandEvent& event) {//============================================= SpectSeq *spectseq; wxString leaf; wxString pathload; int width, height; if(event.GetId() == MENU_SPECTRUM) pathload = path_spectload; else pathload = path_spectload2; wxString filename = wxFileSelector(_T("Read spectrum or praat data"),pathload, _T(""),_T(""),_T("*"),wxOPEN); if(filename.IsEmpty()) { return; } // create SpectSeq and import data spectseq = new SpectSeq; if(spectseq == NULL) { wxLogError(_T("Failed to create SpectSeq")); return; } wxFileInputStream stream(filename); if(stream.Ok() == FALSE) { wxLogError(_T("Failed to open '%s'"),filename.c_str()); return; } wxFileName path = wxFileName(filename); leaf = path.GetName(); setlocale(LC_NUMERIC,"C"); // read numbers in the form 1.23456 spectseq->Load(stream); spectseq->name = leaf; spectseq->MakePitchenv(spectseq->pitchenv,0,spectseq->numframes-1); if(event.GetId() == MENU_SPECTRUM) path_spectload = path.GetPath(); else path_spectload2 = path.GetPath(); GetClientSize(&width, &height); SpectDisplay *canvas = new SpectDisplay(screenpages, wxDefaultPosition, wxSize(width, height), spectseq); screenpages->AddPage(canvas, leaf, true); canvas->savepath = filename; currentcanvas = canvas; }
void SpectDisplay::PlayChild(int number, PitchEnvelope pitchenv) {//========================================================= SpectSeq *seq; if(number >= canvaslistix) return; if((seq = canvaslist[number]->spectseq) == NULL) return; ReadDialogValues(); seq->MakeWave(0,seq->numframes-1,pitchenv); } // end of PlayChild
void MyFrame::OnNewWindow(wxCommandEvent& event) {//============================================= SpectSeq *spectseq; wxString leaf; wxString pathload; int width, height; if(event.GetId() == MENU_SPECTRUM) pathload = path_spectload; else pathload = path_spectload2; wxString filename = wxFileSelector(_T("Read spectrum or praat data"),pathload, _T(""),_T(""),_T("*"),wxOPEN); if(filename.IsEmpty()) { return; } // create SpectSeq and import data spectseq = new SpectSeq; if(spectseq == NULL) { wxLogError(_T("Failed to create SpectSeq")); return; } wxFileInputStream stream(filename); if(stream.Ok() == FALSE) { wxLogError(_T("Failed to open '%s'"),filename.c_str()); return; } wxFileName path = wxFileName(filename); leaf = path.GetName(); setlocale(LC_NUMERIC,"C"); // read numbers in the form 1.23456 spectseq->Load(stream); spectseq->name = leaf; spectseq->MakePitchenv(spectseq->pitchenv,0,spectseq->numframes-1); if(event.GetId() == MENU_SPECTRUM) path_spectload = path.GetPath(); else path_spectload2 = path.GetPath(); // Make another frame, containing a canvas GetClientSize(&width, &height); MyChild *subframe = new MyChild(myframe, _T("Spectrum"), wxPoint(10, 0), wxSize(500, height), wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE); subframe->SetTitle(leaf); // Give it a status line subframe->CreateStatusBar(); subframe->GetClientSize(&width, &height); SpectDisplay *canvas = new SpectDisplay(subframe, wxPoint(0, 0), wxSize(width, height), spectseq); canvas->savepath = filename; currentcanvas = canvas; // Associate the menu bar with the frame subframe->SetMenuBar(MakeMenu(1,translator->dictionary_name)); subframe->canvas = canvas; subframe->Show(TRUE); }
static int VowelChartDir(wxDC *dc, wxBitmap *bitmap) {//================================================= int ix; int nf; int count = 0; SpectSeq *spectseq; SpectFrame *frame1; SpectFrame *frame2=NULL; wxFileName filename; wxString dir = wxDirSelector(_T("Directory of vowel files"),path_phsource); if(dir.IsEmpty()) return(0); wxString path = wxFindFirstFile(dir+_T("/*"),wxFILE); while (!path.empty()) { if((spectseq = new SpectSeq) == NULL) break; filename = wxFileName(path); wxFileInputStream stream(path); if(stream.Ok() == FALSE) { path = wxFindNextFile(); delete spectseq; continue; } spectseq->Load(stream); nf = 0; frame1 = NULL; if(spectseq->numframes > 0) { frame2 = spectseq->frames[0]; } for(ix=0; ix<spectseq->numframes; ix++) { if(spectseq->frames[ix]->keyframe) { nf++; frame2 = spectseq->frames[ix]; if(frame2->markers & FRFLAG_VOWEL_CENTRE) frame1 = frame2; } } if((nf >= 3) && (frame1 != NULL)) { DrawVowel(dc,wxString(filename.GetName()), frame1->peaks[1].pkfreq, frame1->peaks[2].pkfreq, frame1->peaks[3].pkfreq, frame2->peaks[1].pkfreq, frame2->peaks[2].pkfreq); count++; } delete spectseq; path = wxFindNextFile(); } filename.SetPath(dir); filename.SetFullName(_T("vowelchart.png")); bitmap->SaveFile(filename.GetFullPath(),wxBITMAP_TYPE_PNG); return(count); }