| /**************************************************************************** |
| * apps/include/audioutils/mml_parser.h |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. The |
| * ASF licenses this file to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the |
| * License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| * |
| ****************************************************************************/ |
| |
| #ifndef __APPS_INCLUDE_AUDIOUTILS_MML_PARSER_MML_PARSER_H |
| #define __APPS_INCLUDE_AUDIOUTILS_MML_PARSER_MML_PARSER_H |
| |
| /**************************************************************************** |
| * Pre-processor Definitions |
| ****************************************************************************/ |
| |
| #define MML_TYPE_EOF (0) |
| #define MML_TYPE_NOTE (1) |
| #define MML_TYPE_REST (2) |
| #define MML_TYPE_TEMPO (3) |
| #define MML_TYPE_LENGTH (4) |
| #define MML_TYPE_OCTAVE (5) |
| #define MML_TYPE_TUPLETSTART (6) |
| #define MML_TYPE_TUPLETDONE (7) |
| #define MML_TYPE_VOLUME (8) |
| #define MML_TYPE_TONE (9) |
| #define MML_TYPE_CHORD (10) |
| |
| #define MML_TYPE_NOTE_ERROR (-MML_TYPE_NOTE) |
| #define MML_TYPE_REST_ERROR (-MML_TYPE_REST) |
| #define MML_TYPE_TEMPO_ERROR (-MML_TYPE_TEMPO) |
| #define MML_TYPE_LENGTH_ERROR (-MML_TYPE_LENGTH) |
| #define MML_TYPE_OCTAVE_ERROR (-MML_TYPE_OCTAVE) |
| #define MML_TYPE_VOLUME_ERROR (-MML_TYPE_VOLUME) |
| #define MML_TYPE_TUPLET_ERROR (-MML_TYPE_TUPLETSTART) |
| #define MML_TYPE_TONE_ERROR (-MML_TYPE_TONE) |
| #define MML_TYPE_CHORD_ERROR (-MML_TYPE_CHORD) |
| |
| #define MML_TYPE_ILLIGAL_COMPOSITION (-100) |
| #define MML_TYPE_ILLIGAL_TOOMANY_NOTES (-101) |
| #define MML_TYPE_ILLIGAL_TOOFEW_NOTES (-102) |
| #define MML_TYPE_ILLIGAL_DOUBLE_TUPLET (-103) |
| |
| #define MML_STATE_NORMAL (0) |
| #define MML_STATE_TUPLET (1) |
| |
| #define MAX_CHORD_NOTES (5) |
| |
| /**************************************************************************** |
| * Public Types |
| ****************************************************************************/ |
| |
| struct music_macro_lang_s |
| { |
| int cur_tempo; |
| int cur_octave; |
| int def_length; |
| int fs; |
| |
| int state; |
| int cur_tuplet; |
| int tuplet_notes; |
| int tuplet_length; |
| }; |
| |
| struct mml_result_s |
| { |
| int note_idx[MAX_CHORD_NOTES]; |
| int length; |
| int chord_notes; |
| }; |
| |
| /**************************************************************************** |
| * Public Function Prototypes |
| ****************************************************************************/ |
| |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| |
| int init_mml(FAR struct music_macro_lang_s *mml, |
| int fs, int tempo, int octave, int length); |
| int parse_mml(FAR struct music_macro_lang_s *mml, |
| FAR char **score, FAR struct mml_result_s *result); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __APPS_INCLUDE_AUDIOUTILS_MML_PARSER_MML_PARSER_H */ |