void FormantGridEditor_init (FormantGridEditor me, const char32 *title, FormantGrid data) { Melder_assert (data != nullptr); Melder_assert (Thing_isa (data, classFormantGrid)); FunctionEditor_init (me, title, data); my ycursor = 0.382 * my p_formantFloor + 0.618 * my p_formantCeiling; my selectedFormant = 1; }
void FormantGridEditor_init (FormantGridEditor me, const wchar_t *title, FormantGrid data) { Melder_assert (data != NULL); Melder_assert (Thing_member (data, classFormantGrid)); FunctionEditor_init (me, title, data); my ycursor = 0.382 * my p_formantFloor + 0.618 * my p_formantCeiling; my selectedFormant = 1; }
PitchEditor PitchEditor_create (const wchar_t *title, Pitch pitch) { try { autoPitchEditor me = Thing_new (PitchEditor); FunctionEditor_init (me.peek(), title, pitch); return me.transfer(); } catch (MelderError) { Melder_throw ("Pitch window not created."); } }
autoSpectrogramEditor SpectrogramEditor_create (const char32 *title, Spectrogram data) { try { autoSpectrogramEditor me = Thing_new (SpectrogramEditor); FunctionEditor_init (me.peek(), title, data); my maximum = 10000.0; return me; } catch (MelderError) { Melder_throw (U"Spectrogram window not created."); } }
SpectrumEditor SpectrumEditor_create (const wchar_t *title, Spectrum data) { try { autoSpectrumEditor me = Thing_new (SpectrumEditor); FunctionEditor_init (me.peek(), title, data); my cursorHeight = -1000; updateRange (me.peek()); return me.transfer(); } catch (MelderError) { Melder_throw ("Spectrum window not created."); } }
void FormantGridEditor_init (FormantGridEditor me, GuiObject parent, const wchar *title, FormantGrid data) { Melder_assert (data != NULL); Melder_assert (Thing_member (data, classFormantGrid)); FunctionEditor_init (me, parent, title, data); my formantFloor = preferences.formantFloor; my formantCeiling = preferences.formantCeiling; my bandwidthFloor = preferences.bandwidthFloor; my bandwidthCeiling = preferences.bandwidthCeiling; my play = preferences.play; my source = preferences.source; my ycursor = 0.382 * my formantFloor + 0.618 * my formantCeiling; my selectedFormant = 1; }
void TimeSoundEditor_init (TimeSoundEditor me, const char32 *title, Function data, Sampled sound, bool ownSound) { my d_ownSound = ownSound; if (sound) { if (ownSound) { Melder_assert (Thing_isa (sound, classSound)); my d_sound.data = Data_copy ((Sound) sound).releaseToAmbiguousOwner(); // deep copy; ownership transferred Matrix_getWindowExtrema (my d_sound.data, 1, my d_sound.data -> nx, 1, my d_sound.data -> ny, & my d_sound.minimum, & my d_sound.maximum); } else if (Thing_isa (sound, classSound)) { my d_sound.data = (Sound) sound; // reference copy; ownership not transferred Matrix_getWindowExtrema (my d_sound.data, 1, my d_sound.data -> nx, 1, my d_sound.data -> ny, & my d_sound.minimum, & my d_sound.maximum); } else if (Thing_isa (sound, classLongSound)) { my d_longSound.data = (LongSound) sound; my d_sound.minimum = -1.0, my d_sound.maximum = 1.0; } else { Melder_fatal (U"Invalid sound class in TimeSoundEditor::init."); } } FunctionEditor_init (me, title, data); }