diff --git a/.gitattributes b/.gitattributes index ee7cbc1b1d5db042f64480e81f5db9217fa4bcda..ea1c0947c2256689b4f9c86ad634e268cb8f7d71 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,3 @@ *,ffb gitlab-language=bbcbasic linguist-language=bbcbasic linguist-detectable=true c/** gitlab-language=c linguist-language=c linguist-detectable=true -**/c/** gitlab-language=c linguist-language=c linguist-detectable=true h/** gitlab-language=c linguist-language=c linguist-detectable=true diff --git a/SetVolumes/c/setvolumes b/SetVolumes/c/setvolumes deleted file mode 100644 index 318a60fb32d4b860107695ee0909c3cc6aeab05d..0000000000000000000000000000000000000000 --- a/SetVolumes/c/setvolumes +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 1998 Acorn Computers Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/*---------------------------------------------------------------------------*/ -/* File: c.setvolumes */ -/* Purpose: App to set the volume levels on the Codec, via SoundCtrl. */ -/* Volumes are stored in text file <Choices$Write>.Sound.Sound */ -/* Author: Richard Leggett */ -/* History: 05-Feb-98: RML: Begun. */ -/*---------------------------------------------------------------------------*/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include "swis.h" - -#define NumberOfChannels 8 -#define SoundCtrl_SetVolume 0x50002 -#define SoundCtrl_ChannelInfo 0x50004 -#define Flag_LeftMuted 1u<<0 -#define Flag_RightMuted 2u<<1 -#define ChoicesFile "<Choices$Write>.Sound.Sound" - - -/* SndSetup numbers channels from 0 to NumberOfChannels. The toolbox ID of the slider - gadget equals this channel number. However, SoundCtrl adopts different numbering, so - the array channel_no maps between SndSetup and SoundCtrl's numbering. The array - channel_name contains the name of each channel as specified in the Sound configuration - file in <Choices$Write>.Sound. */ - -static char *channel_name[NumberOfChannels] = { "Master", "System", "CD", "Line", - "Mic", "Capture", "Playback", "Wavetable" }; -static int channel_no[NumberOfChannels] = { 0, 11, 2, 1, - 5, 8, 12, 10 }; -static int min_volume[NumberOfChannels]; - - -/*---------------------------------------------------------------------------* - * sound_set_volume * - * * - * Set the volume for a given channel. * - * * - * In: channel = channel whose volume we wish to change. This number is our * - * internal number (between 0 and 7), rather than the channel * - * number held by SoundCtrl. The channel_no array maps between * - * the two. * - * volume = volume, in db, times 10. * - *---------------------------------------------------------------------------*/ - -void sound_set_volume(int channel, int volume) -{ - float db; - int flags; - - /* If volume is minimum value, then mute instead */ - if (db == min_volume[channel]) flags = Flag_LeftMuted + Flag_RightMuted; - else flags = 0; - - /* Convert a volume integer (db*10 eg. -125 means -12.5db) into 32bit with 16bit fraction */ - db = (1<<16) * ((float)volume) / 10; - - /* Set the volume */ - _swix(SoundCtrl_SetVolume, _INR(0,4), 0, channel_no[channel], 0, (int)db, (int)db); -} - - -/*---------------------------------------------------------------------------* - * main * - *---------------------------------------------------------------------------*/ - -int main(void) -{ - FILE *fp; - char *item; - char *value; - char buffer[256]; - int n, colon, more=1; - int min_i, max_i, step_i; - float min_f, max_f, step_f; - - /* Read in min, max & volume settings for the channels */ - for (n=0; n<NumberOfChannels; n++) - { - /* Read the min, max and step of the volume for this channel */ - _swix(SoundCtrl_ChannelInfo, _INR(0,1)|_OUTR(4,6), - 0, channel_no[n], &min_i, &max_i, &step_i); - - /* Convert the values we read back (32bit, 16bit for fraction) into floats */ - min_f = 10 * ((float)min_i) / (1<<16); - max_f = 10 * ((float)max_i) / (1<<16); - step_f = 10 * ((float)step_i) / (1<<16); - min_volume[n] = (int)min_f; - } - - /* Now open the choices file */ - fp = fopen(ChoicesFile, "r"); - if (!fp) return 0; - - while (more) - { - /* Get next string */ - more = (int)fgets(buffer, 256, fp); - if (more) - { - /* Check for a colon in this line */ - colon = strstr(buffer, ":") - buffer; - if (colon>0) - { - /* Break the string into item eg. ("Master") and value (eg. "-45") */ - buffer[colon] = 0; - item = buffer; - value = item + colon + 1; - value[strlen(value)-1] = 0; - - /* Is this item one of the names of channels? */ - for (n=0; n<NumberOfChannels; n++) - { - if (strcmp(channel_name[n], item)==0) - { - /* The item corresponds to channel n in our array */ - int v = (int) (atof(value)*10); - /* Update slider and set volume */ - sound_set_volume(n, v); - } - } - } - } - } - - fclose(fp); - - return 0; -}