Я нашел это из: accounting.js . Это очень просто и идеально подходит для моих нужд.
// Default usage:
accounting.formatMoney(12345678); // $12,345,678.00
// European formatting (custom symbol and separators), can also use options object as second parameter:
accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99
// Negative values can be formatted nicely:
accounting.formatMoney(-500000, "£ ", 0); // £ -500,000
// Simple `format` string allows control of symbol position (%v = value, %s = symbol):
accounting.formatMoney(5318008, { symbol: "GBP", format: "%v %s" }); // 5,318,008.00 GBP
// Euro currency symbol to the right
accounting.formatMoney(5318008, {symbol: "€", precision: 2, thousand: ".", decimal : ",", format: "%v%s"}); // 1.008,00€
You could try to somehow interface with Timidity, which is Open Source:
TiMidity++ is a software synthesizer. It can play MIDI files by converting them into PCM waveform data; give it a MIDI data along with digital instrument data files, then it synthesizes them in real-time, and plays. It can not only play sounds, but also can save the generated waveforms into hard disks as various audio file formats.
FluidSynth is a more recently updated Open Source project in a similar vein:
FluidSynth is a real-time software synthesizer based on the SoundFont 2 specifications.
You can download some free SoundFonts (the actual PCM data used by these synthesizers to "render" the MIDI files) from the sites on this list.
Вы можете приобрести ряд программ, которые сделают это (Google "конвертировать midi в WAV"), но я никогда не встречал общедоступный код .Net, который бы это делал ( Я думаю, что некоторые из этих программ написаны на .Net, но исходный код недоступен).
У меня есть онлайн-друг, который работает над коммерческим конвертером MIDI-to-WAV, но его нет в .Net и это не будет открытым исходным кодом. Как сказал Роберт Харви, это совсем непростая задача, поскольку в основном она включает в себя написание собственного программного синтезатора (задача по душе).
Файлы MIDI содержат только информацию о нотах и контроллерах, но не звуки. Чтобы получить звуки из MIDI-файла, вы должны передать файл через музыкальный синтезатор или сэмплер, который преобразует информацию о ноте и контроллере в реальные звуки.
На практике это означает, что любой данный MIDI-файл не поддерживает иметь особый звук. Звук, получаемый в результате преобразования файла MIDI в аудио, будет варьироваться в зависимости от качества синтезатора или библиотеки сэмплов и звуков, выбранных для выполнения преобразования.
Многие звуковые карты могут воспроизводить звук из файлов MIDI. . Они могут это сделать, потому что многие MIDI-файлы соответствуют стандарту, называемому Спецификация General MIDI . Спецификация General MIDI предоставляет стандартизированный способ сопоставления назначений конкретных инструментов. Если ваш MIDI-файл соответствует этому стандарту, вы можете воспроизвести его через звуковой генератор General MIDI и ожидать, что малый барабан будет звучать как малый барабан, а не как труба.
Если у вас есть сложный пакет для создания музыки, такой как Cakewalk , вы можете загрузить в него MIDI-файл, и он будет использовать свои встроенные звуковые библиотеки для рендеринга звукового файла для вас, и на самом деле это можно сделать быстрее, чем в реальном времени (т.е. я должен проигрывать звук через звуковую карту и захватывать вывод.)
Думаю, я пытаюсь сказать, что здесь много движущихся частей. Нет ни одного фрагмента кода или модуля класса, который сделает это за вас.
и не похож на трубу.Если у вас есть сложный пакет для создания музыки, такой как Cakewalk , вы можете загрузить в него MIDI-файл, и он будет использовать свои встроенные библиотеки звуков для рендеринга звукового файла для вас, и на самом деле это можно сделать быстрее, чем в реальном времени (т.е. не нужно воспроизводить звук через звуковую карту и захватывать вывод).
Я думаю, что я пытаюсь сказать, что есть много движущихся частей к этому. Нет ни одного фрагмента кода или модуля класса, который сделает это за вас.
и не похож на трубу.Если у вас есть сложный пакет для создания музыки, такой как Cakewalk , вы можете загрузить в него MIDI-файл, и он будет использовать свои встроенные библиотеки звуков для рендеринга звукового файла для вас, и на самом деле это можно сделать быстрее, чем в реальном времени (т. е. не нужно воспроизводить звук через звуковую карту и захватывать вывод).
Думаю, я пытаюсь сказать, что есть много движущихся частей к этому. Нет ни одного фрагмента кода или модуля класса, который сделает это за вас.
я должен проигрывать звук через звуковую карту и захватывать вывод.)Думаю, я пытаюсь сказать, что здесь много движущихся частей. Нет ни одного фрагмента кода или модуля класса, который сделает это за вас.
я должен проигрывать звук через звуковую карту и захватывать вывод.)Думаю, я пытаюсь сказать, что здесь много движущихся частей. Нет ни одного фрагмента кода или модуля класса, который сделает это за вас.