~ubuntu-branches/ubuntu/breezy/muse/breezy

« back to all changes in this revision

Viewing changes to synti/stklib/RawWvOut.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2004-02-07 15:18:22 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040207151822-es27xxkzbcxkebjm
Tags: 0.6.3-1
* New upstream version.
* Added patches:
  + [10_alsa_init_fix] New, from upstream CVS.
    Initialize direction variable when setting Alsa parameters.
  + [10_canvas_translation_fix] New, from upstream CVS.
    Do not translate tooltips twice in canvas popup.
  + [10_checkbox_fix] New, from upstream CVS.
    Use proper set/test methods on metronome checkboxes.
  + [10_html_doc_cleanup] New.
    Fix links and HTML errors in documentation.
  + [20_allow_system_timer] New.
    The new upstream version fails by default if the real-time clock
    could not be accessed (usually the case when not running suid-root).
    This patch reverts the old behaviour of falling back to the more
    inaccurate system timer.
* Updated patches:
  + [11_PIC_fixes_fixup] Rediffed.
* Removed patches:
  + [20_no_atomic_asm] Merged upstream.
* debian/compat: Splice out debhelper compatibility level from rules file.
* debian/control: Build-depend on latest jack release by default.
  Closes: #228788
* debian/control: Bump standards version.
* debian/control: Use auto-generated debconf dependency via misc:Depends.
* debian/control: Minor tweaks to the long description.
* debian/control: Tighten fluidsynth build dependency to sane version.
* debian/muse.doc-base: New. Register HTML documentation with doc-base.
* debian/templates: Tiny rewording, and typo fix.
* debian/templates, debian/po/*: Switch to po-debconf for translations.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*******************************************/
2
 
/*  RawWvOut Output Class                  */
3
 
/*  by Gary P. Scavone, 1999               */
4
 
/*                                         */
5
 
/*  This object spits samples into a raw   */
6
 
/*  16-bit data (signed integer) file.     */
7
 
/*                                         */
8
 
/*  STK RawWave files are assumed to be    */
9
 
/*  monaural and big-endian.               */
10
 
/*******************************************/
11
 
 
12
 
#include "RawWvOut.h"
13
 
#ifdef __LITTLE_ENDIAN__
14
 
  #include "ByteSwap.h"
15
 
#endif
16
 
 
17
 
RawWvOut :: RawWvOut(char *fileName, int chans)
18
 
{
19
 
  char tempName[128];
20
 
  char msg[128];
21
 
 
22
 
  if (chans != 1) {
23
 
    sprintf(msg, "RawWvOut: STK rawwave files are always monaural (channels = %d not supported)!\n", chans);
24
 
    throw StkError(msg, StkError::FUNCTION_SYNTAX);
25
 
  }
26
 
  channels = chans;
27
 
  strcpy(tempName,fileName);
28
 
  if (strstr(tempName,".raw") == NULL) strcat(tempName,".raw");
29
 
  fd = fopen(tempName,"wb");
30
 
  if (!fd)   {
31
 
    sprintf(msg, "RawWvOut: Could not create soundfile: %s\n", tempName);
32
 
    throw StkError(msg, StkError::FILE_ERROR);
33
 
  }
34
 
  printf("\nCreating soundfile: %s\n", tempName);
35
 
  data_length = FILE_BUFFER_SIZE*channels;
36
 
  data = (INT16 *) new INT16[data_length];
37
 
}
38
 
 
39
 
RawWvOut :: ~RawWvOut()
40
 
{
41
 
  double temp;
42
 
 
43
 
  fwrite(data,2,counter,fd);
44
 
  temp = (double) totalCount * ONE_OVER_SRATE;
45
 
  printf("%f Seconds Computed\n\n", temp);
46
 
  fclose(fd);
47
 
}
48
 
 
49
 
void RawWvOut :: tick(MY_FLOAT sample)
50
 
{
51
 
  data[counter] = (INT16) (sample * 32000.0);    
52
 
#ifdef __LITTLE_ENDIAN__
53
 
  swap16 ((unsigned char *)&data[counter]);
54
 
#endif
55
 
  counter++;
56
 
 
57
 
  totalCount++;
58
 
  if (counter == data_length) {
59
 
    fwrite(data,2,data_length,fd);
60
 
    counter = 0;
61
 
  }
62
 
}
63
 
 
64
 
void RawWvOut :: mtick(MY_MULTI samples)
65
 
{
66
 
  data[counter] = (INT16) (*samples * 32000.0);
67
 
#ifdef __LITTLE_ENDIAN__
68
 
  swap16 ((unsigned char *)&data[counter]);
69
 
#endif
70
 
  counter++;
71
 
  
72
 
  totalCount++;
73
 
  if (counter == data_length) {
74
 
    fwrite(data,2,data_length,fd);
75
 
    counter = 0;
76
 
  }
77
 
}