Как стать автором
Обновить

Комментарии 23

Но чаще она обращается к хранящимся в ней «банкам данных» образцов звучания настоящих инструментов. (Возможно комбинирование этих двух способов)
«Чаще»? Нету такого нигде, имхо. Впрочем, как и
смоделировать звучание инструмента совокупностью нескольких FM (частотных) генераторов
В большинстве современных карт синтезаторы используются исключительно полностью софтовые уж много-много лет. Вообще, думаю, что в обычных картах во всех. Хотя, может остались какие-то эксклюзивные исключения.
Думаю, под «чаще» автор имел ввиду то, что чаще всего на деле используют готовые библиотеки с образцами звучания.
Да нет, тут явно сказано, что за генерацию midi-звуков отвечает звуковая карта и от неё же зависят какие они будут:
Звуковая карта может служить музыкальным синтезатором, способном воспроизводить звучания до 128-ми различных музыкальных инструментов. Качество и принцип имитации инструментов зависит от вашей звуковой карты.
и типа есть два варианта: либо она генерирует их частотным генератором, либо использует какие-то там «банки данных» находящиеся на ней. Да, было такое кое-где, но сейчас на деле карты вообще этим не занимаются, всё генерируется софтом вне её. Например, описываемый в статье javax.sound.midi использует программный синтезатор встроенный в JRE, емнип.
Но звучит «миди» гарантированно ужасно и заставлять поьзователя слушать это не в 1995 году – издевательство.
Если воспроизводить эти файлы на профессиональных синтезаторах — то звучит соответствующе.
Набор General MIDI даже в крутых воркстейшенах типа Motif звучит все равно весьма посредственно и делается по остаточному принципу (у ямах так вообще запиливается набор от древних самоиграек серии PSR)
Соглашусь, «миди» звуками пользователя сложно удивить, особенно если использовать стандартную базу инструментов. Но для экспериментов с музыкой, особенно при манипуляциях с её нотной основой, простая возможность воспроизведения муз. инструментов может пригодиться. И если кому-либо понадобится — он всегда может глянуть этот пост и сразу же будет готов к воплощению своей идеи, включающей в себя необходимость воспроизводить «миди». И хоть уже 2014-ый год, но звуковые платы по прежнему предоставляют эту возможность. Допустим вы захотели попробовать свои силы в программном сочинении музыки и вам понадобилось озвучивать ноты — не потребуется отвлекаться от воплощения основных мыслей идеи. Не понадобится искать и разбираться с тем как можно запрограммировать такую простую возможность. Мне такая необходимость понадобилась и пришлось потратить время на выяснение как это делается. К примеру, о смене стандартного пианино на любой из 128-ми других, не попадалось информации. В общем, если понадобится — будете знать что есть возможность простой работы с «миди» звуками и эта статься, как шпаргалка.
И хоть уже 2014-ый год, но звуковые платы по прежнему предоставляют эту возможность
Вы почему-то настойчиво игнорируете то что я написал выше. Не знают в 2014 году карты ни о каком миди. Ваши звуки из примеров генерируются программным синтезатором. Вы сами проверьте экземпляр какого класса реализующего Synthesizer получается этим вашим кодом:
Synthesizer synth = MidiSystem.getSynthesizer();
Synthesizer — это java интерфейс. И буду рад, если ты приведешь ссылку на информацию, каким образом java api само синтезирует midi звучание. Но в любом случае — даже программно можно прямо из java загружать готовые семплы SoundFont и воспроизводить, не синтезируя.
Synthesizer — это java интерфейс.
Именно потому я и написал:
экземпляр какого класса реализующего Synthesizer

ссылку на информацию, каким образом java api само синтезирует midi звучание
Таким же образом, как весь остальной софт. У меня нет подробной информации как устроен синтезатор именно в JRE, изучение исходников в помощь, например.
Но в любом случае — даже программно можно прямо из java загружать готовые семплы SoundFont и воспроизводить, не синтезируя.
Да, можно, но до звуковой карты они не доходят. И всего что написано мной выше это не отменяет.

з.ы. И да, скорее всего этот SoftSynthesizer и есть то, что вы получаете через MidiSystem.getSynthesizer().
Не вижу связи javax.sound.midi.Synthesizer с com.sun.media.sound.SoftSynthesizer.
Не уверен что я 100% знаю картину, но я так понимаю что программа синтеза звука встроена в ОС, а Java просто врапит доступ к нему.
В секвенсорах он называется что-то типа «Microsoft midi synthesizer» (на винде, конечно)
По ссылке выше видно примерно как работает синтезатор. Он сам использует саундбанки. В дефолтном случае он ещё пытается найти несколько банков (в зависимости от системы), если и тут не получается, то возвращает вообще EmergencySoundbank, понятное дело весьма унылый.
Да. Похоже вы правы.
Не вижу связи javax.sound.midi.Synthesizer с com.sun.media.sound.SoftSynthesizer.
А я не вижу что тут непонятного и с чем именно вы спорите. Я же ссылку на исходник даже дал. Прямо таки вот вообще никакой связи не видите? Меж тем связь тут самая прямая — класс com.sun.media.sound.SoftSynthesizer имплементирует javax.sound.midi.Synthesizer. И этот же самый com.sun.media.sound.SoftSynthesizer возвращается вашим же кодом
Synthesizer synth = MidiSystem.getSynthesizer();

Ну или какой-то другой класс возвращается, который в вашей конкретной JRE реализует софтовый синтезатор. У себя проверил — в оракловой джаве реализация именно com.sun.media.sound.SoftSynthesizer и есть.
Если поставить какой-нибудь Soundbank для MIDI то можно заставить звучать MIDI файлы, как живые.
Например http://coolsoft.altervista.org/en/virtualmidisynth
Похоже на мерзкий перевод боянистого мана.
Чутье тебя подвело
Но существует и другой вид компьютерного звука — синтезированный (MIDI)

В корне неверная формулировка.
MIDI — это Musical Instrument Digital Interface. Там нет звука и он там ни когда быть не должен. На устройство (синтезатор, контроллер) приходят команды оно их интерпретирует результатом чего может быть звук.
То есть звук есть, да, но это не другой вид звука, это результат обработки команд, например синтезатором.
Иная форма и концепция воспроизведения звука. В статье четко расписано что такое MIDI. И в данной фразе говорилось, что РЕЧЬ идет о MIDI (как технологии), а не о том, что набор команд — это звук.
Думаю что «проблема» в том, что «MIDI звук» — не совсем верный термин. Обычному пользователю понятно, а вот профессионального музыканта такое может расстроить… Скорее должно быть что-то типа «звук дефолтного PC миди синтезатора».
Кстати, если вы играетесь с программированием нот и вас не очень устраивает стандартный миди синтезатор, то вы можете поискать секвенсор, в который загружаются VSTi синтезаторы и вот с помощью них добиться офигенного профессионального саунда.
Было бы интересно в рамках этой же статьи:

1) как выводить звук в midi-порт звуковой карты?
2) узнать как добавлять кастомные банки, в каком формате они должны быть?
Еще было бы здорово понять, можно ли потом результат выкатить как миди файл?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации