Anzeige:
Ergebnis 1 bis 8 von 8

Thema: midi ausgabe mittels c

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.04.2003
    Beiträge
    15

    midi ausgabe mittels c

    ich möchte in linux ein c programm schreiben, dass mir midi "töne" ausgibt.
    ich habe folgenden quellcode, der ohne errors oder warnings compiliert. aber ich höre keinen sound. ich glaube, dass es nicht an dem source file liegt, sondern an irgendetwas system technischen, denn ich kann midi files nur mittels kmidi abspielen, und da rauscht es ziemlich. weiss jemand rat?
    Code:
    #include <linux/soundcard.h>
    #include <unistd.h>
    #include <fcntl.h>
    #include <stdio.h>
    int main(void) {
       char* device =  "/dev/midi" ;
       unsigned char data[3] = {0x90, 60, 127};
       // step 1: open the OSS device for writing
       int fd = open(device, O_WRONLY, 0);
       if (fd < 0) {
          printf("Error: cannot open %s\n", device);
          exit(1);
       }
       // step 2: write the MIDI information to the OSS device
       write(fd, data, sizeof(data));
       // step 3: (optional) close the OSS device
       close(fd);
       return 0;
    }
    I'm judge and I'm jury and I'm executioner too.
    www.metallica.com
    www.st-anger.de
    www.metallicamp.de

  2. #2
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Hi,

    "normale" Soundkarten (nicht die Profi-Musiker-Teile für mehrere 1.000 €)
    haben keine "echte" MIDI-Schnittstelle.
    Unter Windows wird die dann halt von den Soundkartentreibern Emuliert (die haben dann ein Sogennantes "Wavetable", also eine Liste aller Instrumente samt Tönen in Software realisiert).

    Unter Linux musst du erst eine "virtuelle" MIDI-Soundkarte Installieren.
    Schau mal unter http://www.Linuxforen.de unter [Musik], da wird das alles nochmal ganz genau erklärt.

    Gruss
    DanDanger
    ------------------------------------
    DanDanger

  3. #3
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.04.2003
    Beiträge
    15
    das nützt mir gar nix. leider. trotzdem danke.

    mit timidity kann ich ganz normale midi files abspielen. ok. aber ich möchte in meinem programm die midi messages "direkt" an die midi schnittstelle schicken. nicht über irgendein tool, wie timidity usw. sondern direkt an die schnittstelle /dev/midi00.

    trotzdem danke
    I'm judge and I'm jury and I'm executioner too.
    www.metallica.com
    www.st-anger.de
    www.metallicamp.de

  5. #5
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    kann timidity auch von der standardeingabe lesen im Midi abzuspielen?
    dann könntest du so nämlich tmidity mit deinen Daten füttern.
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.04.2003
    Beiträge
    15
    versteh ich nicht ganz was du meinst.

    ich habe ein c program, und möchte mittels eines befehls daten an die midi schnittstelle schicken. wie soll ich da timidity einbinden?
    I'm judge and I'm jury and I'm executioner too.
    www.metallica.com
    www.st-anger.de
    www.metallicamp.de

  7. #7
    Registrierter Benutzer Avatar von DanDanger
    Registriert seit
    15.12.2001
    Ort
    /home/dandanger
    Beiträge
    130
    Hi,

    mit timidity kann ich ganz normale midi files abspielen. ok. aber ich möchte in meinem programm die midi messages "direkt" an die midi schnittstelle schicken. nicht über irgendein tool, wie timidity usw. sondern direkt an die schnittstelle /dev/midi00.
    du kommst aber um die Installation einer "virtuellen" MIDI-Soundkarte (oder um die Benutzung irgendwelcher Tools) nicht drumherum.

    Das Problem ist : Deine Soundkarte "versteht" keine direkten MIDI-Befehle (unter Windows wird die MIDI-Ausgabe ja auch nur von den Treibern emuliert).

    Erst wenn du die deine MIDI-Soundkarte + Wavetable installiert hast, kannst du über /dev/midi MIDI-Files ausgeben

    Gruss
    DanDanger
    ------------------------------------
    DanDanger

  8. #8
    Registrierter Benutzer Avatar von oracle2025
    Registriert seit
    18.03.2002
    Beiträge
    136
    Im aktuellen Linux-User Magazin sind einige Artikel zum Thema Linux, Sound und Midi.
    Vielleicht findest da ja was.

    Oder du schaust dir mal Fluidsynth an:
    http://www.fluidsynth.org/

    der macht angeblich folgendes:
    FluidSynth is a real-time software synthesizer based on the SoundFont 2 specifications. It is a "software synthesizer". FluidSynth can read MIDI events from the MIDI input device and render them to the audio device. It can also play MIDI files.
    Niemand dringt hier durch und
    gar mit der Botschaft eines Toten.
    Du aber sitzt an Deinem Fenster und
    erträumst sie Dir, wenn der Abend kommt.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •