Copyright (c) Hyperion Entertainment and contributors.
AmigaOS Manual: Sounds: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
mNo edit summary |
Added recording example |
||
| Line 43: | Line 43: | ||
= Recording = |
= Recording = |
||
== Program 17. Record.rexx == |
|||
<syntaxhighlight lang="rexx"> |
|||
/* |
|||
** Record an AIFF audio file |
|||
*/ |
|||
fileName = 'recording.aiff' /* Audio file name */ |
|||
duration = 5 /* Recording time (seconds) */ |
|||
frequency = 22050 /* Sampling frequency */ |
|||
unit = 0 /* Use device unit 0 */ |
|||
/* Recording properties */ |
|||
properties = 'TYPE=AIFF/' |
|||
properties = properties || 'SECONDS=' || duration || '/' |
|||
properties = properties || 'FREQUENCY=' || frequency || '/' |
|||
properties = properties || 'BITS=16' || '/' |
|||
properties = properties || 'CHANNELS=2' || '/' |
|||
properties = properties || 'UNIT=0' |
|||
/* Open audio stream */ |
|||
IF ( ~OPEN( 'audio', 'AUDIO:' || properties, 'R' ) ) THEN DO |
|||
SAY 'Failed to open audio stream.' |
|||
EXIT 0 |
|||
END |
|||
/* Open audio file */ |
|||
IF ( OPEN( 'file', fileName, 'W' ) ) THEN DO |
|||
/* Open console stream for printing */ |
|||
OPEN( 'console', '*', 'W' ) |
|||
/* Wait for enter */ |
|||
WRITECH( 'console', 'Press enter to start recording.' ) |
|||
PARSE PULL input |
|||
WRITECH( 'console', ' REC (∑)' || COPIES( d2c( 8 ), 2 ) ) |
|||
counter = 0 |
|||
/* Record */ |
|||
DO UNTIL ( EOF( 'audio' ) = 1 ) |
|||
buffer = READCH( 'audio', 4096 ) |
|||
WRITECH( 'file', buffer ) |
|||
/* Animate recording indicator */ |
|||
counter = counter + 1 |
|||
IF ( counter // 2 = 0 ) THEN DO |
|||
WRITECH( 'console', '∑' || d2c( 8 ) ) |
|||
counter = 0 |
|||
END |
|||
ELSE DO |
|||
WRITECH( 'console', 'x' || d2c( 8 ) ) |
|||
END |
|||
END |
|||
WRITECH( 'console', '∑' ) |
|||
/* Close console stream */ |
|||
CLOSE( 'console ' ) |
|||
/* Close audio file */ |
|||
CLOSE( 'file' ) |
|||
SAY '' |
|||
SAY 'Recorded ' || duration || ' seconds to file "' || fileName || '".' |
|||
END |
|||
ELSE DO |
|||
SAY 'Failed to open file "' || fileName || '" for writing.' |
|||
END |
|||
/* Close stream */ |
|||
CLOSE( 'audio' ) |
|||
</syntaxhighlight> |
|||
Revision as of 19:26, 8 August 2017
Playing
Program 16. Play.rexx
/*
** Play an AIFF audio file
*/
fileName = 'recording.aiff' /* Audio file name */
frequency = 22050 /* Playback frequency */
volume = 100 /* Full volume */
unit = 0 /* Use device unit 0 */
/* Playback properties */
properties = 'TYPE=AIFF/'
properties = properties || 'FREQUENCY=' || frequency || '/'
properties = properties || 'VOLUME=' || volume || '/'
properties = properties || 'UNIT=0'
/* Open audio stream */
IF ( ~OPEN( 'audio', 'AUDIO:' || properties, 'W' ) ) THEN DO
SAY 'Failed to open audio stream.'
exit 0
END
/* Open audio file */
IF ( OPEN( 'file', fileName, 'R' ) ) THEN DO
/* Play */
DO UNTIL ( EOF( 'file' ) = 1 )
buffer = READCH( 'file', 4096 )
WRITECH( 'audio', buffer )
END
/* Close audio file */
CLOSE( 'file' )
END
ELSE DO
SAY 'Failed to open file "' || fileName || '".'
END
/* Close stream */
CLOSE( 'audio' )
Recording
Program 17. Record.rexx
/*
** Record an AIFF audio file
*/
fileName = 'recording.aiff' /* Audio file name */
duration = 5 /* Recording time (seconds) */
frequency = 22050 /* Sampling frequency */
unit = 0 /* Use device unit 0 */
/* Recording properties */
properties = 'TYPE=AIFF/'
properties = properties || 'SECONDS=' || duration || '/'
properties = properties || 'FREQUENCY=' || frequency || '/'
properties = properties || 'BITS=16' || '/'
properties = properties || 'CHANNELS=2' || '/'
properties = properties || 'UNIT=0'
/* Open audio stream */
IF ( ~OPEN( 'audio', 'AUDIO:' || properties, 'R' ) ) THEN DO
SAY 'Failed to open audio stream.'
EXIT 0
END
/* Open audio file */
IF ( OPEN( 'file', fileName, 'W' ) ) THEN DO
/* Open console stream for printing */
OPEN( 'console', '*', 'W' )
/* Wait for enter */
WRITECH( 'console', 'Press enter to start recording.' )
PARSE PULL input
WRITECH( 'console', ' REC (∑)' || COPIES( d2c( 8 ), 2 ) )
counter = 0
/* Record */
DO UNTIL ( EOF( 'audio' ) = 1 )
buffer = READCH( 'audio', 4096 )
WRITECH( 'file', buffer )
/* Animate recording indicator */
counter = counter + 1
IF ( counter // 2 = 0 ) THEN DO
WRITECH( 'console', '∑' || d2c( 8 ) )
counter = 0
END
ELSE DO
WRITECH( 'console', 'x' || d2c( 8 ) )
END
END
WRITECH( 'console', '∑' )
/* Close console stream */
CLOSE( 'console ' )
/* Close audio file */
CLOSE( 'file' )
SAY ''
SAY 'Recorded ' || duration || ' seconds to file "' || fileName || '".'
END
ELSE DO
SAY 'Failed to open file "' || fileName || '" for writing.'
END
/* Close stream */
CLOSE( 'audio' )