Сегодня, 11 ноября 2015 года, в Соединенных Штатах отмечается День ветеранов . « Отводы » - это вызов горючего на военных похоронах США:
( «Отводы» на SoundCloud от vtmiller )
Это простая мелодия, длиной всего двадцать четыре ноты и использующая только четыре разных ноты. Вот ноты:
( источник )
Вызов
Напишите программу или функцию, которая воспроизводит «Taps» или выводит аудиофайл «Taps» в любом распространенном формате аудиофайлов (например, MP3, WAV, MIDI). Его можно играть на любой клавише, используя любой тип инструмента или звуковой сигнал, доступный для вашего языка. Например, это может звучать как пианино, а не как горн. (Хотя по-прежнему следует использовать только один тип инструмента.)
Все двадцать четыре ноты должны быть воспроизведены с точной высотой, длительностью и интервалом. Кто-то, кто знаком с «Taps», должен иметь возможность запустить ваш код и легко распознать воспроизводимую песню.
Продолжительность мелодии (от начала первой ноты до конца последней ноты) должна составлять от 30 до 70 секунд. При желании у вас может быть до 5 секунд тишины, дополняющих начало и / или конец вашего звукового файла, так что 80-секундный файл является самым длинным из допустимых.
Вы, конечно, не можете просто скачать песню где-нибудь онлайн или извлечь ее из аудио-библиотеки, в которой она есть в качестве образца. Однако вы можете использовать аудио библиотеки, которые могут воспроизводить / создавать отдельные заметки и создавать аудио файлы.
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах. Тем не менее, для решения этой конкретной задачи я призываю вас не сосредотачиваться на количестве байтов, особенно в ущерб качеству звука. Гольф ваши представления, но позвольте себе быть творческим с вашим выбором инструмента или методологии вывода звука. Задача состоит в том, чтобы почтить память ветеранов, а не выкрикивать едва узнаваемую версию «Taps».
Обратите внимание, что вы можете встраивать аудиофайлы SoundCloud непосредственно в сообщения , просто вставив ссылку в пустую строку. Если у вас есть учетная запись SoundCloud, это будет отличным способом поделиться своими результатами.
источник
Ответы:
qb64,
10084 байтаОбновленная версия старого Qbasic, доступная для загрузки по адресу http://www.qb64.net/
Подсчет исключает пробелы, которые не требуются и только там, чтобы разбить данные на фразы из трех нот для ясности.
Команды в игровой строке
История игры в гольф:
Первый пост: с 4/4 до 4/2, что означает, что у меня есть целые заметки, но нет шестнадцатых заметок.
Редактировать 1: Ключ изменен с C (диапазон GG) на F (диапазон CC). Теперь мне нужно выполнить изменение октавы только один раз для высокого C, который происходит только один раз, а не для всех низких G, как раньше.
Избавившись от всех этих изменений октавы, я не думаю, что есть больше в гольфе. Всего их 20
L
, но нет очевидного способа их избежать.Последняя фраза (11 символов) такая же, как и первая, но невозможно вставить ее дважды, начиная с 11 символов. Повторные данные были бы только 9 символами, если бы начальные
L4
были удалены (Это кажется ненужным, поскольку длина примечания по умолчанию, кажется, четверть примечания, но это не задокументировано, поэтому я оставил это.)источник
JavaScript,
203198196195 байт5 байтов сохранено благодаря Dendrobium и 1 благодаря @PatrickRoberts.
объяснение
Проверьте это здесь, в браузере! Работает в любом браузере, который поддерживает HTML5 Web Audio API .
источник
Mathematica,
361287285 байтЯ пошел на точность здесь. Выход в точности соответствует описанному в партитуре, сыгранной на трубе. Вы можете найти файл здесь .
Спасибо @ MartinBüttner за предложения по игре в гольф.
источник
%1
,%2
И%%
фактически не сохранить любой байт надx="E5"
->x
(на самом деле, видя , как часто вы используете их , вы должны фактически сохранить довольно много с помощью переменных). Затем вы можете сохранить тонны байтов, используяEmitSount@Sound[SoundNote[#,5/#2,"Trumpet",SoundVolume->#3/17]&@@@{{%%,8,17},{%%,24,20},...}
и сохраняя наиболее часто используемые заметки в%
. И на 24 нотах было бы еще короче разделить плоский список:SoundNote[#,5/#2,"Trumpet",SoundVolume->#3/17&@@@{%%,8,17,%%,24,20,%2,2,23,...}~Partition~3
Соник Пи, 899 байт
Время немного отклонено, но я думаю, что все в порядке.
Слегка гольф
источник
MATLAB,
338327262258230 байтовисточник
SmileBASIC, 73 байта
Все заметки и сроки верны. Я использовал трубу, потому что это самая близкая вещь в MIDI
источник
Powershell,
183175159 байтНостальгия, кто не любит гудки ?!
Объяснение (sortof)
Это будет играть примерно через 45 секунд.
Я впервые использую Windows Powershell, любые советы по игре в гольф - это welome.
Старые версии
175183источник
BBC Basic, 111
Скачать переводчик можно по адресу http://www.bbcbasic.co.uk/bbcwin/bbcwin.html.
Оценка исключает пробелы и символы новой строки, которые не являются необходимыми и добавлены для удобства чтения
Довольно стандартное сжатие, 1 символ ASCII на ноту. Параметры
SOUND
следующие:Диапазон песни составляет 13 нот, хотя используются только 4. Чтобы получить этот диапазон в диапазоне для печати ASCII из 95 чисел, мне пришлось сжать длительность в целочисленный диапазон 7 и взять его по модулю 7. Используются следующие длительности (в шестнадцатых) (за исключением 6, которое никогда не бывает используется): 1,2,3,4,6,8,12. Чтобы получить эти числа, я натолкнулся на идею деления 12 на степень
sqrt(2)
(приблизительно 1,4) и усечения.Это
SOUND1,0,1,1
раздражает, стоит 12 байтов. Необходимо обеспечить паузу между нотами одинакового тона.источник
Рубин + гудок, 178 байт
Мне потребовалось некоторое время, чтобы сделать это, я думаю, что пропустил лодку, но что угодно.
f
содержит четыре используемые частоты.n
содержит пять использованных длин нот, кратных 16-м нотам.a="00101...
содержит все высоты нот, сопровождаемые всеми длинами нот, в качестве индексов для соответствующих массивов.l
затем устанавливается 24-й индекс и далееa
. Затем создается звуковая команда путем итерации всего вышеперечисленного и выполняетсяисточник
C - (Raw: 318 | WAV: 437)
8-битный (без знака) моно PCM с частотой 44800 Гц, 33,60 секунды.
Меццо-форте, фортиссимо и форте-динамика несколько художественно реализованы. Фермас может быть лучше.
Код опирается на
unsigned long long
8 октетов и систему с прямым порядком байтов.Скомпилируйте и запустите что-то вроде:
Добавить
-DRAW
в строку компиляции для необработанного варианта.Сырой вывод можно воспроизвести, например, с помощью SoX
play
:источник