Ortografía: «sólo»

La palabra «sólo» aparece en todo el texto escrita con tilde. El uso de esta tilde se recomendó opcional en la última revisión de la Ortografía de las Academias de la Lengua Española, siguiendo el camino de simplificación de la ortografía de otras instituciones de la lengua. Sugiero que, al encajar con el estilo ortográfico simplificado de sejo, se reemplace por «solo» en el resto del libro. Pueden encontrarse artículos lingüísticos divulgativos y contextuales a favor de esta decisión normativa en la descripción de un experimento que realicé:

https://addons.mozilla.org/es/firefox/addon/dia-crítica/
This commit is contained in:
Roberto MF 2022-01-26 02:26:40 +01:00
parent 5f35851a56
commit 1215ecc0d2
9 changed files with 47 additions and 47 deletions

View File

@ -25,7 +25,7 @@ también vamos a saltar directo a nuestros primeros programas simples para demos
en esta sección vamos a empezar a explorar los aspectos visuales de la computadora varvara: ¡hablamos sobre los aspectos fundamentales del dispositivo de pantalla para que podamos empezar a dibujar en ella!
también discutiremos el trabajo con cortos (2 bytes) además de los números de un sólo byte en uxntal.
también discutiremos el trabajo con cortos (2 bytes) además de los números de un solo byte en uxntal.
{tutorial de uxn día 2}

View File

@ -257,7 +257,7 @@ podemos abordar este problema bien con alguna "manipulación de la pila ", o bie
también hay que tener en cuenta que lo haremos porque estamos tratando de llegar a una subrutina generalizada.
si sólo quisiéramos cubrir toda la pantalla con un sprite, ya tenemos todo el código necesario: sólo tendríamos que adaptar el límite vertical del bucle para que se corresponda con la altura de la pantalla, ¡y ya está!
si solo quisiéramos cubrir toda la pantalla con un sprite, ya tenemos todo el código necesario: solo tendríamos que adaptar el límite vertical del bucle para que se corresponda con la altura de la pantalla, ¡y ya está!
entonces podríamos pasar a la sección relativa de las paletas. sin embargo, lo que sigue puede ser interesante como una forma de ver un posible enfoque para escribir un código uxntal más complejo :)
@ -563,7 +563,7 @@ dejo que lo resuelvas :)
nota que esta subrutina tal como está requiere 24 bytes de memoria de programa más que la versión de la pila.
en nuestro caso eso no es un gran problema, pero es una buena manera de evaluar nuestras prioridades: código súper legible pero probablemente ineficiente (como esta última subrutina), código súper optimizado pero probablemente ilegible (código de sólo escritura, dicen), o algo en el medio.
en nuestro caso eso no es un gran problema, pero es una buena manera de evaluar nuestras prioridades: código súper legible pero probablemente ineficiente (como esta última subrutina), código súper optimizado pero probablemente ilegible (código de solo escritura, dicen), o algo en el medio.
## dibuja-fondo

View File

@ -20,8 +20,8 @@ personalmente, veo en ella las siguientes virtudes:
* hecha para el largo plazo, conforme a la escala humana
* hecha para aplicaciones audiovisuales interactivas
* arquitectura y set de instrucciones simple (¡sólo 32 instrucciones!)
* primero-offline: funciona localmente y sólo necesitas unos pocos archivos de documentación para avanzar
* arquitectura y set de instrucciones simple (¡solo 32 instrucciones!)
* primero-offline: funciona localmente y solo necesitas unos pocos archivos de documentación para avanzar
* ámbito de práctica y experimentación de computación dentro de límites
* ya portada a plataformas de computación actuales y de varios años de antigüedad
@ -84,7 +84,7 @@ también podemos escribirla de muchas otras maneras, por ejemplo:
48 3 5 + 2 / +
```
¡asegúrate de que éstas expresiones funcionan y son equivalentes! sólo debes seguir estas reglas, leyendo de izquierda a derecha:
¡asegúrate de que éstas expresiones funcionan y son equivalentes! solo debes seguir estas reglas, leyendo de izquierda a derecha:
* si es un número, empujarlo a la pila
* si es un operador, tomar dos elementos de la parte superior de la pila, aplicar la operación y empujar el resultado en la pila.
@ -329,7 +329,7 @@ puedes ver los valores hexadecimales de los caracteres ascii en la siguiente tab
observe que los números literales que escribimos, 0100, 18 y 68, se escriben en hexadecimal utilizando 4 dígitos correspondientes a dos bytes, o 2 dígitos correspondientes a un byte.
en uxntal sólo podemos escribir números de 2 ó 4 dígitos hexadecimales. si, por ejemplo, sólo nos interesara escribir un único dígito hexadecimal, tendríamos que incluir un 0 a su izquierda.
en uxntal solo podemos escribir números de 2 ó 4 dígitos hexadecimales. si, por ejemplo, solo nos interesara escribir un único dígito hexadecimal, tendríamos que incluir un 0 a su izquierda.
## rom ensamblada
@ -415,11 +415,11 @@ el siguiente tendría el mismo comportamiento que el programa de arriba, pero us
|0100 #6818 DEO
```
nota que sólo puedes usar esta runa para escribir los contenidos de uno o dos bytes (dos o cuatro nibbles).
nota que solo puedes usar esta runa para escribir los contenidos de uno o dos bytes (dos o cuatro nibbles).
importante: recuerda que esta runa (y las otras con la palabra "literal" en su nombre) es un atajo para la instrucción LIT. esto implica que uxn empujará estos valores hacia abajo en la pila. esto puede prestarse a confusión en algunos casos :)
si sólo queremos tener un número específico en la memoria principal, sin empujarlo a la pila, simplemente escribiríamos el número tal cual, "crudo". esta es la forma en que lo hicimos en nuestros primeros programas de arriba.
si solo queremos tener un número específico en la memoria principal, sin empujarlo a la pila, simplemente escribiríamos el número tal cual, "crudo". esta es la forma en que lo hicimos en nuestros primeros programas de arriba.
## runa de caracter "crudo" o "raw"
@ -454,7 +454,7 @@ por ejemplo, para el dispositivo de consola, la manera en que verías esto escri
|10 @Consola [ &vector $2 &lee $1 &pad $5 &escribe $1 &error $1 ]
```
podemos ver un pad absoluto a la dirección 10, que asigna lo siguiente a esa dirección. dado que la dirección consiste en un sólo byte, uxnasm asume que es para el espacio de memoria de entrada/salida o la página cero.
podemos ver un pad absoluto a la dirección 10, que asigna lo siguiente a esa dirección. dado que la dirección consiste en un solo byte, uxnasm asume que es para el espacio de memoria de entrada/salida o la página cero.
luego vemos la etiqueta @Consola: ésta etiqueta va a corresponder a la dirección 10.
@ -517,7 +517,7 @@ podemos definir un macro llamado EMIT que tomará de la pila un byte correspondi
%EMIT { .Consola/escribe DEO } ( caracter -- )
```
para llamar a un macro, sólo escribimos su nombre:
para llamar a un macro, solo escribimos su nombre:
```
( imprime caracter h )

View File

@ -4,7 +4,7 @@ tutorial de uxn: día 2, la pantalla
en esta sección vamos a empezar a explorar los aspectos visuales de la computadora varvara ¡hablamos sobre los aspectos fundamentales del dispositivo de pantalla para que podamos empezar a dibujar en ella!
también discutiremos el trabajo con el modo corto o "short" (2 bytes) junto a los de un sólo byte en uxntal.
también discutiremos el trabajo con el modo corto o "short" (2 bytes) junto a los de un solo byte en uxntal.
si todavía no lo has hecho te recomiendo que leas las sección anterior en el {tutorial de uxn día 1}
@ -16,7 +16,7 @@ antes de pasar a dibujar en la pantalla, tenemos que hablar de bytes y cortos :)
aunque uxn es un ordenador que trabaja de forma nativa con palabras de 8 bits (bytes), nos encontramos en varias ocasiones que la cantidad de datos que es posible almacenar en un byte no es suficiente.
cuando utilizamos 8 bits, podemos representar 256 valores diferentes (2 a la potencia de 8). en cualquier momento dado, un byte almacenará sólo uno de esos posibles valores.
cuando utilizamos 8 bits, podemos representar 256 valores diferentes (2 a la potencia de 8). en cualquier momento dado, un byte almacenará solo uno de esos posibles valores.
en la sección anterior, hablamos de un caso en el que esta cantidad no es suficiente en uxn: el número de bytes que alberga la memoria principal, 65536.
@ -166,7 +166,7 @@ ignoraremos los primeros elementos por el momento y nos centraremos en los compo
## colores del sistema
el dispositivo de pantalla varvara sólo puede mostrar un máximo de cuatro colores a la vez.
el dispositivo de pantalla varvara solo puede mostrar un máximo de cuatro colores a la vez.
estos cuatro colores se denominan color 0, color 1, color 2 y color 3.
@ -205,7 +205,7 @@ prueba cambiar los valores del color 0, es decir, la primera columna, y mira lo
# el dispositivo de pantalla
como recapitulación: mencionamos que el dispositivo de pantalla sólo puede mostrar cuatro colores diferentes en un momento dado y que estos colores están numerados del 0 al 3. fijamos estos colores usando los puertos correspondientes en el dispositivo del sistema.
como recapitulación: mencionamos que el dispositivo de pantalla solo puede mostrar cuatro colores diferentes en un momento dado y que estos colores están numerados del 0 al 3. fijamos estos colores usando los puertos correspondientes en el dispositivo del sistema.
¡ahora hablemos del dispositivo de pantalla y empecemos a usarlo!
@ -341,7 +341,7 @@ recuerda que puedes usar F1 para cambiar de nivel de zoom y F3 para hacer captur
los valores que establecemos en las coordenadas x e `y` permanecen ahí hasta que los sobrescribimos.
Por ejemplo, podemos dibujar múltiples píxeles en una línea horizontal, estableciendo la coordenada `y` sólo una vez:
Por ejemplo, podemos dibujar múltiples píxeles en una línea horizontal, estableciendo la coordenada `y` solo una vez:
```
( establecer coordenadas y )
@ -483,7 +483,7 @@ el dispositivo de pantalla varvara nos permite utilizar y dibujar tiles de 8x8 p
hay dos modos posibles: 1bpp (1 bit por píxel) y 2bpp (2 bits por píxel).
los mosaicos o "tiles" de 1bpp usan dos colores y se codifican usando 8 bytes; usar un bit por píxel significa que sólo podemos codificar si ese píxel está usando un color o el otro.
los mosaicos o "tiles" de 1bpp usan dos colores y se codifican usando 8 bytes; usar un bit por píxel significa que solo podemos codificar si ese píxel está usando un color o el otro.
los tiles de 2bpp utilizan cuatro colores y se codifican utilizando 16 bytes; el uso de dos bits por píxel significa que podemos codificar cuál de los cuatro colores disponibles tiene el píxel.
@ -1019,7 +1019,7 @@ por ejemplo, el siguiente código cambiaría la pantalla a una resolución de 64
#01e0 .Pantalla/alto DEO2 ( altura de 480 )
```
tengamos en cuenta que esto sólo funcionaría para las instancias del emulador varvara en las que el tamaño de la pantalla puede cambiarse realmente, por ejemplo, porque la pantalla virtual es una ventana.
tengamos en cuenta que esto solo funcionaría para las instancias del emulador varvara en las que el tamaño de la pantalla puede cambiarse realmente, por ejemplo, porque la pantalla virtual es una ventana.
¡sería importante tener en cuenta los aspectos de la capacidad de respuesta que se discuten a continuación, para los casos en los que no podemos cambiar el tamaño de la pantalla!

View File

@ -79,7 +79,7 @@ cada una de estas subrutinas terminará con la instrucción BRK, para que puedan
para ilustrar ese comportamiento, leamos el siguiente programa.
este utiliza el procedimiento de dibujo de sprites que probamos el día anterior, pero hace que ocurra sólo cuando se pulsa una tecla. al principio, la pantalla está vacía, y cuando pulsamos una tecla, se dibuja un cuadrado:
este utiliza el procedimiento de dibujo de sprites que probamos el día anterior, pero hace que ocurra solo cuando se pulsa una tecla. al principio, la pantalla está vacía, y cuando pulsamos una tecla, se dibuja un cuadrado:
```
( hola-teclado.tal )
@ -193,7 +193,7 @@ AND 0000 0000 ( falso )
0000 0000 ( falso )
```
como estos indicadores sólo utilizan el bit menos significativo (el bit más a la derecha) para codificar su valor, un AND a nivel de bits es equivalente a un AND lógico convencional.
como estos indicadores solo utilizan el bit menos significativo (el bit más a la derecha) para codificar su valor, un AND a nivel de bits es equivalente a un AND lógico convencional.
### OR
@ -216,11 +216,11 @@ OR 0000 0000 ( falso )
0000 0001 ( verdadero )
```
sólo cuando ambas banderas sean falsas, la bandera resultante será falsa.
solo cuando ambas banderas sean falsas, la bandera resultante será falsa.
### EOR
un "exclusive-OR", o también "o-exclusivo", es una operación lógica que tiene un resultado de verdadero sólo cuando una u otra entrada es verdadera. si ambas entradas son verdaderas, o si ambas entradas son falsas, el resultado es falso.
un "exclusive-OR", o también "o-exclusivo", es una operación lógica que tiene un resultado de verdadero solo cuando una u otra entrada es verdadera. si ambas entradas son verdaderas, o si ambas entradas son falsas, el resultado es falso.
basándose en este comportamiento, esta instrucción puede utilizarse para invertir el valor de una bandera utilizando un valor especial en el que el/los bit(s) que queremos invertir se pongan a 1. este tipo de valores se llaman máscaras.
@ -299,7 +299,7 @@ y finalmente, para referirse a las etiquetas dentro de nuestro código uxntal, t
¡unamos todo esto!
la siguiente subrutina en-controlador ilustra el uso de los saltos, dibujando nuestro sprite sólo cuando la tecla que se pulsó fue '1':
la siguiente subrutina en-controlador ilustra el uso de los saltos, dibujando nuestro sprite solo cuando la tecla que se pulsó fue '1':
```
@en-controlador
@ -466,7 +466,7 @@ finalmente podemos proceder a la comparación y al AND:
AND ( aplica un AND a las banderas en la pila y empuja el resultado en la pila )
```
terminando con una pila que sólo tiene el resultado:
terminando con una pila que solo tiene el resultado:
```
resultado <- arriba
@ -484,7 +484,7 @@ AND ( aplica un AND a las banderas en la pila y empuja el resultado en la pila )
el primer código se ensambla en 13 bytes y éste se ensambla en 12 bytes. quizá no haya demasiada diferencia en ese aspecto.
sin embargo, una ventaja más significativa es que esta nueva rutina ahora necesita su entrada empujada hacia abajo en la pila sólo al principio.
sin embargo, una ventaja más significativa es que esta nueva rutina ahora necesita su entrada empujada hacia abajo en la pila solo al principio.
en el caso que acabamos de discutir la entrada es la tecla que se presiona, pero podríamos fácilmente tener como entrada cualquier otro valor de la pila.

View File

@ -198,7 +198,7 @@ esto significa que una salvedad de usar variables allí, es que para iniciarlas
### etiquetas en la página cero
las etiquetas para la página cero funcionarían igual que antes; sólo tenemos que especificar que están en la página cero con una almohadilla absoluta:
las etiquetas para la página cero funcionarían igual que antes; solo tenemos que especificar que están en la página cero con una almohadilla absoluta:
```
|0000 ( página cero )
@ -269,7 +269,7 @@ además, observe que en el caso de .pixel la dirección se refiere a la página
### un poco de práctica de manipulación en la pila
nota que las siguientes instrucciones también incrementarían .pixel/x, pero estableciendo su dirección sólo una vez:
nota que las siguientes instrucciones también incrementarían .pixel/x, pero estableciendo su dirección solo una vez:
```
.pixel/x DUP LDZ2 INC2 ROT STZ2
@ -290,9 +290,9 @@ una posible desventaja es que podría ser menos legible. pero una posible ventaj
otra posibilidad que tenemos en uxn y que podría ser más apropiada para las "variables locales", consiste en utilizar direcciones relativas.
de forma similar a las variables de la página cero, para direccionar estas variables sólo necesitamos un byte.
de forma similar a las variables de la página cero, para direccionar estas variables solo necesitamos un byte.
sin embargo, como estas direcciones se dan como desfases ("offsets") relativos y pueden considerarse positivas y negativas, sólo se pueden alcanzar si están dentro de los 256 bytes que rodean a la instrucción que las carga o almacena.
sin embargo, como estas direcciones se dan como desfases ("offsets") relativos y pueden considerarse positivas y negativas, solo se pueden alcanzar si están dentro de los 256 bytes que rodean a la instrucción que las carga o almacena.
### instrucciones: LDR, STR
@ -447,7 +447,7 @@ BRK
nítido, ¿no? :)
como esto es sólo un ejemplo para ilustrar un punto, hay algunas cosas que podrían ser optimizadas para hacer nuestro programa más pequeño y hay algunas cosas que podrían ser útiles pero fueron omitidas. por ejemplo, no hay un valor inicial para la coordenada x, o la coordenada `y` no se utiliza.
como esto es solo un ejemplo para ilustrar un punto, hay algunas cosas que podrían ser optimizadas para hacer nuestro programa más pequeño y hay algunas cosas que podrían ser útiles pero fueron omitidas. por ejemplo, no hay un valor inicial para la coordenada x, o la coordenada `y` no se utiliza.
### posibilidades adicionales
@ -684,7 +684,7 @@ para que ese recuento de fotogramas se limite a un rango correspondiente a nuest
cuando tenemos un número de fotogramas que corresponde a una potencia de dos, como se recomienda más arriba, podemos utilizar una "máscara AND" para realizar esta operación de módulo más rápidamente que si utilizáramos las macros MOD sugeridas anteriormente.
por ejemplo, si tenemos 8 fotogramas numerados del 0 al 7, podemos observar que esos números sólo requieren tres bits para ser representados.
por ejemplo, si tenemos 8 fotogramas numerados del 0 al 7, podemos observar que esos números solo requieren tres bits para ser representados.
para construir nuestra máscara AND, ponemos como 1 esos tres bits y 0 los demás:
@ -929,7 +929,7 @@ ten en cuenta que si quieres dividir la frecuencia a números que no son potenci
esto también puede ocurrir si tienes una animación que consta de un número de fotogramas que no es una potencia de 2 y utilizas una operación MOD normal para calcular el desfase al fotograma correspondiente.
la solución más sencilla para estos problemas sería utilizar un número de fotogramas de pequeño tamaño que sólo causara esos fallos de sobreflujo aproximadamente cada 18 minutos.
la solución más sencilla para estos problemas sería utilizar un número de fotogramas de pequeño tamaño que solo causara esos fallos de sobreflujo aproximadamente cada 18 minutos.
tendrías que adaptar el programa para que funcione con ese tamaño de cuentafotograma - ¡siento y pienso que es un buen ejercicio!

View File

@ -27,9 +27,9 @@ normalmente, en un ratón de tres botones, el primer botón es el izquierdo, el
utilizando un ratón de tres botones como este, tendríamos ocho valores posibles para el byte de estado, por ejemplo :
* 00 cuando no se pulsa ninguno de los botones
* 01 cuando sólo se pulsa el primer botón
* 02 cuando sólo se presiona el segundo botón
* 04 cuando sólo se pulsa el tercer botón
* 01 cuando solo se pulsa el primer botón
* 02 cuando solo se presiona el segundo botón
* 04 cuando solo se pulsa el tercer botón
nota que al igual que el dispositivo controlador, este sistema nos permite comprobar si hay varios botones pulsados a la vez:
@ -203,7 +203,7 @@ BRK
nótese que dibuja el puntero en primer plano y que utiliza 'a' en el nibble bajo del byte del sprite: esto implica que utilizará el color 2 para dibujar la forma del puntero y dibujará con transparencia el resto del tile. ( ver dibujar sprites de 1bpp en el {tutorial de uxn día 2} )
este modo de mezcla te permitiría dibujar cosas en el plano de fondo y que el puntero las cubra sólo con su forma, y no con todo el cuadrado del tile.
este modo de mezcla te permitiría dibujar cosas en el plano de fondo y que el puntero las cubra solo con su forma, y no con todo el cuadrado del tile.
¡te invito a que lo pruebes!
@ -688,7 +688,7 @@ NEQ ( pt: longitud conteo bandera / pr: )
,&bucle JCN ( pt: longitud conteo / pr: )
```
verás que aquí, como en el caso DIVk anterior, el DUP2 está ahí sólo para asegurarse de que la longitud y el recuento no se pierden al realizar NEQ.
verás que aquí, como en el caso DIVk anterior, el DUP2 está ahí solo para asegurarse de que la longitud y el recuento no se pierden al realizar NEQ.
por lo tanto, podríamos reemplazar DUP2 NEQ con NEQk:
@ -740,7 +740,7 @@ dibujar un sprite formado por varios tiles es un proceso que puede beneficiarse
¡muchas posibilidades aquí!
tal vez comienza con dibujar sólo cuando se presiona un botón. cambia el color y/o el "pincel" dependiendo del botón que se presiona.
tal vez comienza con dibujar solo cuando se presiona un botón. cambia el color y/o el "pincel" dependiendo del botón que se presiona.
puedes tener diferentes "modos" seleccionables: tal vez cambien el pincel que estás usando, la forma en que el pincel se comporta (por ejemplo, ¿en espejo, caleidoscopio?) y/o las formas que se dibujan.

View File

@ -160,7 +160,7 @@ usando esta estrategia, obtendríamos el siguiente bucle:
POP2 POP2 ( eliminar x y el límite )
```
no sólo es un código más corto, sino que también es más rápido porque realiza menos operaciones dentro del bucle.
no solo es un código más corto, sino que también es más rápido porque realiza menos operaciones dentro del bucle.
¡es bueno tenerlo en cuenta!
@ -832,7 +832,7 @@ hagamos que la subrutina reciba el color como argumento, para poder borrar la pe
RTN
```
para dibujarla, sólo tendríamos que hacer:
para dibujarla, solo tendríamos que hacer:
```
( dibujar pelota )
@ -1024,7 +1024,7 @@ hemos definido la forma general de actualizar la posición de la pelota dada su
primero, empecemos con las paredes en la parte superior e inferior de la pantalla; recordando que hay un margen (MARGEN-PARED) entre el borde real de la pantalla y las paredes.
para realizar estas detecciones de colisión, tendríamos que comprobar sólo la coordenada `y` de la pelota.
para realizar estas detecciones de colisión, tendríamos que comprobar solo la coordenada `y` de la pelota.
como siempre, hay muchas maneras de lograr esto. una podría ser:

View File

@ -74,7 +74,7 @@ además, en este ejemplo no nos preocupa realmente cuántos bytes se han leído
es importante recordar que, como siempre en este contexto, estamos tratando con bytes crudos.
¡no sólo podemos elegir tratar estos bytes como caracteres de texto, sino que también podemos elegir usarlos como sprites, coordenadas, dimensiones, colores, etc!
¡no solo podemos elegir tratar estos bytes como caracteres de texto, sino que también podemos elegir usarlos como sprites, coordenadas, dimensiones, colores, etc!
## escribir un archivo
@ -373,7 +373,7 @@ tri-pcm:
sierra-pcm:
=> ./img/screenshot_uxn-waveform_saw.png forma de onda de la muestra de sierra
de forma similar a como hemos tratado los sprites y de forma parecida al dispositivo de archivo comentado anteriormente, para fijar una muestra en el dispositivo de audio sólo tenemos que escribir su dirección y su longitud:
de forma similar a como hemos tratado los sprites y de forma parecida al dispositivo de archivo comentado anteriormente, para fijar una muestra en el dispositivo de audio solo tenemos que escribir su dirección y su longitud:
```
;sierra-pcm .Audio0/direc DEO2 ( establecer la dirección de la muestra )
@ -388,9 +388,9 @@ el byte tono hace que la muestra comience a reproducirse cada vez que le escribi
los primeros 7 bits (de derecha a izquierda) del byte corresponden a una nota midi, y por tanto, a la frecuencia a la que se reproducirá la muestra.
el octavo bit es una bandera: cuando es 0 la muestra se reproducirá en bucle y cuando es 1 la muestra se reproducirá sólo una vez.
el octavo bit es una bandera: cuando es 0 la muestra se reproducirá en bucle y cuando es 1 la muestra se reproducirá solo una vez.
normalmente querremos hacer un bucle de la muestra para generar un tono basado en ella. sólo cuando la muestra sea lo suficientemente larga tendrá sentido no hacer un bucle y reproducirla una vez.
normalmente querremos hacer un bucle de la muestra para generar un tono basado en ella. solo cuando la muestra sea lo suficientemente larga tendrá sentido no hacer un bucle y reproducirla una vez.
con respecto a los bits para la nota midi, es una buena idea tener una tabla midi alrededor para ver los valores hexadecimales correspondientes a las diferentes notas.
@ -485,11 +485,11 @@ ok, ¡ahora estamos listos para reproducir el sonido!
BRK
```
nota (!) que sólo se reproducirá el sonido una vez y lo hace cuando se inicia el programa.
nota (!) que solo se reproducirá el sonido una vez y lo hace cuando se inicia el programa.
### algunos experimentos sugeridos
te invito a que experimentes modificando los valores del ADSR: ¿cómo cambia el sonido cuando sólo hay uno de ellos? ¿o cuando todos son números pequeños o con diferentes combinaciones de duraciones?
te invito a que experimentes modificando los valores del ADSR: ¿cómo cambia el sonido cuando solo hay uno de ellos? ¿o cuando todos son números pequeños o con diferentes combinaciones de duraciones?
también, prueba a cambiar el byte tono: ¿corresponden con tus oídos los valores midi que esperas?