Как Вы представляете музыку в структуре данных?

Добавить стиль display:block из Description содержимого вкладок при загрузке

<!DOCTYPE html>
<html>
   <head>
      <title></title>
      <style type="text/css">
         .sight_img{
         height: 80%;
         width: 100%;
         }
         .tab {
         overflow: hidden;
         border: 1px solid #ccc;
         background-color: #f1f1f1;
         }
         /* Style the buttons inside the tab */
         .tab button {
         background-color: inherit;
         float: left;
         border: none;
         outline: none;
         cursor: pointer;
         padding: 14px 16px;
         transition: 0.3s;
         font-size: 17px;
         }
         /* Change background color of buttons on hover */
         .tab button:hover {
         background-color: #ddd;
         }
         /* Create an active/current tablink class */
         .tab button.active {
         background-color: #ccc;
         display:block;
         }
         /* Style the tab content */
         .tabcontent {
         display: none;
         padding: 6px 12px;
         -webkit-animation: fadeEffect 1s;
         animation: fadeEffect 1s;
         }
         /* Fade in tabs */
         @-webkit-keyframes fadeEffect {
         from {opacity: 0;}
         to {opacity: 1;}
         }
         @keyframes fadeEffect {
         from {opacity: 0;}
         to {opacity: 1;}
         }
      </style>
   </head>
   <body onload="loadFunction()">
      <div class="tab">
         <button class="tablinks btn active" onclick="openCity(event, 'Description')">Description</button>
         <button class="tablinks" onclick="openCity(event, 'Avalability')">Avalability</button>
         <button class="tablinks" onclick="openCity(event, 'Itinerary')">Itinerary</button>
         <button class="tablinks" onclick="openCity(event, 'Policy')">Policy</button>
      </div>
      <!-- // content-tabs-i // -->
      <div id="Description" class="tabcontent">
         <h3>Description</h3>
      </div>
      <div id="Avalability" class="tabcontent">
         <h3>Avalability</h3>
      </div>
      <div id="Itinerary" class="tabcontent">
         <h3>Itinerary</h3>
      </div>
      <div id="Policy" class="tabcontent">
         <h3>Policy</h3>
      </div>
   </body>
</html>
<script>
   function loadFunction(){
     document.getElementById('Description').style.display = "block";
   }
   function openCity(evt, cityName) {
     var i, tabcontent, tablinks;
     tabcontent = document.getElementsByClassName("tabcontent");
     for (i = 0; i < tabcontent.length; i++) {
       tabcontent[i].style.display = "none";
     }
     tablinks = document.getElementsByClassName("tablinks");
     for (i = 0; i < tablinks.length; i++) {
       tablinks[i].className = tablinks[i].className.replace(" active", "");
     }
     document.getElementById(cityName).style.display = "block";
     evt.currentTarget.className += " active";
   }
</script>

10
задан Matthieu Brucher 28 December 2018 в 10:50
поделиться

5 ответов

Файлы MIDI были бы обычным способом сделать это. MIDI является стандартным форматом для того, чтобы хранить данные о музыкальных нотах, включая запуск и время окончания, отметьте объем, какой инструмент это играется на, и различные специальные характеристики; можно найти много предзаписанных библиотек (включая некоторый открытый исходный код) для чтения и записи файлов и представления данных в них с точки зрения массивов или объектов, хотя они обычно не делают этого при наличии объекта для каждого примечания, которое составило бы в целом большую память наверху.

Инструменты, определенные в MIDI, являются просто числами от 1 до 128, которые имеют символьные имена, как скрипка или труба, но сам MIDI ничего не говорит о том, на что должны на самом деле походить инструменты. Это - задание синтезатора, который берет высокоуровневые данные MIDI преобразования оно в звук. В принципе, да, можно создать любой звук путем накладывания синусоидальных волн, но это не работает, что хорошо на практике, потому что это становится в вычислительном отношении интенсивным, после того как Вы добираетесь до того, чтобы играть несколько треков параллельно; также, простой Fourier спектр (относительная интенсивность синусоидальных волн) является просто не соответствующим, когда Вы пытаетесь воспроизвести реальный звук инструмента и выразительность человека, играющего его. (Я записал простой синтезатор, чтобы сделать просто, что, таким образом, я знаю трудно, это может быть продукт достойный звук) существует большое исследование, сделанное в науке о синтезе и в более общем плане DSP (обработка цифровых сигналов), таким образом, необходимо, конечно, смочь найти, что много книг и веб-страниц читает об этом, если Вы хотели бы.

Кроме того, это может только быть мимоходом связано с тем, что вопрос, но Вы могли бы интересоваться аудио языком программирования под названием ChucK. Это было разработано людьми на перекрестке программирования и музыки, и можно, вероятно, получить хорошую идею текущего состояния синтеза звука путем проигрывания вокруг с ним.

5
ответ дан 3 December 2019 в 19:36
поделиться

Многие люди, делающие новые общие Западные музыкальные проекты нотации, используют MusicXML в качестве начальной точки. Это обеспечивает полное представление музыкальной нотации, что Вы можете подмножество для удовлетворения потребностей. Существует теперь определение схемы XSD что проекты как использование ProxyMusic для создания объектных моделей MusicXML. ProxyMusic создает их в Java, но необходимо смочь сделать что-то похожее с другими данными XML обязательные инструменты на других языках.

Как один клиент MusicXML выразился:

"Очень важное преимущество всей Вашей тяжелой работы на MusicXML, что касается меня - то, что я использую его в качестве ясной, структурированной и очень ‘реальной практической’ спецификации того, что музыка то, чтобы к разработке и реализации внутренние структуры данных моего приложения".

Существует намного больше доступной информации - XSDs и ДАТЫ, файлы примера, учебное руководство, список поддерживаемых приложений, список публикаций, и более - в

http://www.makemusic.com/musicxml

MIDI не является очень хорошей моделью для простой партитуры в стандартной нотации. MIDI испытывает недостаток во многих фундаментальных понятиях музыкальной нотации. Это было разработано, чтобы быть форматом производительности, не форматом нотации.

Это верно, что музыкальная нотация не является иерархической. Так как XML является иерархическим, использование MusicXML соединило стартстопные элементы для представления неиерархической информации. Собственная структура данных может представить вещи более непосредственно, который является одной причиной, что MusicXML является просто начальной точкой для структуры данных.

Для более прямого способа представить музыкальную нотацию, которая получает ее одновременную горизонтальную и вертикальную структуру, посмотрите на Нудный формат, который использует больше модели электронной таблицы/решетки. Нудный особенно используется в аналитических приложениях музыковедения и музыки, где ее структура данных работает особенно хорошо.

7
ответ дан 3 December 2019 в 19:36
поделиться

Музыка в структуре данных, стандартной нотации...

Кажется, что Вы интересовались бы LilyPond.

Большинство вещей о музыкальной нотации является почти чисто механическим (существуют правила и инструкции даже для сложных, нетривиальных частей нотации), и LilyPond делает красивое задание заботы обо всех тех механических аспектах. То, что оставляют, является входными файлами, которые просты записать в любом текстовом редакторе. В дополнение к PDFs LilyPond может также произвести файлы Midi.

Если бы Вы чувствовали себя настолько склонными, то Вы могли бы генерировать текстовые файлы algorythimically с программой и назвать LilyPond для преобразования его в нотацию и файл midi для Вас.

Я сомневаюсь, что Вы могли найти более полный и краткий способ выразить музыку, чем входной файл для LilyPond.

Поймите, что музыка и музыкальная нотация не являются иерархическими и не могут быть смоделированы (хорошо) строгим соблюдением иерархических взглядов. Считайте это для получения информации о гумусе о том предмете.

Развлекайтесь!

3
ответ дан 3 December 2019 в 19:36
поделиться

Хм, забавная проблема.

На самом деле я испытал бы желание превратить его в Шаблон "команда" наряду с Составным объектом. Это - вид переворачивания с ног на голову нормального подхода OO, поскольку Вы в некотором смысле делаете глаголы моделируемых объектов вместо существительных. Это пошло бы как это:

Примечание является классом с одним методом, play(), and a ctor takingдлинаandтон'.

Вам нужен Инструмент, который определяет поведение синтезатора: тембр, нападение, и так далее.

У Вас затем был бы Счет, который имеет TimeSignature и является Составным шаблоном, содержащим Меры; Меры содержат Примечания.

На самом деле проигрывание его означает интерпретировать некоторые другие вещи, как Повторения и Кода, которая является другими Контейнерами. Для проигрывания его Вы интерпретируете иерархическую структуру Составного объекта, вставляя примечание в очередь; когда примечания перемещаются через очередь на основе темпов, каждое Примечание имеет play() метод называют.

Хм, мог бы инвертировать это; каждое Указание дано как вход к Инструменту, который интерпретирует его путем синтезирования формы сигнала как требуется. Это возвращается вокруг к чему-то как Ваша исходная схема.

Другой подход к разложению должен применить Закон Parnas: Вы разлагаетесь для держания мест в секрете, где требования могли измениться. Но я думаю, что это заканчивается с подобным разложением; можно изменить музыкальный размер и настройку, можно изменить инструмент---, Примечание не заботится, играете ли Вы его на скрипке, фортепьяно или маримбе.

Интересная проблема.

2
ответ дан 3 December 2019 в 19:36
поделиться

Мое музыкальное программное обеспечение состава (см. мой профиль для ссылки), Примечания использования как основная единица (со свойствами как стартовая позиция, длина, объем, баланс, выпускает продолжительность и т.д.). Примечания сгруппированы в Шаблоны (которые имеют их собственные стартовые позиции и свойства повторения), которые сгруппированы в Дорожки (которые имеют их собственный инструмент или инструменты).

Смешивание синусоидальных волн является одним методом синтезирования звуков, но это довольно редко (это дорого и не звучит очень хорошим). Табличный синтез (который использует мое программное обеспечение) в вычислительном отношении недорог и относительно легок кодировать и чрезвычайно неограничен во множестве звуков, которые это может произвести.

2
ответ дан 3 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: