Как я могу преобразовать между midi в wav/mp3 в c#?

Я нашел это из: 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€ 

11
задан the Tin Man 4 June 2011 в 18:07
поделиться

3 ответа

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.

8
ответ дан 3 December 2019 в 07:39
поделиться

Вы можете приобрести ряд программ, которые сделают это (Google "конвертировать midi в WAV"), но я никогда не встречал общедоступный код .Net, который бы это делал ( Я думаю, что некоторые из этих программ написаны на .Net, но исходный код недоступен).

У меня есть онлайн-друг, который работает над коммерческим конвертером MIDI-to-WAV, но его нет в .Net и это не будет открытым исходным кодом. Как сказал Роберт Харви, это совсем непростая задача, поскольку в основном она включает в себя написание собственного программного синтезатора (задача по душе).

0
ответ дан 3 December 2019 в 07:39
поделиться

Файлы MIDI содержат только информацию о нотах и ​​контроллерах, но не звуки. Чтобы получить звуки из MIDI-файла, вы должны передать файл через музыкальный синтезатор или сэмплер, который преобразует информацию о ноте и контроллере в реальные звуки.

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

Многие звуковые карты могут воспроизводить звук из файлов MIDI. . Они могут это сделать, потому что многие MIDI-файлы соответствуют стандарту, называемому Спецификация General MIDI . Спецификация General MIDI предоставляет стандартизированный способ сопоставления назначений конкретных инструментов. Если ваш MIDI-файл соответствует этому стандарту, вы можете воспроизвести его через звуковой генератор General MIDI и ожидать, что малый барабан будет звучать как малый барабан, а не как труба.

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

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

и не похож на трубу.

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

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

и не похож на трубу.

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

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

я должен проигрывать звук через звуковую карту и захватывать вывод.)

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

я должен проигрывать звук через звуковую карту и захватывать вывод.)

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

8
ответ дан 3 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

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