~ubuntu-branches/ubuntu/vivid/oss4/vivid

« back to all changes in this revision

Viewing changes to tutorials/sndkit/samples/midi.c

  • Committer: Bazaar Package Importer
  • Author(s): Romain Beauxis, Samuel Thibault, Romain Beauxis, Sebastien NOEL
  • Date: 2011-06-14 10:06:56 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20110614100656-cx4oc7u426zn812z
Tags: 4.2-build2004-1
[ Samuel Thibault ]
* debian/control: Add liboss4-salsa2, liboss4-salsa-dev and
  liboss4-salsa-asound2 packages, equivalent to (and will replace) those from
  the oss-libsalsa package (Closes: #589127).
* debian/patches/liboss4-salsa.patch: New patch to rename libsalsa into
  liboss4-salsa to avoid conflicts in the archive for no good reason.
* debian/rules: Make in libOSSlib and libsalsa.
* debian/liboss4-salsa-dev.install, debian/liboss4-salsa2.install,
  debian/liboss4-salsa-asound2.links, debian/liboss4-salsa-dev.links:
  Install liboss4-salsa libraries like was done in the oss-libsalsa package.
* include-alsa: Add a copy of ALSA 1.0.5 headers: Cf ALSA_1.0.* symbols in
  libsalsa, this is the roughly supported version.
* debian/copyright: Update for new include-alsa files.
* alsa.pc: New file for compatibility with libasound-dev.
* debian/control:
  - Add Vcs-Browser and Vcs-Svn fields.
  - Use linux-any instead of the list of Linux archs (Closes: #604679).
  - Make dkms dependency linux-any only.
* debian/patches/hurd_iot.patch: New patch to fix soundcard.h usage in
  libsalsa on hurd-i386.
* debian/patches/libsalsa_fixes.patch: New patch to fix some printf usages
  and ioctl declaration in libsalsa.
* debian/patches/no_EBADE.patch: New patch to cope with hurd-i386 not having
  EBADE.
* debian/patches/CFLAGS.patch: New patch to make oss4 take debian/rules
  CFLAGS into account.
* debian/patches/snd_asoundlib_version.patch: New patch to add
  snd_asoundlib_version().
* debian/patches/generic_srccconf.patch: New patch to fix source
  configuration on unknown archs.

[ Romain Beauxis ]
* Fixed README.Debian to only mention dkms' modules.
* Switch to dpkg-source 3.0 (quilt) format
* Added DM-Upload-Allowed: yes

[ Sebastien NOEL ]
* New upstream release (Closes: #595298, #619272).
* Fix typo in initscript (Closes: #627149).
* debian/control: adjust linux-headers dependencies (Closes: #628879).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Purpose: A minimalistic MIDI output programming sample.
 
3
 * Copyright (C) 4Front Technologies, 2002-2004. Released under GPLv2/CDDL.
 
4
 *
 
5
 * Description:
 
6
 * This program does nothing but plays a note on MIDI channel 1
 
7
 * after sending a program change message.
 
8
 *
 
9
 * This program demonstrates how simple it's to write programs that play
 
10
 * MIDI. All you need to do is assembling the MIDI message and writing 
 
11
 * it to the device. The MIDI format is defined  in "MIDI 1.0 Detailed
 
12
 * Specification" which is available from MIDI Manufacturs Association (MMA)
 
13
 * (see {!hlink http://www.midi.org}).
 
14
 *
 
15
 * This program does timing by calling the sleep(3) system call. In some
 
16
 * systems like Linux there may be better sleep routines like usleep(3)
 
17
 * that provide better timing resolution.
 
18
 *
 
19
 * However application based timing may not be as precise as required in
 
20
 * musical applications. For this reason the MIDI interface of OSS will
 
21
 * provide a driver based timing approach in the near future.
 
22
 *
 
23
 * Please look at the "{!link MIDI}" section of the OSS Developer's
 
24
 * manual for more info about MIDI programming.
 
25
 */
 
26
 
 
27
#include <stdio.h>
 
28
#include <unistd.h>
 
29
#include <stdlib.h>
 
30
#include <fcntl.h>
 
31
#include <soundcard.h>
 
32
 
 
33
#define DEVICE "/dev/midi"
 
34
 
 
35
int
 
36
main ()
 
37
{
 
38
  int fd;
 
39
 
 
40
  unsigned char note_on[] = { 0xc0, 0,  /* Program change */
 
41
    0x90, 60, 60
 
42
  };                            /* Note on */
 
43
  unsigned char note_off[] = { 0x80, 60, 60 };  /* Note off */
 
44
 
 
45
  if ((fd = open (DEVICE, O_WRONLY, 0)) == -1)
 
46
    {
 
47
      perror ("open " DEVICE);
 
48
      exit (-1);
 
49
    }
 
50
 
 
51
  if (write (fd, note_on, sizeof (note_on)) == -1)
 
52
    {
 
53
      perror ("write " DEVICE);
 
54
      exit (-1);
 
55
    }
 
56
 
 
57
  sleep (1);                    /* Delay one second */
 
58
 
 
59
  if (write (fd, note_off, sizeof (note_off)) == -1)
 
60
    {
 
61
      perror ("write " DEVICE);
 
62
      exit (-1);
 
63
    }
 
64
 
 
65
  close (fd);
 
66
  exit (0);
 
67
}