jm.audio.io

## Class SampleIn

- java.lang.Object
- - jm.audio.AudioObject
  - - jm.audio.io.SampleIn

- All Implemented Interfaces:
    Alignments, DrumMap, Durations, Dynamics, Frequencies, Noises, Panning, Pitches, ProgramChanges, RhythmValues, Scales, Tunings, Volumes, Waveforms, JMC

      public class SampleIn
      extends AudioObject
      implements JMC

  Audio file reading audio object for jMusic. The class utilises the JavaSound file reading classes. It can be used as the primary audio object in a chain to generate audio sample data for playabck and or later processing.

- - ### Field Summary

    - ### Fields inherited from class jm.audio.AudioObject

      `channels, currentNote, currentNoteStartTime, finished, inputs, inst, name, next, numOfSamples, previous, sampleRate`

    - ### Fields inherited from interface jm.JMC

      `AMPLITUDE, DEBUG, DYNAMIC, EIGHT_BIT, FREQUENCY, KEY_SIG_EVT, MONO, NO_DENOMINATOR, NO_INSTRUMENT, NO_KEY_QUALITY, NO_KEY_SIGNATURE, NO_NUMERATOR, OCTAPHONIC, PAN, PITCH, PROG_EVT, QUADRAPHONIC, RHYTHM, SIXTEEN_BIT, STEREO, TEMP_EVT, THIRTY_TWO_BIT, TIME_SIG_EVT, VERBOSE`

    - ### Fields inherited from interface jm.constants.Durations

      `C, CD, CDD, CROTCHET, CROTCHET_TRIPLET, CT, DC, DDC, DDEN, DDHN, DDM, DDQ, DDQN, DEMI_SEMI_QUAVER, DEMI_SEMI_QUAVER_TRIPLET, DEN, DHN, DM, DOTTED_CROTCHET, DOTTED_EIGHTH_NOTE, DOTTED_HALF_NOTE, DOTTED_MINIM, DOTTED_QUARTER_NOTE, DOTTED_QUAVER, DOTTED_SEMI_QUAVER, DOTTED_SIXTEENTH_NOTE, DOUBLE_DOTTED_CROTCHET, DOUBLE_DOTTED_EIGHTH_NOTE, DOUBLE_DOTTED_HALF_NOTE, DOUBLE_DOTTED_MINIM, DOUBLE_DOTTED_QUARTER_NOTE, DOUBLE_DOTTED_QUAVER, DQ, DQN, DSN, DSQ, DSQT, EIGHTH_NOTE, EIGHTH_NOTE_TRIPLET, EN, ENT, HALF_NOTE, HALF_NOTE_TRIPLET, HN, HNT, M, MD, MDD, MINIM, MINIM_TRIPLET, MT, Q, QD, QDD, QN, QNT, QT, QUARTER_NOTE, QUARTER_NOTE_TRIPLET, QUAVER, QUAVER_TRIPLET, SB, SEMI_QUAVER, SEMI_QUAVER_TRIPLET, SEMIBREVE, SIXTEENTH_NOTE, SIXTEENTH_NOTE_TRIPLET, SN, SNT, SQ, SQD, SQT, THIRTYSECOND_NOTE, THIRTYSECOND_NOTE_TRIPLET, TN, TNT, TSN, TSNT, WHOLE_NOTE, WN`

    - ### Fields inherited from interface jm.constants.Pitches

      `a0, A0, a1, A1, a2, A2, a3, A3, a4, A4, a5, A5, a6, A6, a7, A7, a8, A8, af0, AF0, af1, AF1, af2, AF2, af3, AF3, af4, AF4, af5, AF5, af6, AF6, af7, AF7, af8, AF8, afn1, AFN1, an1, AN1, as0, AS0, as1, AS1, as2, AS2, as3, AS3, as4, AS4, as5, AS5, as6, AS6, as7, AS7, as8, AS8, asn1, ASN1, b0, B0, b1, B1, b2, B2, b3, B3, b4, B4, b5, B5, b6, B6, b7, B7, b8, B8, bf0, BF0, bf1, BF1, bf2, BF2, bf3, BF3, bf4, BF4, bf5, BF5, bf6, BF6, bf7, BF7, bf8, BF8, bfn1, BFN1, bn1, BN1, bs0, BS0, bs1, BS1, bs2, BS2, bs3, BS3, bs4, BS4, bs5, BS5, bs6, BS6, bs7, BS7, bs8, BS8, bsn1, BSN1, c0, C0, c1, C1, c2, C2, c3, C3, c4, C4, c5, C5, c6, C6, c7, C7, c8, C8, c9, C9, cf0, CF0, cf1, CF1, cf2, CF2, cf3, CF3, cf4, CF4, cf5, CF5, cf6, CF6, cf7, CF7, cf8, CF8, cf9, CF9, cn1, CN1, cs0, CS0, cs1, CS1, cs2, CS2, cs3, CS3, cs4, CS4, cs5, CS5, cs6, CS6, cs7, CS7, cs8, CS8, cs9, CS9, csn1, CSN1, d0, D0, d1, D1, d2, D2, d3, D3, d4, D4, d5, D5, d6, D6, d7, D7, d8, D8, d9, D9, df0, DF0, df1, DF1, df2, DF2, df3, DF3, df4, DF4, df5, DF5, df6, DF6, df7, DF7, df8, DF8, df9, DF9, dfn1, DFN1, dn1, DN1, ds0, DS0, ds1, DS1, ds2, DS2, ds3, DS3, ds4, DS4, ds5, DS5, ds6, DS6, ds7, DS7, ds8, DS8, ds9, DS9, dsn1, DSN1, e0, E0, e1, E1, e2, E2, e3, E3, e4, E4, e5, E5, e6, E6, e7, E7, e8, E8, e9, E9, ef0, EF0, ef1, EF1, ef2, EF2, ef3, EF3, ef4, EF4, ef5, EF5, ef6, EF6, ef7, EF7, ef8, EF8, ef9, EF9, efn1, EFN1, en1, EN1, es0, ES0, es1, ES1, es2, ES2, es3, ES3, es4, ES4, es5, ES5, es6, ES6, es7, ES7, es8, ES8, es9, ES9, esn1, ESN1, f0, F0, f1, F1, f2, F2, f3, F3, f4, F4, f5, F5, f6, F6, f7, F7, f8, F8, f9, F9, ff0, FF0, ff1, FF1, ff2, FF2, ff3, FF3, ff4, FF4, ff5, FF5, ff6, FF6, ff7, FF7, ff8, FF8, ff9, FF9, ffn1, FFN1, fn1, FN1, fs0, FS0, fs1, FS1, fs2, FS2, fs3, FS3, fs4, FS4, fs5, FS5, fs6, FS6, fs7, FS7, fs8, FS8, fs9, FS9, fsn1, FSN1, g0, G0, g1, G1, g2, G2, g3, G3, g4, G4, g5, G5, g6, G6, g7, G7, g8, G8, g9, G9, gf0, GF0, gf1, GF1, gf2, GF2, gf3, GF3, gf4, GF4, gf5, GF5, gf6, GF6, gf7, GF7, gf8, GF8, gf9, GF9, gfn1, GFN1, gn1, GN1, gs0, GS0, gs1, GS1, gs2, GS2, gs3, GS3, gs4, GS4, gs5, GS5, gs6, GS6, gs7, GS7, gs8, GS8, gsn1, GSN1, REST`

    - ### Fields inherited from interface jm.constants.Frequencies

      `FRQ`

    - ### Fields inherited from interface jm.constants.Tunings

      `EQUAL, JUST, MEAN, PYTHAGOREAN`

    - ### Fields inherited from interface jm.constants.Volumes

      `F, FF, FFF, FORTE, FORTISSIMO, MEZZO_FORTE, MEZZO_PIANO, MF, MP, P, PIANISSIMO, PP, PPP, SILENT`

    - ### Fields inherited from interface jm.constants.Panning

      `PAN_CENTER, PAN_CENTRE, PAN_LEFT, PAN_RIGHT`

    - ### Fields inherited from interface jm.constants.ProgramChanges

      `AAH, ABASS, AC_GUITAR, ACCORDION, ACOUSTIC_BASS, ACOUSTIC_GRAND, ACOUSTIC_GUITAR, AGOGO, AHHS, ALTO, ALTO_SAX, ALTO_SAXOPHONE, APPLAUSE, ATMOSPHERE, BAG_PIPES, BAGPIPE, BAGPIPES, BANDNEON, BANJO, BARI, BARI_SAX, BARITONE, BARITONE_SAX, BARITONE_SAXOPHONE, BASS, BASSOON, BELL, BELLS, BIRD, BOTTLE, BOTTLE_BLOW, BOWED_GLASS, BRASS, BREATH, BREATHNOISE, BRIGHT_ACOUSTIC, BRIGHTNESS, CALLOPE, CELESTA, CELESTE, CELLO, CGUITAR, CHARANG, CHIFFER, CHIFFER_LEAD, CHOIR, CHURCH_ORGAN, CLAR, CLARINET, CLAV, CLAVINET, CLEAN_GUITAR, CONCERTINA, CONTRA_BASS, CONTRABASS, CRYSTAL, CYMBAL, DGUITAR, DIST_GUITAR, DISTORTED_GUITAR, DOUBLE_BASS, DROPS, DRUM, DX_EPIANO, EBASS, ECHO, ECHO_DROP, ECHO_DROPS, ECHOS, EL_BASS, EL_GUITAR, ELECTRIC_BASS, ELECTRIC_GRAND, ELECTRIC_GUITAR, ELECTRIC_ORGAN, ELECTRIC_PIANO, ELPIANO, ENGLISH_HORN, EPIANO, EPIANO2, FANTASIA, FBASS, FIDDLE, FINGERED_BASS, FLUTE, FRENCH_HORN, FRET, FRET_NOISE, FRETLESS, FRETLESS_BASS, FRETNOISE, FRETS, GLOCK, GLOCKENSPIEL, GMSAW_WAVE, GMSQUARE_WAVE, GOBLIN, GT_HARMONICS, GUITAR, GUITAR_HARMONICS, GUNSHOT, HALO, HALO_PAD, HAMMOND_ORGAN, HARMONICA, HARMONICS, HARP, HARPSICHORD, HELICOPTER, HONKYTONK, HONKYTONK_PIANO, HORN, ICE_RAIN, ICERAIN, JAZZ_GUITAR, JAZZ_ORGAN, JGUITAR, KALIMBA, KOTO, MARIMBA, METAL_PAD, MGUITAR, MUSIC_BOX, MUTED_GUITAR, MUTED_TRUMPET, NGUITAR, NYLON_GUITAR, OBOE, OCARINA, OGUITAR, OOH, OOHS, ORCHESTRA_HIT, ORGAN, ORGAN2, ORGAN3, OVERDRIVE_GUITAR, PAD, PAN_FLUTE, PANFLUTE, PBASS, PHONE, PIANO, PIANO_ACCORDION, PIC, PICC, PICCOLO, PICKED_BASS, PIPE_ORGAN, PIPES, PITZ, PIZZ, PIZZICATO_STRINGS, POLY_SYNTH, POLYSYNTH, PSTRINGS, RAIN, RECORDER, REED_ORGAN, REVERSE_CYMBAL, RHODES, SAW, SAWTOOTH, SAX, SAXOPHONE, SBASS, SEA, SEASHORE, SFX, SGUITAR, SHAKUHACHI, SHAMISEN, SHANNAI, SITAR, SLAP, SLAP_BASS, SLAP_BASS_1, SLAP_BASS_2, SLOW_STRINGS, SOLO_VOX, SOP, SOPRANO, SOPRANO_SAX, SOPRANO_SAXOPHONE, SOUNDEFFECTS, SOUNDFX, SOUNDTRACK, SPACE_VOICE, SQUARE, STAR_THEME, STEEL_DRUM, STEEL_DRUMS, STEEL_GUITAR, STEELDRUM, STEELDRUMS, STR, STREAM, STRING_ENSEMBLE_1, STRING_ENSEMBLE_2, STRINGS, SWEEP, SWEEP_PAD, SYN_CALLIOPE, SYNTH_BASS, SYNTH_BASS_1, SYNTH_BASS_2, SYNTH_BRASS, SYNTH_BRASS_1, SYNTH_BRASS_2, SYNTH_CALLIOPE, SYNTH_DRUM, SYNTH_DRUMS, SYNTH_STRINGS, SYNTH_STRINGS_1, SYNTH_STRINGS_2, SYNVOX, TAIKO, TELEPHONE, TENOR, TENOR_SAX, TENOR_SAXOPHONE, THUMB_PIANO, THUNDER, TIMP, TIMPANI, TINKLE_BELL, TOM, TOM_TOM, TOM_TOMS, TOMS, TREMOLO, TREMOLO_STRINGS, TROMBONE, TRUMPET, TUBA, TUBULAR_BELL, TUBULAR_BELLS, VIBES, VIBRAPHONE, VIOLA, VIOLIN, VIOLIN_CELLO, VOICE, VOX, WARM_PAD, WHISTLE, WIND, WOODBLOCK, WOODBLOCKS, XYLOPHONE`

    - ### Fields inherited from interface jm.constants.DrumMap

      `ACOUSTIC_BASS_DRUM, ACOUSTIC_SNARE, BASS_DRUM_1, CABASA, CHINESE_CYMBAL, CLAVES, CLOSED_HI_HAT, COWBELL, CRASH_CYMBAL_1, CRASH_CYMBAL_2, ELECTRIC_SNARE, HAND_CLAP, HI_BONGO, HI_MID_TOM, HI_WOOD_BLOCK, HIGH_AGOGO, HIGH_FLOOR_TOM, HIGH_TIMBALE, HIGH_TOM, LONG_GUIRO, LONG_WHISTLE, LOW_AGOGO, LOW_BONGO, LOW_CONGA, LOW_FLOOR_TOM, LOW_MID_TOM, LOW_TIMBALE, LOW_TOM, LOW_WOOD_BLOCK, MARACAS, MUTE_CUICA, MUTE_HI_CONGA, MUTE_TRIANGLE, OPEN_CUICA, OPEN_HI_CONGA, OPEN_HI_HAT, OPEN_TRIANGLE, PEDAL_HI_HAT, RIDE_BELL, RIDE_CYMBAL_1, RIDE_CYMBAL_2, SHORT_GUIRO, SHORT_WHISTLE, SIDE_STICK, SPLASH_CYMBAL, TAMBOURINE, VIBRASLAP`

    - ### Fields inherited from interface jm.constants.Scales

      `AEOLIAN_SCALE, BLUES_SCALE, CHROMATIC_SCALE, DIATONIC_MINOR_SCALE, DORIAN_SCALE, HARMONIC_MINOR_SCALE, INDIAN_SCALE, LYDIAN_SCALE, MAJOR_SCALE, MELODIC_MINOR_SCALE, MINOR_SCALE, MIXOLYDIAN_SCALE, NATURAL_MINOR_SCALE, PENTATONIC_SCALE, TURKISH_SCALE`

    - ### Fields inherited from interface jm.constants.Waveforms

      `COSINE_WAVE, PULSE_WAVE, SABERSAW_WAVE, SAWDOWN_WAVE, SAWTOOTH_WAVE, SINE_WAVE, SQUARE_WAVE, TRIANGLE_WAVE`

    - ### Fields inherited from interface jm.constants.Noises

      `BROWN_NOISE, FRACTAL_NOISE, SMOOTH_NOISE, STEP_NOISE, WHITE_NOISE`

    - ### Fields inherited from interface jm.constants.Alignments

      `AFTER, BEFORE, CENTER_ALIGN, CENTER_ON_END, CENTER_ON_START, CENTRE_ALIGN, CENTRE_ON_END, CENTRE_ON_START, END_ON_CENTER, END_ON_CENTRE, END_TOGETHER, START_ON_CENTER, START_ON_CENTRE, START_TOGETHER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SampleIn(Instrument inst, java.lang.String fileName)` Read in the data from the specified file as input to an audio ren dering process.
    `SampleIn(Instrument inst, java.lang.String fileName, boolean cache)` Read in the data from the specified file as input to an audio ren dering process.
    `SampleIn(Instrument inst, java.lang.String fileName, boolean cache, boolean wholeFile)` Read in the data from the specified file as input to an audio ren dering process.
    `SampleIn(Instrument inst, java.lang.String fileName, boolean cache, boolean wholeFile, int loop)` Read in the data from the specified file as input to an audio ren dering process.
    `SampleIn(Instrument inst, java.lang.String fileName, boolean cache, boolean wholeFile, int loop, int loopStart, int loopEnd)` Read in the data from the specified file as input to an audio ren dering process.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `build()` Set up for the next note rendering.
    `void` | `finalize()`
    `int` | `getBitResolution()` Provide the bit size of the current audio file.
    `int` | `getBits()` Provide the sampleSize value of this file as the number of bytes per sample.
    `int` | `getNumOfBytes()` Return the length of the sample in Bytes.
    `int` | `getSampleSize()` Provide the sampleSize value of this file as the number of bytes per sample.
    `int` | `getWaveSize()` Returns the number of samples in one track of the file.
    `void` | `reset(int spot)` Set the sample read location back to the beginning of the file.
    `void` | `setLoop(int times)` Specify the number of times the looped section should repeat.
    `void` | `setLoopEnd(int newPos)` Specify the ending point for the audio loop.
    `void` | `setLoopStart(int newPos)` Specify the starting point for the audio loop.
    `void` | `setWholeFile(boolean val)` Specify weather or not to read the whole file before finishing.
    `int` | `work(float[] buffer)` Read in samples from the file and pass it down the audio chain.

    - ### Methods inherited from class jm.audio.AudioObject

      `buildNext, getChannels, getSampleRate, newNote, nextWork`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SampleIn

          public SampleIn(Instrument inst,
                  java.lang.String fileName)

      Read in the data from the specified file as input to an audio ren dering process.
      Parameters:
        `fileName` - - The name of the file to be used.
        `fileName` - - The name of the file to be used.

    - #### SampleIn

          public SampleIn(Instrument inst,
                  java.lang.String fileName,
                  boolean cache)

      Read in the data from the specified file as input to an audio ren dering process.
      Parameters:
        `inst` - - The instrument for which this audio object is a part.
        `fileName` - - The name of the file to be used.
        `cache` - - A flag to say weather or not to hold sample data in memory.

    - #### SampleIn

          public SampleIn(Instrument inst,
                  java.lang.String fileName,
                  boolean cache,
                  boolean wholeFile)

      Read in the data from the specified file as input to an audio ren dering process.
      Parameters:
        `inst` - - The instrument for which this audio object is a part.
        `fileName` - - The name of the file to be used.
        `cache` - - A flag to say weather or not to hold sample data in memory.
        `wholeFile` - - A flag to indicate weather the file should be played all the way through, regardless of the note duration.

    - #### SampleIn

          public SampleIn(Instrument inst,
                  java.lang.String fileName,
                  boolean cache,
                  boolean wholeFile,
                  int loop)

      Read in the data from the specified file as input to an audio ren dering process.
      Parameters:
        `inst` - - The instrument for which this audio object is a part.
        `fileName` - - The name of the file to be used.
        `cache` - - A flag to say weather or not to hold sample data in memory.
        `wholeFile` - - A flag to indicate weather the file should be played all the way through, regardless of the note duration.
        `loop` - - The number of time to reapeatedly playback the file (0 is no loop, -1 is infinite).

    - #### SampleIn

          public SampleIn(Instrument inst,
                  java.lang.String fileName,
                  boolean cache,
                  boolean wholeFile,
                  int loop,
                  int loopStart,
                  int loopEnd)

      Read in the data from the specified file as input to an audio ren dering process.
      Parameters:
        `inst` - - The instrument for which this audio object is a part.
        `fileName` - - The name of the file to be used.
        `cache` - - A flag to say weather or not to hold sample data in memory.
        `wholeFile` - - A flag to indicate weather the file should be played all the way through, regardless of the note duration.
        `loop` - - The number of time to reapeatedly playback the file (0 is no loop, -1 is infinite).
        `loopStart` - - The sample from which to start looping.
        `loopEnd` - - The sample at which to end the loop.

  - ### Method Detail

    - #### finalize

          public void finalize()

      Overrides:
        `finalize` in class `java.lang.Object`

    - #### build

          public void build()

      Set up for the next note rendering.
      Overrides:
        `build` in class `AudioObject`

    - #### reset

          public void reset(int spot)

      Set the sample read location back to the beginning of the file.

    - #### work

          public int work(float[] buffer)
                   throws AOException

      Read in samples from the file and pass it down the audio chain. The input to this method is bogus as it is always the first in the audio chain and therefore receives no input.
      Specified by:
        `work` in class `AudioObject`
      Parameters:
        `input` - bogus input here, necessarily included to fit in with the general audio object design.
      Throws:
        `AOException`

    - #### setWholeFile

          public void setWholeFile(boolean val)

      Specify weather or not to read the whole file before finishing. If not, then the note length will determine the amount of data read.
      Parameters:
        `val` - - The new boolean value.

    - #### getWaveSize

          public int getWaveSize()

      Returns the number of samples in one track of the file. i.e., the wave length, or size.

    - #### getNumOfBytes

          public int getNumOfBytes()

      Return the length of the sample in Bytes.

    - #### getBits

          public int getBits()

      Provide the sampleSize value of this file as the number of bytes per sample. Deprictaed in favour of getSampleSize.
      Returns:
        The number of bytes per sample, 1 = 8 bit, 2 = 16 bit, etc.

    - #### getSampleSize

          public int getSampleSize()

      Provide the sampleSize value of this file as the number of bytes per sample.
      Returns:
        The number of bytes per sample, 1 = 8 bit, 2 = 16 bit, etc.

    - #### getBitResolution

          public int getBitResolution()

      Provide the bit size of the current audio file.
      Returns:
        The bit depth, 8, 16, 24, or 32.

    - #### setLoopStart

          public void setLoopStart(int newPos)

      Specify the starting point for the audio loop. The number of loops will need to be set to be greater than 0 for the loop to go. Use setLoop() to specify the number.
      Parameters:
        `newPos` - The loop start location in samples

    - #### setLoopEnd

          public void setLoopEnd(int newPos)

      Specify the ending point for the audio loop. The number of loops will need to be set to be greater than 0 for the loop to go. Use setLoop() to specify the number.
      Parameters:
        `newPos` - The loop start location in samples

    - #### setLoop

          public void setLoop(int times)

      Specify the number of times the looped section should repeat. The number of loops will need to be set to be greater than 0 for the loop to go, and 0 is no loop, -1 is infinite loops until the note ends.
      Parameters:
        `times` - The number of times the looped section should play.