Cómo convertir un archivo MIDI a MP3 usando TiMidity y FFmpeg en Ubuntu 20.04

Cómo convertir un archivo MIDI a MP3 usando TiMidity y FFmpeg en Ubuntu 20.04

Como mencioné en publicaciones anteriores sobre cómo convertir archivos MIDI a WAV en Windows usando VLC, tuve que encontrar una manera de convertirlos también en Ubuntu. Después de investigar un poco, terminé usando TiMidity para reproducir el archivo MIDI y FFmpeg para almacenar el flujo de salida en un archivo MP3 usando la línea de comandos.

En este artículo, te explicaré cómo convertir fácilmente archivos MIDI a MP3 en tu escritorio y servidor Ubuntu 20.04 usando Timidity para reproducir los archivos midi y FFMPEG para convertirlos en un archivo MP3.

1. Instalar TiMidity

TiMidity++ es una utilidad CLI que convierte algunos de los archivos MIDI (formatos admitidos: archivos MIDI estándar (* .mid), archivos de recomposición (* .rcp, * .r36, * .g18, * .g36) y archivos de módulo (* .mod )) en archivos de audio formateados (por ejemplo, RIFF WAVE). TiMidity ++ utiliza archivos de parche compatibles con Gravis Ultrasound o Soundfonts (* .sfx, * .sf2) para generar datos de audio digital a partir de archivos MIDI. Los datos de audio digital generados por TiMidity ++ pueden almacenarse en un archivo para su procesamiento o reproducirse en tiempo real a través de un dispositivo de audio. En la reproducción en tiempo real, TiMidity ++ puede mostrar las letras contenidas en archivos KAR o WRD. Como puede ver, no se puede exportar a nuestro formato MP3 deseado, sin embargo, podemos manipular la reproducción en tiempo real para almacenarla en un archivo MP3 usando FFMPEG.

Antes de continuar con la instalación, actualiza los repositorios de apt:

sudo apt-get update

Y luego instala Timidity con el siguiente comando:

sudo apt-get install timidity

La instalación de este paquete ocupará aproximadamente 150 MB de espacio en su disco. Una vez que termine, deberías poder usar TiMidity desde la línea de comandos.

2. Instale FFmpeg

A continuación, instale FFmpeg, el conjunto de bibliotecas y programas para manejar video, audio y otros archivos y transmisiones multimedia. El siguiente comando debería funcionar si aún no lo tienes instalado:

sudo apt-get install ffmpeg

La instalación de este paquete ocupará aproximadamente 260 MB de espacio en tu disco. Para obtener más información y los pasos para instalar en otros sistemas operativos, visita la página oficial de descargas del sitio web de FFmpeg aquí .

3. Conversión de MIDI a MP3

Finalmente, ahora que tienes las 2 bibliotecas necesarias para que esto funcione, continúa con la conversión usando el siguiente comando. Funciona así, la TiMidity reproducirá el archivo MIDI proporcionado como el primer argumento posicional y la opción -Ow generará una salida en formato RIFF WAVE. Luego, canalizaremos la salida a FFMPEG que manejará la transmisión y la almacenaremos en un archivo MP3:

timidity input_file.mid -Ow -o - | ffmpeg -i - -acodec libmp3lame -ab 64k output_file.mp3

Reemplace input_file.mid con la ruta absoluta o relativa al archivo MIDI en tu sistema que desea convertir a MP3 y reemplaza output_file.mp3 con la ruta absoluta o relativa al archivo MP3 que contendrá el audio convertido.

Esto generaría una salida similar a la siguiente en la terminal:

Playing ./acdc-backinblack.mid
MIDI file: ./acdc-backinblack.mid
Format: 1  Tracks: 5  Divisions: 960
ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
  configuration: --prefix=/usr --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
[wav @ 0x557e8f53c700] Ignoring maximum wav data size, file may be invalid
Warning: -: Illegal seek: Can't make valid header
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from 'pipe:':
  Duration: N/A, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> mp3 (libmp3lame))
Output #0, mp3, to 'output_file.mp3':
  Metadata:
    TSSE            : Lavf58.29.100
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p, 64 kb/s
    Metadata:
      encoder         : Lavc58.54.100 libmp3lame
Playing time: ~257 seconds:48.52 bitrate=  55.1kbits/s speed=76.2x    
Notes cut: 0
Notes lost totally: 0
pipe:: corrupt input packet in stream 0
size=    1993kB time=00:04:15.00 bitrate=  64.0kbits/s speed=75.8x    
video:0kB audio:1992kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.012400%

Y por supuesto, generaría un nuevo archivo MP3 en el destino deseado con el nombre de archivo especificado que ahora puedes reproducir en cualquier dispositivo que admita este formato.

¡Que te diviertas ❤️!

Esto podria interesarte

Conviertete en un programador más sociable